From ef11c608235fc0fc600c470f76fdfaa6ffe76c39 Mon Sep 17 00:00:00 2001 From: Vaibhav Chellani Date: Wed, 29 Apr 2020 17:33:46 +0530 Subject: [PATCH 1/2] added builder --- artifacts/BytesLib.json | 8 + artifacts/Context.json | 15 + artifacts/Deployer.json | 112 + artifacts/DepositManager.json | 389 + artifacts/ECVerify.json | 102 + artifacts/ERC20.json | 256 + artifacts/IERC20.json | 66 + artifacts/ITokenRegistry.json | 111 + artifacts/IncrementalTree.json | 155 + artifacts/Logger.json | 470 + artifacts/MerkleTreeUtils.json | 453 + artifacts/Migrations.json | 75 + artifacts/NameRegistry.json | 95 + artifacts/Ownable.json | 88 + artifacts/POB.json | 15 + artifacts/ParamManager.json | 414 + artifacts/Rollup.json | 975 + artifacts/RollupUtils.json | 441 + artifacts/SafeMath.json | 8 + artifacts/TestToken.json | 335 + artifacts/TokenRegistry.json | 177 + artifacts/Tree.json | 287 + artifacts/Types.json | 8 + buidler.config.js | 22 + cache/last-solc-config.json | 10 + cache/solc-input.json | 103 + cache/solc-output.json | 76810 +++++++++++++++++++++++++++++++ contracts/POB.sol | 9 + package-lock.json | 20116 +++++++- package.json | 7 + 30 files changed, 100719 insertions(+), 1413 deletions(-) create mode 100644 artifacts/BytesLib.json create mode 100644 artifacts/Context.json create mode 100644 artifacts/Deployer.json create mode 100644 artifacts/DepositManager.json create mode 100644 artifacts/ECVerify.json create mode 100644 artifacts/ERC20.json create mode 100644 artifacts/IERC20.json create mode 100644 artifacts/ITokenRegistry.json create mode 100644 artifacts/IncrementalTree.json create mode 100644 artifacts/Logger.json create mode 100644 artifacts/MerkleTreeUtils.json create mode 100644 artifacts/Migrations.json create mode 100644 artifacts/NameRegistry.json create mode 100644 artifacts/Ownable.json create mode 100644 artifacts/POB.json create mode 100644 artifacts/ParamManager.json create mode 100644 artifacts/Rollup.json create mode 100644 artifacts/RollupUtils.json create mode 100644 artifacts/SafeMath.json create mode 100644 artifacts/TestToken.json create mode 100644 artifacts/TokenRegistry.json create mode 100644 artifacts/Tree.json create mode 100644 artifacts/Types.json create mode 100644 buidler.config.js create mode 100644 cache/last-solc-config.json create mode 100644 cache/solc-input.json create mode 100644 cache/solc-output.json create mode 100644 contracts/POB.sol diff --git a/artifacts/BytesLib.json b/artifacts/BytesLib.json new file mode 100644 index 0000000..e2fd543 --- /dev/null +++ b/artifacts/BytesLib.json @@ -0,0 +1,8 @@ +{ + "contractName": "BytesLib", + "abi": [], + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098db943c66a75023881bb800557e11eb09e45e88b1bda0ae9c8c2ab2db56a5fd64736f6c634300050f0032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098db943c66a75023881bb800557e11eb09e45e88b1bda0ae9c8c2ab2db56a5fd64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/Context.json b/artifacts/Context.json new file mode 100644 index 0000000..7dc97c1 --- /dev/null +++ b/artifacts/Context.json @@ -0,0 +1,15 @@ +{ + "contractName": "Context", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/Deployer.json b/artifacts/Deployer.json new file mode 100644 index 0000000..dba8d8f --- /dev/null +++ b/artifacts/Deployer.json @@ -0,0 +1,112 @@ +{ + "contractName": "Deployer", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "nameregistry", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "nameRegistryAddr", + "type": "address" + } + ], + "name": "deployContracts", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162005c2838038062005c28833981810160405260208110156200003757600080fd5b810190808051906020019092919050505062000059816200006160201b60201c565b505062000673565b6000808290506000604051620000779062000649565b604051809103906000f08015801562000094573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f857600080fd5b505af41580156200010d573d6000803e3d6000fd5b505050506040513d60208110156200012457600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620001a057600080fd5b505af1158015620001b5573d6000803e3d6000fd5b505050506040513d6020811015620001cc57600080fd5b810190808051906020019092919050505062000234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062005c046024913960400191505060405180910390fd5b6000604051620002449062000657565b604051809103906000f08015801562000261573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c557600080fd5b505af4158015620002da573d6000803e3d6000fd5b505050506040513d6020811015620002f157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200036d57600080fd5b505af115801562000382573d6000803e3d6000fd5b505050506040513d60208110156200039957600080fd5b81019080805190602001909291905050506200041d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616e6e6f74207265676973746572206c6f676765720000000000000000000081525060200191505060405180910390fd5b6000856040516200042e9062000665565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000481573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e557600080fd5b505af4158015620004fa573d6000803e3d6000fd5b505050506040513d60208110156200051157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200058d57600080fd5b505af1158015620005a2573d6000803e3d6000fd5b505050506040513d6020811015620005b957600080fd5b81019080805190602001909291905050506200063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420726567697374657220746f6b656e207265676973747279000081525060200191505060405180910390fd5b85945050505050919050565b61146b80620034c283390190565b61087c806200492d83390190565b610a5b80620051a983390190565b612e3f80620006836000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b5d80b9414610030575b600080fd5b6100726004803603602081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008082905060006040516100c89061067d565b604051809103906000f0801580156100e4573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156101ec57600080fd5b505af1158015610200573d6000803e3d6000fd5b505050506040513d602081101561021657600080fd5b810190808051906020019092919050505061027c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612de76024913960400191505060405180910390fd5b600060405161028a9061068a565b604051809103906000f0801580156102a6573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030957600080fd5b505af415801561031d573d6000803e3d6000fd5b505050506040513d602081101561033357600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b810190808051906020019092919050505061045b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616e6e6f74207265676973746572206c6f676765720000000000000000000081525060200191505060405180910390fd5b60008560405161046a90610697565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156104bc573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051f57600080fd5b505af4158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b8101908080519060200190929190505050610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420726567697374657220746f6b656e207265676973747279000081525060200191505060405180910390fd5b85945050505050919050565b61146b806106a583390190565b61087c80611b1083390190565b610a5b8061238c8339019056fe60806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565a265627a7a7231582042d855c280d57aa151771622eba292f22dbd41ac9cffbdfd6c159e67cef798d464736f6c634300050f003260806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b5d80b9414610030575b600080fd5b6100726004803603602081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008082905060006040516100c89061067d565b604051809103906000f0801580156100e4573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156101ec57600080fd5b505af1158015610200573d6000803e3d6000fd5b505050506040513d602081101561021657600080fd5b810190808051906020019092919050505061027c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612de76024913960400191505060405180910390fd5b600060405161028a9061068a565b604051809103906000f0801580156102a6573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030957600080fd5b505af415801561031d573d6000803e3d6000fd5b505050506040513d602081101561033357600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b810190808051906020019092919050505061045b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616e6e6f74207265676973746572206c6f676765720000000000000000000081525060200191505060405180910390fd5b60008560405161046a90610697565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156104bc573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051f57600080fd5b505af4158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b8101908080519060200190929190505050610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420726567697374657220746f6b656e207265676973747279000081525060200191505060405180910390fd5b85945050505050919050565b61146b806106a583390190565b61087c80611b1083390190565b610a5b8061238c8339019056fe60806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565a265627a7a7231582042d855c280d57aa151771622eba292f22dbd41ac9cffbdfd6c159e67cef798d464736f6c634300050f0032", + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 181 + }, + { + "length": 20, + "start": 642 + }, + { + "length": 20, + "start": 1186 + }, + { + "length": 20, + "start": 1928 + }, + { + "length": 20, + "start": 2378 + }, + { + "length": 20, + "start": 2912 + }, + { + "length": 20, + "start": 3395 + }, + { + "length": 20, + "start": 11028 + }, + { + "length": 20, + "start": 13533 + }, + { + "length": 20, + "start": 21166 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 261 + }, + { + "length": 20, + "start": 711 + }, + { + "length": 20, + "start": 1245 + }, + { + "length": 20, + "start": 1728 + }, + { + "length": 20, + "start": 9361 + } + ] + } + } +} diff --git a/artifacts/DepositManager.json b/artifacts/DepositManager.json new file mode 100644 index 0000000..3fd6968 --- /dev/null +++ b/artifacts/DepositManager.json @@ -0,0 +1,389 @@ +{ + "contractName": "DepositManager", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "Coordinator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accountsTree", + "outputs": [ + { + "internalType": "contract IncrementalTree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balancesTree", + "outputs": [ + { + "internalType": "contract Tree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_pubkey", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_pubkey", + "type": "bytes" + } + ], + "name": "depositFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "depositSubtreeHeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_subTreeDepth", + "type": "uint256" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof", + "name": "_zero_account_mp", + "type": "tuple" + } + ], + "name": "finaliseDeposits", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "logger", + "outputs": [ + { + "internalType": "contract Logger", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "merkleUtils", + "outputs": [ + { + "internalType": "contract MerkleTreeUtils", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pendingDeposits", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "queueNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenContract", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenRegistry", + "outputs": [ + { + "internalType": "contract ITokenRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002ce538038062002ce58339818101604052620000379190810190620007dc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000fb57600080fd5b505af415801562000110573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000136919081019062000808565b6040518263ffffffff1660e01b815260040162000154919062000845565b60206040518083038186803b1580156200016d57600080fd5b505afa15801562000182573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001a89190810190620007dc565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026a57600080fd5b505af41580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002a5919081019062000808565b6040518263ffffffff1660e01b8152600401620002c3919062000845565b60206040518083038186803b158015620002dc57600080fd5b505afa158015620002f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003179190810190620007dc565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003da57600080fd5b505af4158015620003ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000415919081019062000808565b6040518263ffffffff1660e01b815260040162000433919062000845565b60206040518083038186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004879190810190620007dc565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63ca4a98f26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054a57600080fd5b505af41580156200055f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000585919081019062000808565b6040518263ffffffff1660e01b8152600401620005a3919062000845565b60206040518083038186803b158015620005bc57600080fd5b505afa158015620005d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620005f79190810190620007dc565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63626835f56040518163ffffffff1660e01b815260040160206040518083038186803b158015620006ba57600080fd5b505af4158015620006cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620006f5919081019062000808565b6040518263ffffffff1660e01b815260040162000713919062000845565b60206040518083038186803b1580156200072c57600080fd5b505afa15801562000741573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620007679190810190620007dc565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620008d4565b600081519050620007bf81620008a0565b92915050565b600081519050620007d681620008ba565b92915050565b600060208284031215620007ef57600080fd5b6000620007ff84828501620007ae565b91505092915050565b6000602082840312156200081b57600080fd5b60006200082b84828501620007c5565b91505092915050565b6200083f8162000876565b82525050565b60006020820190506200085c600083018462000834565b92915050565b60006200086f8262000880565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620008ab8162000862565b8114620008b757600080fd5b50565b620008c58162000876565b8114620008d157600080fd5b50565b61240180620008e46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d23c4c71161008c578063ae2926d411610066578063ae2926d41461023b578063b2692d7714610259578063f24ccbfe14610277578063f35213fc14610295576100ea565b80639d23c4c7146101d1578063a7932794146101ef578063aa0b7db71461021f576100ea565b80632fa6779a116100c85780632fa6779a1461015957806347b0f08e146101775780634eb7221a1461019557806355a373d6146101b3576100ea565b80631450e6ec146100ef5780631f8eb3e81461011f5780632882dd981461013b575b600080fd5b610109600480360361010491908101906117b3565b6102b3565b6040516101169190611cd8565b60405180910390f35b61013960048036036101349190810190611694565b61072b565b005b6101436110b6565b6040516101509190611fd0565b60405180910390f35b6101616110bc565b60405161016e9190611fd0565b60405180910390f35b61017f6110c2565b60405161018c9190611ea2565b60405180910390f35b61019d6110e7565b6040516101aa9190611ebd565b60405180910390f35b6101bb61110d565b6040516101c89190611e36565b60405180910390f35b6101d9611133565b6040516101e69190611e51565b60405180910390f35b61020960048036036102049190810190611761565b611159565b6040516102169190611cd8565b60405180910390f35b61023960048036036102349190810190611807565b61117a565b005b6102436111a8565b6040516102509190611e6c565b60405180910390f35b6102616111ce565b60405161026e9190611ed8565b60405180910390f35b61027f6111f4565b60405161028c9190611e87565b60405180910390f35b61029d61121a565b6040516102aa9190611c86565b60405180910390f35b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0856040518263ffffffff1660e01b81526004016103109190611fd0565b60206040518083038186803b15801561032857600080fd5b505afa15801561033c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103609190810190611738565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8b557b7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043f9190810190611738565b8386600001516000015187602001516040518563ffffffff1660e01b815260040161046d9493929190611d53565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104bd919081019061170f565b6104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390611f13565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c0de520600360008154811061054857fe5b906000526020600020015485600001516000015186602001516040518463ffffffff1660e01b815260040161057f93929190611d9f565b600060405180830381600087803b15801561059957600080fd5b505af11580156105ad573d6000803e3d6000fd5b505050506105bb6000611240565b60055460020a600454036004819055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061066d9190810190611738565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b94be66860036000815481106106bb57fe5b9060005260206000200154866000015160000151846040518463ffffffff1660e01b81526004016106ee93929190611ddd565b600060405180830381600087803b15801561070857600080fd5b505af115801561071c573d6000803e3d6000fd5b50505050809250505092915050565b60001515600a60149054906101000a900460ff1615151461074857fe5b6000831161078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290611f33565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e826040518263ffffffff1660e01b81526004016107c29190611e14565b60206040518083038186803b1580156107da57600080fd5b505af41580156107ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610812919081019061166b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087690611ef3565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea846040518263ffffffff1660e01b81526004016108dc9190611fd0565b60206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092c919081019061166b565b905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016109ce93929190611ca1565b602060405180830381600087803b1580156109e857600080fd5b505af11580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a20919081019061170f565b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690611f73565b60405180910390fd5b610a6761133c565b8281600001819052506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c891b0873__$a6b8846b3184b62d6aec39d1f36e30dab3$__6326b3285d856040518263ffffffff1660e01b8152600401610ae79190611f93565b60206040518083038186803b158015610aff57600080fd5b505af4158015610b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b379190810190611738565b6040518263ffffffff1660e01b8152600401610b539190611cd8565b602060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba5919081019061178a565b9050610baf61134f565b8681604001818152505085816020018181525050600081606001818152505081816000018181525050600073__$a6b8846b3184b62d6aec39d1f36e30dab3$__630d68f924836040518263ffffffff1660e01b8152600401610c119190611fb5565b60206040518083038186803b158015610c2957600080fd5b505af4158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c619190810190611738565b90506003819080600181540180825580915050906001820390600052602060002001600090919290919091505550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356901d5a848b8b8b868c6040518763ffffffff1660e01b8152600401610cf496959493929190611feb565b600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506004600081548092919060010191905055506000809050600060045490505b600060028281610d5157fe5b061415610ff35760606002604051908082528060200260200182016040528015610d8a5781602001602082028038833980820191505090505b509050600360026003805490500381548110610da257fe5b906000526020600020015481600081518110610dba57fe5b602002602001018181525050600360016003805490500381548110610ddb57fe5b906000526020600020015481600181518110610df357fe5b6020026020010181815250506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb82600081518110610e4957fe5b602002602001015183600181518110610e5e57fe5b60200260200101516040518363ffffffff1660e01b8152600401610e83929190611cf3565b60206040518083038186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed39190810190611738565b600360026003805490500381548110610ee857fe5b9060005260206000200181905550610f07600160038054905003611240565b60028281610f1157fe5b0491508280600101935050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbd63fb782600081518110610f6757fe5b602002602001015183600181518110610f7c57fe5b60200260200101516003600081548110610f9257fe5b90600052602060002001546040518463ffffffff1660e01b8152600401610fbb93929190611d1c565b600060405180830381600087803b158015610fd557600080fd5b505af1158015610fe9573d6000803e3d6000fd5b5050505050610d45565b60055482111561100557816005819055505b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63554056e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561104957600080fd5b505af415801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611081919081019061186e565b60ff1660055414156110a9576001600a60146101000a81548160ff0219169083151502179055505b5050505050505050505050565b60055481565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061116657fe5b906000526020600020016000915090505481565b60001515600a60149054906101000a900460ff1615151461119757fe5b6111a33384848461072b565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003805490508110611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90611f53565b60405180910390fd5b60008114156112ea5760008090505b6001600380549050038110156112e457600381815481106112b357fe5b906000526020600020016000905560038054809190600190036112d69190611377565b508080600101915050611296565b50611339565b6001600380549050038114156113385760036001600380549050038154811061130f57fe5b906000526020600020016000905560038054809190600190036113329190611377565b50611339565b5b50565b6040518060200160405280606081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b81548183558181111561139e5781836000526020600020918201910161139d91906113a3565b5b505050565b6113c591905b808211156113c15760008160009055506001016113a9565b5090565b90565b6000813590506113d78161234b565b92915050565b6000815190506113ec8161234b565b92915050565b600082601f83011261140357600080fd5b813561141661141182612080565b612053565b9150818183526020840193506020810190508385602084028201111561143b57600080fd5b60005b8381101561146b5781611451888261148a565b84526020840193506020830192505060018101905061143e565b5050505092915050565b60008151905061148481612362565b92915050565b60008135905061149981612379565b92915050565b6000815190506114ae81612379565b92915050565b600082601f8301126114c557600080fd5b81356114d86114d3826120a8565b612053565b915080825260208301602083018583830111156114f457600080fd5b6114ff8382846122f8565b50505092915050565b600060a0828403121561151a57600080fd5b6115246040612053565b905060006115348482850161162c565b6000830152506020611548848285016115b8565b60208301525092915050565b600060c0828403121561156657600080fd5b6115706040612053565b9050600061158084828501611508565b60008301525060a082013567ffffffffffffffff8111156115a057600080fd5b6115ac848285016113f2565b60208301525092915050565b6000608082840312156115ca57600080fd5b6115d46080612053565b905060006115e48482850161162c565b60008301525060206115f88482850161162c565b602083015250604061160c8482850161162c565b60408301525060606116208482850161162c565b60608301525092915050565b60008135905061163b81612390565b92915050565b60008151905061165081612390565b92915050565b600081519050611665816123a7565b92915050565b60006020828403121561167d57600080fd5b600061168b848285016113dd565b91505092915050565b600080600080608085870312156116aa57600080fd5b60006116b8878288016113c8565b94505060206116c98782880161162c565b93505060406116da8782880161162c565b925050606085013567ffffffffffffffff8111156116f757600080fd5b611703878288016114b4565b91505092959194509250565b60006020828403121561172157600080fd5b600061172f84828501611475565b91505092915050565b60006020828403121561174a57600080fd5b60006117588482850161149f565b91505092915050565b60006020828403121561177357600080fd5b60006117818482850161162c565b91505092915050565b60006020828403121561179c57600080fd5b60006117aa84828501611641565b91505092915050565b600080604083850312156117c657600080fd5b60006117d48582860161162c565b925050602083013567ffffffffffffffff8111156117f157600080fd5b6117fd85828601611554565b9150509250929050565b60008060006060848603121561181c57600080fd5b600061182a8682870161162c565b935050602061183b8682870161162c565b925050604084013567ffffffffffffffff81111561185857600080fd5b611864868287016114b4565b9150509250925092565b60006020828403121561188057600080fd5b600061188e84828501611656565b91505092915050565b60006118a3838361192b565b60208301905092915050565b6118b8816121c6565b82525050565b6118c781612167565b82525050565b60006118d8826120e4565b6118e28185612112565b93506118ed836120d4565b8060005b8381101561191e5781516119058882611897565b975061191083612105565b9250506001810190506118f1565b5085935050505092915050565b61193481612185565b82525050565b61194381612185565b82525050565b6000611954826120fa565b61195e8185612123565b935061196e818560208601612307565b6119778161233a565b840191505092915050565b600061198d826120fa565b6119978185612134565b93506119a7818560208601612307565b6119b08161233a565b840191505092915050565b60006119c6826120ef565b6119d08185612145565b93506119e0818560208601612307565b6119e98161233a565b840191505092915050565b6119fd816121d8565b82525050565b611a0c816121fc565b82525050565b611a1b81612220565b82525050565b611a2a81612244565b82525050565b611a3981612268565b82525050565b611a488161228c565b82525050565b611a57816122b0565b82525050565b6000611a6a602283612156565b91507f7075626c6963206b657920616e64206164647265737320646f6e2774206d617460008301527f63680000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ad0600d83612156565b91507f70726f6f6620696e76616c6964000000000000000000000000000000000000006000830152602082019050919050565b6000611b10602483612156565b91507f746f6b656e206465706f736974206d757374206265206772656174657220746860008301527f616e2030000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b76601c83612156565b91507f617272617920696e646578206973206f7574206f6620626f756e6473000000006000830152602082019050919050565b6000611bb6601b83612156565b91507f746f6b656e207472616e73666572206e6f7420617070726f76656400000000006000830152602082019050919050565b60006020830160008301518482036000860152611c0682826119bb565b9150508091505092915050565b608082016000820151611c296000850182611c77565b506020820151611c3c6020850182611c77565b506040820151611c4f6040850182611c77565b506060820151611c626060850182611c77565b50505050565b611c71816121af565b82525050565b611c80816121af565b82525050565b6000602082019050611c9b60008301846118be565b92915050565b6000606082019050611cb660008301866118af565b611cc360208301856118be565b611cd06040830184611c68565b949350505050565b6000602082019050611ced600083018461193a565b92915050565b6000604082019050611d08600083018561193a565b611d15602083018461193a565b9392505050565b6000606082019050611d31600083018661193a565b611d3e602083018561193a565b611d4b604083018461193a565b949350505050565b6000608082019050611d68600083018761193a565b611d75602083018661193a565b611d826040830185611c68565b8181036060830152611d9481846118cd565b905095945050505050565b6000606082019050611db4600083018661193a565b611dc16020830185611c68565b8181036040830152611dd381846118cd565b9050949350505050565b6000606082019050611df2600083018661193a565b611dff6020830185611c68565b611e0c604083018461193a565b949350505050565b60006020820190508181036000830152611e2e8184611982565b905092915050565b6000602082019050611e4b60008301846119f4565b92915050565b6000602082019050611e666000830184611a03565b92915050565b6000602082019050611e816000830184611a12565b92915050565b6000602082019050611e9c6000830184611a21565b92915050565b6000602082019050611eb76000830184611a30565b92915050565b6000602082019050611ed26000830184611a3f565b92915050565b6000602082019050611eed6000830184611a4e565b92915050565b60006020820190508181036000830152611f0c81611a5d565b9050919050565b60006020820190508181036000830152611f2c81611ac3565b9050919050565b60006020820190508181036000830152611f4c81611b03565b9050919050565b60006020820190508181036000830152611f6c81611b69565b9050919050565b60006020820190508181036000830152611f8c81611ba9565b9050919050565b60006020820190508181036000830152611fad8184611be9565b905092915050565b6000608082019050611fca6000830184611c13565b92915050565b6000602082019050611fe56000830184611c68565b92915050565b600060c0820190506120006000830189611c68565b61200d60208301886118be565b61201a6040830187611c68565b6120276060830186611c68565b612034608083018561193a565b81810360a08301526120468184611949565b9050979650505050505050565b6000604051905081810181811067ffffffffffffffff8211171561207657600080fd5b8060405250919050565b600067ffffffffffffffff82111561209757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120bf57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006121728261218f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121d1826122d4565b9050919050565b60006121e3826121ea565b9050919050565b60006121f58261218f565b9050919050565b60006122078261220e565b9050919050565b60006122198261218f565b9050919050565b600061222b82612232565b9050919050565b600061223d8261218f565b9050919050565b600061224f82612256565b9050919050565b60006122618261218f565b9050919050565b60006122738261227a565b9050919050565b60006122858261218f565b9050919050565b60006122978261229e565b9050919050565b60006122a98261218f565b9050919050565b60006122bb826122c2565b9050919050565b60006122cd8261218f565b9050919050565b60006122df826122e6565b9050919050565b60006122f18261218f565b9050919050565b82818337600083830152505050565b60005b8381101561232557808201518184015260208101905061230a565b83811115612334576000848401525b50505050565b6000601f19601f8301169050919050565b61235481612167565b811461235f57600080fd5b50565b61236b81612179565b811461237657600080fd5b50565b61238281612185565b811461238d57600080fd5b50565b612399816121af565b81146123a457600080fd5b50565b6123b0816121b9565b81146123bb57600080fd5b5056fea365627a7a723158204d9bb45771d4c1f2b21645aa21603bc672bb8648120a0273cd8e0a2cf23a08536c6578706572696d656e74616cf564736f6c634300050f0040", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d23c4c71161008c578063ae2926d411610066578063ae2926d41461023b578063b2692d7714610259578063f24ccbfe14610277578063f35213fc14610295576100ea565b80639d23c4c7146101d1578063a7932794146101ef578063aa0b7db71461021f576100ea565b80632fa6779a116100c85780632fa6779a1461015957806347b0f08e146101775780634eb7221a1461019557806355a373d6146101b3576100ea565b80631450e6ec146100ef5780631f8eb3e81461011f5780632882dd981461013b575b600080fd5b610109600480360361010491908101906117b3565b6102b3565b6040516101169190611cd8565b60405180910390f35b61013960048036036101349190810190611694565b61072b565b005b6101436110b6565b6040516101509190611fd0565b60405180910390f35b6101616110bc565b60405161016e9190611fd0565b60405180910390f35b61017f6110c2565b60405161018c9190611ea2565b60405180910390f35b61019d6110e7565b6040516101aa9190611ebd565b60405180910390f35b6101bb61110d565b6040516101c89190611e36565b60405180910390f35b6101d9611133565b6040516101e69190611e51565b60405180910390f35b61020960048036036102049190810190611761565b611159565b6040516102169190611cd8565b60405180910390f35b61023960048036036102349190810190611807565b61117a565b005b6102436111a8565b6040516102509190611e6c565b60405180910390f35b6102616111ce565b60405161026e9190611ed8565b60405180910390f35b61027f6111f4565b60405161028c9190611e87565b60405180910390f35b61029d61121a565b6040516102aa9190611c86565b60405180910390f35b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0856040518263ffffffff1660e01b81526004016103109190611fd0565b60206040518083038186803b15801561032857600080fd5b505afa15801561033c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103609190810190611738565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8b557b7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043f9190810190611738565b8386600001516000015187602001516040518563ffffffff1660e01b815260040161046d9493929190611d53565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104bd919081019061170f565b6104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390611f13565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c0de520600360008154811061054857fe5b906000526020600020015485600001516000015186602001516040518463ffffffff1660e01b815260040161057f93929190611d9f565b600060405180830381600087803b15801561059957600080fd5b505af11580156105ad573d6000803e3d6000fd5b505050506105bb6000611240565b60055460020a600454036004819055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061066d9190810190611738565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b94be66860036000815481106106bb57fe5b9060005260206000200154866000015160000151846040518463ffffffff1660e01b81526004016106ee93929190611ddd565b600060405180830381600087803b15801561070857600080fd5b505af115801561071c573d6000803e3d6000fd5b50505050809250505092915050565b60001515600a60149054906101000a900460ff1615151461074857fe5b6000831161078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290611f33565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e826040518263ffffffff1660e01b81526004016107c29190611e14565b60206040518083038186803b1580156107da57600080fd5b505af41580156107ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610812919081019061166b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087690611ef3565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea846040518263ffffffff1660e01b81526004016108dc9190611fd0565b60206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092c919081019061166b565b905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016109ce93929190611ca1565b602060405180830381600087803b1580156109e857600080fd5b505af11580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a20919081019061170f565b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690611f73565b60405180910390fd5b610a6761133c565b8281600001819052506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c891b0873__$a6b8846b3184b62d6aec39d1f36e30dab3$__6326b3285d856040518263ffffffff1660e01b8152600401610ae79190611f93565b60206040518083038186803b158015610aff57600080fd5b505af4158015610b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b379190810190611738565b6040518263ffffffff1660e01b8152600401610b539190611cd8565b602060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba5919081019061178a565b9050610baf61134f565b8681604001818152505085816020018181525050600081606001818152505081816000018181525050600073__$a6b8846b3184b62d6aec39d1f36e30dab3$__630d68f924836040518263ffffffff1660e01b8152600401610c119190611fb5565b60206040518083038186803b158015610c2957600080fd5b505af4158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c619190810190611738565b90506003819080600181540180825580915050906001820390600052602060002001600090919290919091505550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356901d5a848b8b8b868c6040518763ffffffff1660e01b8152600401610cf496959493929190611feb565b600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506004600081548092919060010191905055506000809050600060045490505b600060028281610d5157fe5b061415610ff35760606002604051908082528060200260200182016040528015610d8a5781602001602082028038833980820191505090505b509050600360026003805490500381548110610da257fe5b906000526020600020015481600081518110610dba57fe5b602002602001018181525050600360016003805490500381548110610ddb57fe5b906000526020600020015481600181518110610df357fe5b6020026020010181815250506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb82600081518110610e4957fe5b602002602001015183600181518110610e5e57fe5b60200260200101516040518363ffffffff1660e01b8152600401610e83929190611cf3565b60206040518083038186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed39190810190611738565b600360026003805490500381548110610ee857fe5b9060005260206000200181905550610f07600160038054905003611240565b60028281610f1157fe5b0491508280600101935050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbd63fb782600081518110610f6757fe5b602002602001015183600181518110610f7c57fe5b60200260200101516003600081548110610f9257fe5b90600052602060002001546040518463ffffffff1660e01b8152600401610fbb93929190611d1c565b600060405180830381600087803b158015610fd557600080fd5b505af1158015610fe9573d6000803e3d6000fd5b5050505050610d45565b60055482111561100557816005819055505b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63554056e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561104957600080fd5b505af415801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611081919081019061186e565b60ff1660055414156110a9576001600a60146101000a81548160ff0219169083151502179055505b5050505050505050505050565b60055481565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061116657fe5b906000526020600020016000915090505481565b60001515600a60149054906101000a900460ff1615151461119757fe5b6111a33384848461072b565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003805490508110611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90611f53565b60405180910390fd5b60008114156112ea5760008090505b6001600380549050038110156112e457600381815481106112b357fe5b906000526020600020016000905560038054809190600190036112d69190611377565b508080600101915050611296565b50611339565b6001600380549050038114156113385760036001600380549050038154811061130f57fe5b906000526020600020016000905560038054809190600190036113329190611377565b50611339565b5b50565b6040518060200160405280606081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b81548183558181111561139e5781836000526020600020918201910161139d91906113a3565b5b505050565b6113c591905b808211156113c15760008160009055506001016113a9565b5090565b90565b6000813590506113d78161234b565b92915050565b6000815190506113ec8161234b565b92915050565b600082601f83011261140357600080fd5b813561141661141182612080565b612053565b9150818183526020840193506020810190508385602084028201111561143b57600080fd5b60005b8381101561146b5781611451888261148a565b84526020840193506020830192505060018101905061143e565b5050505092915050565b60008151905061148481612362565b92915050565b60008135905061149981612379565b92915050565b6000815190506114ae81612379565b92915050565b600082601f8301126114c557600080fd5b81356114d86114d3826120a8565b612053565b915080825260208301602083018583830111156114f457600080fd5b6114ff8382846122f8565b50505092915050565b600060a0828403121561151a57600080fd5b6115246040612053565b905060006115348482850161162c565b6000830152506020611548848285016115b8565b60208301525092915050565b600060c0828403121561156657600080fd5b6115706040612053565b9050600061158084828501611508565b60008301525060a082013567ffffffffffffffff8111156115a057600080fd5b6115ac848285016113f2565b60208301525092915050565b6000608082840312156115ca57600080fd5b6115d46080612053565b905060006115e48482850161162c565b60008301525060206115f88482850161162c565b602083015250604061160c8482850161162c565b60408301525060606116208482850161162c565b60608301525092915050565b60008135905061163b81612390565b92915050565b60008151905061165081612390565b92915050565b600081519050611665816123a7565b92915050565b60006020828403121561167d57600080fd5b600061168b848285016113dd565b91505092915050565b600080600080608085870312156116aa57600080fd5b60006116b8878288016113c8565b94505060206116c98782880161162c565b93505060406116da8782880161162c565b925050606085013567ffffffffffffffff8111156116f757600080fd5b611703878288016114b4565b91505092959194509250565b60006020828403121561172157600080fd5b600061172f84828501611475565b91505092915050565b60006020828403121561174a57600080fd5b60006117588482850161149f565b91505092915050565b60006020828403121561177357600080fd5b60006117818482850161162c565b91505092915050565b60006020828403121561179c57600080fd5b60006117aa84828501611641565b91505092915050565b600080604083850312156117c657600080fd5b60006117d48582860161162c565b925050602083013567ffffffffffffffff8111156117f157600080fd5b6117fd85828601611554565b9150509250929050565b60008060006060848603121561181c57600080fd5b600061182a8682870161162c565b935050602061183b8682870161162c565b925050604084013567ffffffffffffffff81111561185857600080fd5b611864868287016114b4565b9150509250925092565b60006020828403121561188057600080fd5b600061188e84828501611656565b91505092915050565b60006118a3838361192b565b60208301905092915050565b6118b8816121c6565b82525050565b6118c781612167565b82525050565b60006118d8826120e4565b6118e28185612112565b93506118ed836120d4565b8060005b8381101561191e5781516119058882611897565b975061191083612105565b9250506001810190506118f1565b5085935050505092915050565b61193481612185565b82525050565b61194381612185565b82525050565b6000611954826120fa565b61195e8185612123565b935061196e818560208601612307565b6119778161233a565b840191505092915050565b600061198d826120fa565b6119978185612134565b93506119a7818560208601612307565b6119b08161233a565b840191505092915050565b60006119c6826120ef565b6119d08185612145565b93506119e0818560208601612307565b6119e98161233a565b840191505092915050565b6119fd816121d8565b82525050565b611a0c816121fc565b82525050565b611a1b81612220565b82525050565b611a2a81612244565b82525050565b611a3981612268565b82525050565b611a488161228c565b82525050565b611a57816122b0565b82525050565b6000611a6a602283612156565b91507f7075626c6963206b657920616e64206164647265737320646f6e2774206d617460008301527f63680000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ad0600d83612156565b91507f70726f6f6620696e76616c6964000000000000000000000000000000000000006000830152602082019050919050565b6000611b10602483612156565b91507f746f6b656e206465706f736974206d757374206265206772656174657220746860008301527f616e2030000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b76601c83612156565b91507f617272617920696e646578206973206f7574206f6620626f756e6473000000006000830152602082019050919050565b6000611bb6601b83612156565b91507f746f6b656e207472616e73666572206e6f7420617070726f76656400000000006000830152602082019050919050565b60006020830160008301518482036000860152611c0682826119bb565b9150508091505092915050565b608082016000820151611c296000850182611c77565b506020820151611c3c6020850182611c77565b506040820151611c4f6040850182611c77565b506060820151611c626060850182611c77565b50505050565b611c71816121af565b82525050565b611c80816121af565b82525050565b6000602082019050611c9b60008301846118be565b92915050565b6000606082019050611cb660008301866118af565b611cc360208301856118be565b611cd06040830184611c68565b949350505050565b6000602082019050611ced600083018461193a565b92915050565b6000604082019050611d08600083018561193a565b611d15602083018461193a565b9392505050565b6000606082019050611d31600083018661193a565b611d3e602083018561193a565b611d4b604083018461193a565b949350505050565b6000608082019050611d68600083018761193a565b611d75602083018661193a565b611d826040830185611c68565b8181036060830152611d9481846118cd565b905095945050505050565b6000606082019050611db4600083018661193a565b611dc16020830185611c68565b8181036040830152611dd381846118cd565b9050949350505050565b6000606082019050611df2600083018661193a565b611dff6020830185611c68565b611e0c604083018461193a565b949350505050565b60006020820190508181036000830152611e2e8184611982565b905092915050565b6000602082019050611e4b60008301846119f4565b92915050565b6000602082019050611e666000830184611a03565b92915050565b6000602082019050611e816000830184611a12565b92915050565b6000602082019050611e9c6000830184611a21565b92915050565b6000602082019050611eb76000830184611a30565b92915050565b6000602082019050611ed26000830184611a3f565b92915050565b6000602082019050611eed6000830184611a4e565b92915050565b60006020820190508181036000830152611f0c81611a5d565b9050919050565b60006020820190508181036000830152611f2c81611ac3565b9050919050565b60006020820190508181036000830152611f4c81611b03565b9050919050565b60006020820190508181036000830152611f6c81611b69565b9050919050565b60006020820190508181036000830152611f8c81611ba9565b9050919050565b60006020820190508181036000830152611fad8184611be9565b905092915050565b6000608082019050611fca6000830184611c13565b92915050565b6000602082019050611fe56000830184611c68565b92915050565b600060c0820190506120006000830189611c68565b61200d60208301886118be565b61201a6040830187611c68565b6120276060830186611c68565b612034608083018561193a565b81810360a08301526120468184611949565b9050979650505050505050565b6000604051905081810181811067ffffffffffffffff8211171561207657600080fd5b8060405250919050565b600067ffffffffffffffff82111561209757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120bf57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006121728261218f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121d1826122d4565b9050919050565b60006121e3826121ea565b9050919050565b60006121f58261218f565b9050919050565b60006122078261220e565b9050919050565b60006122198261218f565b9050919050565b600061222b82612232565b9050919050565b600061223d8261218f565b9050919050565b600061224f82612256565b9050919050565b60006122618261218f565b9050919050565b60006122738261227a565b9050919050565b60006122858261218f565b9050919050565b60006122978261229e565b9050919050565b60006122a98261218f565b9050919050565b60006122bb826122c2565b9050919050565b60006122cd8261218f565b9050919050565b60006122df826122e6565b9050919050565b60006122f18261218f565b9050919050565b82818337600083830152505050565b60005b8381101561232557808201518184015260208101905061230a565b83811115612334576000848401525b50505050565b6000601f19601f8301169050919050565b61235481612167565b811461235f57600080fd5b50565b61236b81612179565b811461237657600080fd5b50565b61238281612185565b811461238d57600080fd5b50565b612399816121af565b81146123a457600080fd5b50565b6123b0816121b9565b81146123bb57600080fd5b5056fea365627a7a723158204d9bb45771d4c1f2b21645aa21603bc672bb8648120a0273cd8e0a2cf23a08536c6578706572696d656e74616cf564736f6c634300050f0040", + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 184 + }, + { + "length": 20, + "start": 551 + }, + { + "length": 20, + "start": 919 + }, + { + "length": 20, + "start": 1287 + }, + { + "length": 20, + "start": 1655 + }, + { + "length": 20, + "start": 6379 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 4209 + }, + { + "length": 20, + "start": 5014 + }, + { + "length": 20, + "start": 5312 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 4103 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 1933 + }, + { + "length": 20, + "start": 2738 + }, + { + "length": 20, + "start": 3036 + } + ] + } + } +} diff --git a/artifacts/ECVerify.json b/artifacts/ECVerify.json new file mode 100644 index 0000000..451d5dc --- /dev/null +++ b/artifacts/ECVerify.json @@ -0,0 +1,102 @@ +{ + "contractName": "ECVerify", + "abi": [ + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sig", + "type": "bytes" + } + ], + "name": "ecrecovery", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ecrecovery", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sig", + "type": "bytes" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "ecverify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x61052d610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c806339cdde321461005057806377d32e941461014d57806398ea1c5114610252575b600080fd5b6101336004803603606081101561006657600080fd5b81019080803590602001909291908035906020019064010000000081111561008d57600080fd5b82018360208201111561009f57600080fd5b803590602001918460018302840111640100000000831117156100c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e1565b604051808215151515815260200191505060405180910390f35b6102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029f6004803603608081101561026857600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610446565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102ed8484610324565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490509392505050565b600080600080604185511461033f5760009350505050610440565b602085015192506040850151915060ff6041860151169050601b8160ff16101561036a57601b810190505b601b8160ff16141580156103825750601c8160ff1614155b156103935760009350505050610440565b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156103f2573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561043857600080fd5b809450505050505b92915050565b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156104a6573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104ec57600080fd5b8091505094935050505056fea265627a7a72315820bee3e1ebc2a54dd34b2fb69e032ef6fde6996ed5378f09b9d6fdc6c72250439d64736f6c634300050f0032", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c806339cdde321461005057806377d32e941461014d57806398ea1c5114610252575b600080fd5b6101336004803603606081101561006657600080fd5b81019080803590602001909291908035906020019064010000000081111561008d57600080fd5b82018360208201111561009f57600080fd5b803590602001918460018302840111640100000000831117156100c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e1565b604051808215151515815260200191505060405180910390f35b6102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029f6004803603608081101561026857600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610446565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102ed8484610324565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490509392505050565b600080600080604185511461033f5760009350505050610440565b602085015192506040850151915060ff6041860151169050601b8160ff16101561036a57601b810190505b601b8160ff16141580156103825750601c8160ff1614155b156103935760009350505050610440565b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156103f2573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561043857600080fd5b809450505050505b92915050565b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156104a6573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104ec57600080fd5b8091505094935050505056fea265627a7a72315820bee3e1ebc2a54dd34b2fb69e032ef6fde6996ed5378f09b9d6fdc6c72250439d64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/ERC20.json b/artifacts/ERC20.json new file mode 100644 index 0000000..c45e3f9 --- /dev/null +++ b/artifacts/ERC20.json @@ -0,0 +1,256 @@ +{ + "contractName": "ERC20", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052610e3a806100136000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a08231146101fd578063a457c2d714610255578063a9059cbb146102bb578063dd62ed3e1461032157610088565b8063095ea7b31461008d57806318160ddd146100f357806323b872dd146101115780633950935114610197575b600080fd5b6100d9600480360360408110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610399565b604051808215151515815260200191505060405180910390f35b6100fb6103b7565b6040518082815260200191505060405180910390f35b61017d6004803603606081101561012757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103c1565b604051808215151515815260200191505060405180910390f35b6101e3600480360360408110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061049a565b604051808215151515815260200191505060405180910390f35b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054d565b6040518082815260200191505060405180910390f35b6102a16004803603604081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610595565b604051808215151515815260200191505060405180910390f35b610307600480360360408110156102d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610662565b604051808215151515815260200191505060405180910390f35b6103836004803603604081101561033757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610680565b6040518082815260200191505060405180910390f35b60006103ad6103a6610707565b848461070f565b6001905092915050565b6000600254905090565b60006103ce848484610906565b61048f846103da610707565b61048a85604051806060016040528060288152602001610d7060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610440610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b600190509392505050565b60006105436104a7610707565b8461053e85600160006104b8610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b61070f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106586105a2610707565b8461065385604051806060016040528060258152602001610de160259139600160006105cc610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b6001905092915050565b600061067661066f610707565b8484610906565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610795576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610dbd6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561081b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d286022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610d986025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610d056023913960400191505060405180910390fd5b610a7d81604051806060016040528060268152602001610d4a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b10816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610c69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c2e578082015181840152602081019050610c13565b50505050905090810190601f168015610c5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158207fd0c2762ace8dd831f92ca93ea48ed5c55971cb384414b034406eb06dc81a8364736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a08231146101fd578063a457c2d714610255578063a9059cbb146102bb578063dd62ed3e1461032157610088565b8063095ea7b31461008d57806318160ddd146100f357806323b872dd146101115780633950935114610197575b600080fd5b6100d9600480360360408110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610399565b604051808215151515815260200191505060405180910390f35b6100fb6103b7565b6040518082815260200191505060405180910390f35b61017d6004803603606081101561012757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103c1565b604051808215151515815260200191505060405180910390f35b6101e3600480360360408110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061049a565b604051808215151515815260200191505060405180910390f35b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054d565b6040518082815260200191505060405180910390f35b6102a16004803603604081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610595565b604051808215151515815260200191505060405180910390f35b610307600480360360408110156102d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610662565b604051808215151515815260200191505060405180910390f35b6103836004803603604081101561033757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610680565b6040518082815260200191505060405180910390f35b60006103ad6103a6610707565b848461070f565b6001905092915050565b6000600254905090565b60006103ce848484610906565b61048f846103da610707565b61048a85604051806060016040528060288152602001610d7060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610440610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b600190509392505050565b60006105436104a7610707565b8461053e85600160006104b8610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b61070f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106586105a2610707565b8461065385604051806060016040528060258152602001610de160259139600160006105cc610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b6001905092915050565b600061067661066f610707565b8484610906565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610795576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610dbd6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561081b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d286022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610d986025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610d056023913960400191505060405180910390fd5b610a7d81604051806060016040528060268152602001610d4a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b10816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610c69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c2e578082015181840152602081019050610c13565b50505050905090810190601f168015610c5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158207fd0c2762ace8dd831f92ca93ea48ed5c55971cb384414b034406eb06dc81a8364736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/IERC20.json b/artifacts/IERC20.json new file mode 100644 index 0000000..0f1e45c --- /dev/null +++ b/artifacts/IERC20.json @@ -0,0 +1,66 @@ +{ + "contractName": "IERC20", + "abi": [ + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061016d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb146100c1575b600080fd5b6100a76004803603606081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610127565b604051808215151515815260200191505060405180910390f35b61010d600480360360408110156100d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610130565b604051808215151515815260200191505060405180910390f35b60009392505050565b60009291505056fea265627a7a72315820e0061de61f587f27e8444777267c8487bddf7a7647ff5b282fde1e577f10bd7d64736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb146100c1575b600080fd5b6100a76004803603606081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610127565b604051808215151515815260200191505060405180910390f35b61010d600480360360408110156100d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610130565b604051808215151515815260200191505060405180910390f35b60009392505050565b60009291505056fea265627a7a72315820e0061de61f587f27e8444777267c8487bddf7a7647ff5b282fde1e577f10bd7d64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/ITokenRegistry.json b/artifacts/ITokenRegistry.json new file mode 100644 index 0000000..2ec300b --- /dev/null +++ b/artifacts/ITokenRegistry.json @@ -0,0 +1,111 @@ +{ + "contractName": "ITokenRegistry", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "Coordinator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "finaliseTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "numTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pendingRegistrations", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "registeredTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "requestTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506102da806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806350de1b0f1461006757806355857ed9146100ab5780638e499bcf146100ef5780639a0ba2ea1461010d578063cd4852e51461017b578063f35213fc146101d7575b600080fd5b6100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610221565b005b6100ed600480360360208110156100c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b6100f7610227565b6040518082815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b810190808035906020019092919050505061022d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bd6004803603602081101561019157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610260565b604051808215151515815260200191505060405180910390f35b6101df610280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b50565b50565b60015481565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820376a2523f550399d0a313deb25f5f850e3c80c2a27f76e95125f6ddef0a056f564736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806350de1b0f1461006757806355857ed9146100ab5780638e499bcf146100ef5780639a0ba2ea1461010d578063cd4852e51461017b578063f35213fc146101d7575b600080fd5b6100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610221565b005b6100ed600480360360208110156100c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b6100f7610227565b6040518082815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b810190808035906020019092919050505061022d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bd6004803603602081101561019157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610260565b604051808215151515815260200191505060405180910390f35b6101df610280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b50565b50565b60015481565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820376a2523f550399d0a313deb25f5f850e3c80c2a27f76e95125f6ddef0a056f564736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/IncrementalTree.json b/artifacts/IncrementalTree.json new file mode 100644 index 0000000..a36ef3a --- /dev/null +++ b/artifacts/IncrementalTree.json @@ -0,0 +1,155 @@ +{ + "contractName": "IncrementalTree", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + } + ], + "name": "appendLeaf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getTreeRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "merkleUtils", + "outputs": [ + { + "internalType": "contract MerkleTreeUtils", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nextLeafIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_height", + "type": "uint256" + } + ], + "name": "setMerkleRootAndHeight", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tree", + "outputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405273__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561004857600080fd5b505af415801561005c573d6000803e3d6000fd5b505050506040513d602081101561007257600080fd5b810190808051906020019092919050505060ff16600055600060065534801561009a57600080fd5b50604051610b1f380380610b1f833981810160405260208110156100bd57600080fd5b81019080805190602001909291905050506000546040519080825280602002602001820160405280156100ff5781602001602082028038833980820191505090505b5060036002019080519060200190610118929190610530565b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101dc57600080fd5b505af41580156101f0573d6000803e3d6000fd5b505050506040513d602081101561020657600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561024b57600080fd5b505afa15801561025f573d6000803e3d6000fd5b505050506040513d602081101561027557600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061041a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cb0a3436040518163ffffffff1660e01b815260040160206040518083038186803b15801561033157600080fd5b505afa158015610345573d6000803e3d6000fd5b505050506040513d602081101561035b57600080fd5b8101908080519060200190929190505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5f8e87b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103d457600080fd5b505afa1580156103e8573d6000803e3d6000fd5b505050506040513d60208110156103fe57600080fd5b810190808051906020019092919050505061051860201b60201c565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b060006040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b810190808051906020019092919050505090506000600190505b6000548160ff161015610510578160036002018260ff16815481106104f557fe5b906000526020600020018190555080806001019150506104d4565b5050506105a2565b81600360000181905550806003600101819055505050565b82805482825590600052602060002090810192821561056c579160200282015b8281111561056b578251825591602001919060010190610550565b5b509050610579919061057d565b5090565b61059f91905b8082111561059b576000816000905550600101610583565b5090565b90565b61056e806105b16000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c22b6d91161005b5780635c22b6d91461013457806389c09d381461016c5780639c891b081461018a578063fd54b228146101cc5761007d565b80630be4f4221461008257806347b0f08e146100a05780634eb7221a146100ea575b600080fd5b61008a6101f1565b6040518082815260200191505060405180910390f35b6100a86101f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f261021d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016a6004803603604081101561014a57600080fd5b810190808035906020019092919080359060200190929190505050610243565b005b61017461025b565b6040518082815260200191505060405180910390f35b6101b6600480360360208110156101a057600080fd5b8101908080359060200190929190505050610268565b6040518082815260200191505060405180910390f35b6101d4610504565b604051808381526020018281526020019250505060405180910390f35b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600360000181905550806003600101819055505050565b6000600360000154905090565b6000806006549050600060036001015490508060020a82106102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b600084905060008060008090505b6003600101548160ff1610156104d3576000600287816102ff57fe5b0614156103e357839250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561037f57600080fd5b505afa158015610393573d6000803e3d6000fd5b505050506040513d60208110156103a957600080fd5b810190808051906020019092919050505091508360036002018260ff16815481106103d057fe5b9060005260206000200181905550610407565b60036002018160ff16815481106103f657fe5b906000526020600020015492508391505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb84846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561048257600080fd5b505afa158015610496573d6000803e3d6000fd5b505050506040513d60208110156104ac57600080fd5b81019080805190602001909291905050509350600186901c955080806001019150506102e3565b5082600360000181905550600060065490506001600660008282540192505081905550809650505050505050919050565b6003806000015490806001015490508256fe496e6372656d656e74616c4d65726b6c65547265653a20747265652069732066756c6ca265627a7a723158205eac861e8dcd7d196ae39f8e7955134cb9914246d343f5bdc67b19e4e7fb081964736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c22b6d91161005b5780635c22b6d91461013457806389c09d381461016c5780639c891b081461018a578063fd54b228146101cc5761007d565b80630be4f4221461008257806347b0f08e146100a05780634eb7221a146100ea575b600080fd5b61008a6101f1565b6040518082815260200191505060405180910390f35b6100a86101f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f261021d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016a6004803603604081101561014a57600080fd5b810190808035906020019092919080359060200190929190505050610243565b005b61017461025b565b6040518082815260200191505060405180910390f35b6101b6600480360360208110156101a057600080fd5b8101908080359060200190929190505050610268565b6040518082815260200191505060405180910390f35b6101d4610504565b604051808381526020018281526020019250505060405180910390f35b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600360000181905550806003600101819055505050565b6000600360000154905090565b6000806006549050600060036001015490508060020a82106102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b600084905060008060008090505b6003600101548160ff1610156104d3576000600287816102ff57fe5b0614156103e357839250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561037f57600080fd5b505afa158015610393573d6000803e3d6000fd5b505050506040513d60208110156103a957600080fd5b810190808051906020019092919050505091508360036002018260ff16815481106103d057fe5b9060005260206000200181905550610407565b60036002018160ff16815481106103f657fe5b906000526020600020015492508391505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb84846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561048257600080fd5b505afa158015610496573d6000803e3d6000fd5b505050506040513d60208110156104ac57600080fd5b81019080805190602001909291905050509350600186901c955080806001019150506102e3565b5082600360000181905550600060065490506001600660008282540192505081905550809650505050505050919050565b6003806000015490806001015490508256fe496e6372656d656e74616c4d65726b6c65547265653a20747265652069732066756c6ca265627a7a723158205eac861e8dcd7d196ae39f8e7955134cb9914246d343f5bdc67b19e4e7fb081964736f6c634300050f0032", + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 6 + }, + { + "length": 20, + "start": 410 + } + ] + } + }, + "deployedLinkReferences": {} +} diff --git a/artifacts/Logger.json b/artifacts/Logger.json new file mode 100644 index 0000000..9b70fbf --- /dev/null +++ b/artifacts/Logger.json @@ -0,0 +1,470 @@ +{ + "contractName": "Logger", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakeSlashed", + "type": "uint256" + } + ], + "name": "BatchRollback", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "left", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "right", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "DepositLeafMerged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "AccountID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "token", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "accountHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "name": "DepositQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "depositSubTreeRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pathToSubTree", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newBalanceRoot", + "type": "bytes32" + } + ], + "name": "DepositsFinalised", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txroot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "updatedRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NewBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "RegisteredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "RegistrationRequest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "totalBatchesSlashed", + "type": "uint256" + } + ], + "name": "RollbackFinalisation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "committed", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "StakeWithdraw", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "stakeSlashed", + "type": "uint256" + } + ], + "name": "logBatchRollback", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "depositSubTreeRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "pathToSubTree", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "newBalanceRoot", + "type": "bytes32" + } + ], + "name": "logDepositFinalised", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "left", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "right", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "logDepositLeafMerged", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "accountID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "token", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "accountHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "name": "logDepositQueued", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "txroot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "updatedRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "logNewBatch", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "logRegisteredToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "logRegistrationRequest", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "totalBatchesSlashed", + "type": "uint256" + } + ], + "name": "logRollbackFinalisation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "committed", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "logStakeWithdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a723158204d5ead8eb4b2ed3effa4ba65d4b6e1131933f9fe12c12a20148864f3e5ed5dbd64736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a723158204d5ead8eb4b2ed3effa4ba65d4b6e1131933f9fe12c12a20148864f3e5ed5dbd64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/MerkleTreeUtils.json b/artifacts/MerkleTreeUtils.json new file mode 100644 index 0000000..8d18e37 --- /dev/null +++ b/artifacts/MerkleTreeUtils.json @@ -0,0 +1,453 @@ +{ + "contractName": "MerkleTreeUtils", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_DEPTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZERO_BYTES32", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "computeInclusionProofRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "computeInclusionProofRootWithLeaf", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "defaultHashes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + } + ], + "name": "getLeftSiblingKey", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMaxTreeDepth", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes[]", + "name": "_dataBlocks", + "type": "bytes[]" + } + ], + "name": "getMerkleRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "_intVal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getNthBitFromRight", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_left", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_right", + "type": "bytes32" + } + ], + "name": "getParent", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + } + ], + "name": "getRightSiblingKey", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getZeroRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "keecakHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "path", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "name": "pathToIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "updateLeafWithSiblings", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "verify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "verifyLeaf", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040", + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 27 + } + ] + } + }, + "deployedLinkReferences": {} +} diff --git a/artifacts/Migrations.json b/artifacts/Migrations.json new file mode 100644 index 0000000..6c94b00 --- /dev/null +++ b/artifacts/Migrations.json @@ -0,0 +1,75 @@ +{ + "contractName": "Migrations", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102b7806100606000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820ae4fd416ede2843beb9c646fa6a5b43547428180715aa09b7e7f3d19ab4c3f2c64736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820ae4fd416ede2843beb9c646fa6a5b43547428180715aa09b7e7f3d19ab4c3f2c64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/NameRegistry.json b/artifacts/NameRegistry.json new file mode 100644 index 0000000..9ef1836 --- /dev/null +++ b/artifacts/NameRegistry.json @@ -0,0 +1,95 @@ +{ + "contractName": "NameRegistry", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddr", + "type": "address" + } + ], + "name": "RegisteredNewContract", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "getContractDetails", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "registerName", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "updateContractDetails", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061036c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063185e996914610046578063bae3db78146100b4578063c8b41b8314610102575b600080fd5b6100726004803603602081101561005c57600080fd5b8101908080359060200190929190505050610168565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610100600480360360408110156100ca57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a7565b005b61014e6004803603604081101561011857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ab565b604051808215151515815260200191505060405180910390f35b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5050565b60006101b561030e565b6000808581526020019081526020016000206040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156103025782816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060008086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506001915050610308565b60009150505b92915050565b6040518060200160405280600073ffffffffffffffffffffffffffffffffffffffff168152509056fea265627a7a72315820513709c576970d730b0f1604a72212232728566ad315e5e1e67473dd12be43b664736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063185e996914610046578063bae3db78146100b4578063c8b41b8314610102575b600080fd5b6100726004803603602081101561005c57600080fd5b8101908080359060200190929190505050610168565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610100600480360360408110156100ca57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a7565b005b61014e6004803603604081101561011857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ab565b604051808215151515815260200191505060405180910390f35b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5050565b60006101b561030e565b6000808581526020019081526020016000206040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156103025782816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060008086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506001915050610308565b60009150505b92915050565b6040518060200160405280600073ffffffffffffffffffffffffffffffffffffffff168152509056fea265627a7a72315820513709c576970d730b0f1604a72212232728566ad315e5e1e67473dd12be43b664736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/Ownable.json b/artifacts/Ownable.json new file mode 100644 index 0000000..7e12d0f --- /dev/null +++ b/artifacts/Ownable.json @@ -0,0 +1,88 @@ +{ + "contractName": "Ownable", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/POB.json b/artifacts/POB.json new file mode 100644 index 0000000..e419e58 --- /dev/null +++ b/artifacts/POB.json @@ -0,0 +1,15 @@ +{ + "contractName": "POB", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582093e386cecefae87b1e9b7b7e171d1f6bdf40daef6a849c386bdc4afcb8562b2864736f6c634300050f0032", + "deployedBytecode": "0x6080604052600080fdfea265627a7a7231582093e386cecefae87b1e9b7b7e171d1f6bdf40daef6a849c386bdc4afcb8562b2864736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/ParamManager.json b/artifacts/ParamManager.json new file mode 100644 index 0000000..afdfca7 --- /dev/null +++ b/artifacts/ParamManager.json @@ -0,0 +1,414 @@ +{ + "contractName": "ParamManager", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "ACCOUNTS_TREE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BALANCES_TREE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BURN_ADDRESS", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CHAIN_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DEPOSIT_MANAGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "LOGGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_DEPOSIT_SUBTREE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_DEPTH", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_TXS_PER_BATCH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MERKLE_UTILS", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_GAS_LIMIT_LEFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PARAM_MANAGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ROLLUP_CORE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "STAKE_AMOUNT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TEST_TOKEN", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TIME_TO_FINALISE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_REGISTRY", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "WITHDRAW_MANAGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZERO_BYTES32", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_CHAIN_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MAX_DEPOSIT_SUBTREE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MAX_DEPTH", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MAX_TXS_PER_BATCH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MIN_GAS_LIMIT_LEFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_STAKE_AMOUNT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_TIME_TO_FINALISE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_ZERO_BYTES32", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6108a9610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106101b35760003560e01c80636d74b23d11610103578063c2ed4caa116100a1578063e69e93ea1161007b578063e69e93ea14610482578063f8989c36146104a0578063faf5625f146104be578063fccc2813146104dc576101b3565b8063c2ed4caa14610422578063ca4a98f214610440578063d52782f81461045e576101b3565b80638a5b1d7a116100dd5780638a5b1d7a146103a45780639f9956fe146103c2578063a27154ba146103e0578063a8b2d00114610404576101b3565b80636d74b23d1461034a578063777737011461036857806385e1f4d014610386576101b3565b80634a1eb5911161017057806359624eee1161014a57806359624eee146102cc5780635d4cbd0d146102ea578063626835f51461030857806364201df614610326576101b3565b80634a1eb5911461026c5780634a6153e81461028a578063554056e4146102a8576101b3565b8063069321b0146101b8578063106e9921146101d6578063203303fb146101f45780632c82595f14610212578063366fa7061461023057806337a9c9831461024e575b600080fd5b6101c0610526565b6040518082815260200191505060405180910390f35b6101de610531565b6040518082815260200191505060405180910390f35b6101fc61053c565b6040518082815260200191505060405180910390f35b61021a610575565b6040518082815260200191505060405180910390f35b6102386105b2565b6040518082815260200191505060405180910390f35b6102566105b9565b6040518082815260200191505060405180910390f35b6102746105f6565b6040518082815260200191505060405180910390f35b6102926105ff565b6040518082815260200191505060405180910390f35b6102b0610604565b604051808260ff1660ff16815260200191505060405180910390f35b6102d461060d565b6040518082815260200191505060405180910390f35b6102f2610614565b6040518082815260200191505060405180910390f35b61031061061f565b6040518082815260200191505060405180910390f35b61032e61065c565b604051808260ff1660ff16815260200191505060405180910390f35b610352610661565b6040518082815260200191505060405180910390f35b61037061069e565b6040518082815260200191505060405180910390f35b61038e6106db565b6040518082815260200191505060405180910390f35b6103ac610718565b6040518082815260200191505060405180910390f35b6103ca610755565b6040518082815260200191505060405180910390f35b6103e861075a565b604051808260ff1660ff16815260200191505060405180910390f35b61040c610763565b6040518082815260200191505060405180910390f35b61042a6107a0565b6040518082815260200191505060405180910390f35b6104486107a7565b6040518082815260200191505060405180910390f35b6104666107e4565b604051808260ff1660ff16815260200191505060405180910390f35b61048a6107e9565b6040518082815260200191505060405180910390f35b6104a8610826565b6040518082815260200191505060405180910390f35b6104c6610863565b6040518082815260200191505060405180910390f35b6104e461086c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060001b905090565b6000620186a0905090565b60405180807f6f7072752d3132330000000000000000000000000000000000000000000000008152506008019050604051809103902081565b600060405180807f6c6f67676572000000000000000000000000000000000000000000000000000081525060060190506040518091039020905090565b6000801b81565b600060405180807f6465706f7369745f6d616e616765720000000000000000000000000000000000815250600f0190506040518091039020905090565b6000600a905090565b600a81565b60006002905090565b62093a8081565b600062093a80905090565b600060405180807f62616c616e6365735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600281565b600060405180807f6d65726b6c655f6c696200000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b600060405180807f77697468647261775f6d616e616765720000000000000000000000000000000081525060100190506040518091039020905090565b600060405180807f6f7072752d31323300000000000000000000000000000000000000000000000081525060080190506040518091039020905090565b600060405180807f746f6b656e5f7265676973747279000000000000000000000000000000000000815250600e0190506040518091039020905090565b602081565b60006004905090565b600060405180807f726f6c6c75705f636f7265000000000000000000000000000000000000000000815250600b0190506040518091039020905090565b620186a081565b600060405180807f6163636f756e74735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600481565b600060405180807f706172616d5f6d616e6167657200000000000000000000000000000000000000815250600d0190506040518091039020905090565b600060405180807f746573745f746f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b60006020905090565b60008090509056fea265627a7a72315820907e7eb31dd7f3da93604135d9052af252c852962fe76dd9531a1031fad4c97664736f6c634300050f0032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106101b35760003560e01c80636d74b23d11610103578063c2ed4caa116100a1578063e69e93ea1161007b578063e69e93ea14610482578063f8989c36146104a0578063faf5625f146104be578063fccc2813146104dc576101b3565b8063c2ed4caa14610422578063ca4a98f214610440578063d52782f81461045e576101b3565b80638a5b1d7a116100dd5780638a5b1d7a146103a45780639f9956fe146103c2578063a27154ba146103e0578063a8b2d00114610404576101b3565b80636d74b23d1461034a578063777737011461036857806385e1f4d014610386576101b3565b80634a1eb5911161017057806359624eee1161014a57806359624eee146102cc5780635d4cbd0d146102ea578063626835f51461030857806364201df614610326576101b3565b80634a1eb5911461026c5780634a6153e81461028a578063554056e4146102a8576101b3565b8063069321b0146101b8578063106e9921146101d6578063203303fb146101f45780632c82595f14610212578063366fa7061461023057806337a9c9831461024e575b600080fd5b6101c0610526565b6040518082815260200191505060405180910390f35b6101de610531565b6040518082815260200191505060405180910390f35b6101fc61053c565b6040518082815260200191505060405180910390f35b61021a610575565b6040518082815260200191505060405180910390f35b6102386105b2565b6040518082815260200191505060405180910390f35b6102566105b9565b6040518082815260200191505060405180910390f35b6102746105f6565b6040518082815260200191505060405180910390f35b6102926105ff565b6040518082815260200191505060405180910390f35b6102b0610604565b604051808260ff1660ff16815260200191505060405180910390f35b6102d461060d565b6040518082815260200191505060405180910390f35b6102f2610614565b6040518082815260200191505060405180910390f35b61031061061f565b6040518082815260200191505060405180910390f35b61032e61065c565b604051808260ff1660ff16815260200191505060405180910390f35b610352610661565b6040518082815260200191505060405180910390f35b61037061069e565b6040518082815260200191505060405180910390f35b61038e6106db565b6040518082815260200191505060405180910390f35b6103ac610718565b6040518082815260200191505060405180910390f35b6103ca610755565b6040518082815260200191505060405180910390f35b6103e861075a565b604051808260ff1660ff16815260200191505060405180910390f35b61040c610763565b6040518082815260200191505060405180910390f35b61042a6107a0565b6040518082815260200191505060405180910390f35b6104486107a7565b6040518082815260200191505060405180910390f35b6104666107e4565b604051808260ff1660ff16815260200191505060405180910390f35b61048a6107e9565b6040518082815260200191505060405180910390f35b6104a8610826565b6040518082815260200191505060405180910390f35b6104c6610863565b6040518082815260200191505060405180910390f35b6104e461086c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060001b905090565b6000620186a0905090565b60405180807f6f7072752d3132330000000000000000000000000000000000000000000000008152506008019050604051809103902081565b600060405180807f6c6f67676572000000000000000000000000000000000000000000000000000081525060060190506040518091039020905090565b6000801b81565b600060405180807f6465706f7369745f6d616e616765720000000000000000000000000000000000815250600f0190506040518091039020905090565b6000600a905090565b600a81565b60006002905090565b62093a8081565b600062093a80905090565b600060405180807f62616c616e6365735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600281565b600060405180807f6d65726b6c655f6c696200000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b600060405180807f77697468647261775f6d616e616765720000000000000000000000000000000081525060100190506040518091039020905090565b600060405180807f6f7072752d31323300000000000000000000000000000000000000000000000081525060080190506040518091039020905090565b600060405180807f746f6b656e5f7265676973747279000000000000000000000000000000000000815250600e0190506040518091039020905090565b602081565b60006004905090565b600060405180807f726f6c6c75705f636f7265000000000000000000000000000000000000000000815250600b0190506040518091039020905090565b620186a081565b600060405180807f6163636f756e74735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600481565b600060405180807f706172616d5f6d616e6167657200000000000000000000000000000000000000815250600d0190506040518091039020905090565b600060405180807f746573745f746f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b60006020905090565b60008090509056fea265627a7a72315820907e7eb31dd7f3da93604135d9052af252c852962fe76dd9531a1031fad4c97664736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/Rollup.json b/artifacts/Rollup.json new file mode 100644 index 0000000..9dd81d1 --- /dev/null +++ b/artifacts/Rollup.json @@ -0,0 +1,975 @@ +{ + "contractName": "Rollup", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [], + "name": "SlashAndRollback", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "WithdrawStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accountsTree", + "outputs": [ + { + "internalType": "contract IncrementalTree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balancesTree", + "outputs": [ + { + "internalType": "contract Tree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "batches", + "outputs": [ + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "accountRoot", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "stakeCommitted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalisesOn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_batch_id", + "type": "uint256" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction[]", + "name": "_txs", + "type": "tuple[]" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof[]", + "name": "_from_proofs", + "type": "tuple[]" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToPubkey", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "internalType": "struct Types.PDALeaf", + "name": "pubkey_leaf", + "type": "tuple" + } + ], + "internalType": "struct Types.PDAInclusionProof", + "name": "_pda", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.PDAMerkleProof[]", + "name": "_pda_proof", + "type": "tuple[]" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof[]", + "name": "_to_proofs", + "type": "tuple[]" + } + ], + "name": "disputeBatch", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "logger", + "outputs": [ + { + "internalType": "contract Logger", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "merkleUtils", + "outputs": [ + { + "internalType": "contract MerkleTreeUtils", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_balanceRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_accountsRoot", + "type": "bytes32" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction", + "name": "_tx", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToPubkey", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "internalType": "struct Types.PDALeaf", + "name": "pubkey_leaf", + "type": "tuple" + } + ], + "internalType": "struct Types.PDAInclusionProof", + "name": "_pda", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.PDAMerkleProof", + "name": "_pda_proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof", + "name": "_from_merkle_proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof", + "name": "_to_merkle_proof", + "type": "tuple" + } + ], + "name": "processTx", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes[]", + "name": "_txs", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "_updatedRoot", + "type": "bytes32" + } + ], + "name": "submitBatch", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenContract", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenRegistry", + "outputs": [ + { + "internalType": "contract ITokenRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405273__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b1580156200004957600080fd5b505af41580156200005e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000084919081019062000c54565b604051908082528060200260200182016040528015620000b957816020015b6060815260200190600190039081620000a35790505b50600a9080519060200190620000d1929190620009ed565b50348015620000df57600080fd5b5060405162005b7f38038062005b7f833981810160405262000105919081019062000bfc565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c957600080fd5b505af4158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000204919081019062000c28565b6040518263ffffffff1660e01b815260040162000222919062000c91565b60206040518083038186803b1580156200023b57600080fd5b505afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000276919081019062000bfc565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63626835f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033957600080fd5b505af41580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000374919081019062000c28565b6040518263ffffffff1660e01b815260040162000392919062000c91565b60206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003e6919081019062000bfc565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a957600080fd5b505af4158015620004be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004e4919081019062000c28565b6040518263ffffffff1660e01b815260040162000502919062000c91565b60206040518083038186803b1580156200051b57600080fd5b505afa15801562000530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000556919081019062000bfc565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63ca4a98f26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200061957600080fd5b505af41580156200062e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000654919081019062000c28565b6040518263ffffffff1660e01b815260040162000672919062000c91565b60206040518083038186803b1580156200068b57600080fd5b505afa158015620006a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620006c6919081019062000bfc565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63f8989c366040518163ffffffff1660e01b815260040160206040518083038186803b1580156200078957600080fd5b505af41580156200079e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620007c4919081019062000c28565b6040518263ffffffff1660e01b8152600401620007e2919062000c91565b60206040518083038186803b158015620007fb57600080fd5b505afa15801562000810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000836919081019062000bfc565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008f957600080fd5b505af41580156200090e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000934919081019062000c28565b6040518263ffffffff1660e01b815260040162000952919062000c91565b60206040518083038186803b1580156200096b57600080fd5b505afa15801562000980573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620009a6919081019062000bfc565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000d44565b82805482825590600052602060002090810192821562000a41579160200282015b8281111562000a4057825182908051906020019062000a2f92919062000a54565b509160200191906001019062000a0e565b5b50905062000a50919062000b01565b5090565b82805482825590600052602060002090601f0160209004810192821562000aee5791602002820160005b8382111562000abd57835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000a7e565b801562000aec5782816101000a81549060ff021916905560010160208160000104928301926001030262000abd565b505b50905062000afd919062000b32565b5090565b62000b2f91905b8082111562000b2b576000818162000b21919062000b65565b5060010162000b08565b5090565b90565b62000b6291905b8082111562000b5e57600081816101000a81549060ff02191690555060010162000b39565b5090565b90565b50805460008255601f01602090049060005260206000209081019062000b8c919062000b8f565b50565b62000bb491905b8082111562000bb057600081600090555060010162000b96565b5090565b90565b60008151905062000bc88162000cf6565b92915050565b60008151905062000bdf8162000d10565b92915050565b60008151905062000bf68162000d2a565b92915050565b60006020828403121562000c0f57600080fd5b600062000c1f8482850162000bb7565b91505092915050565b60006020828403121562000c3b57600080fd5b600062000c4b8482850162000bce565b91505092915050565b60006020828403121562000c6757600080fd5b600062000c778482850162000be5565b91505092915050565b62000c8b8162000cc2565b82525050565b600060208201905062000ca8600083018462000c80565b92915050565b600062000cbb8262000ccc565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000d018162000cae565b811462000d0d57600080fd5b50565b62000d1b8162000cc2565b811462000d2757600080fd5b50565b62000d358162000cec565b811462000d4157600080fd5b50565b614e2b8062000d546000396000f3fe6080604052600436106100c25760003560e01c8063ae2926d41161007f578063defd34e311610059578063defd34e314610268578063df07098314610291578063f24ccbfe146102a8578063ff34585d146102d3576100c2565b8063ae2926d4146101cf578063b2692d77146101fa578063b32c4d8d14610225576100c2565b80630e981757146100c75780634643dde4146100e357806347b0f08e146101235780634eb7221a1461014e57806355a373d6146101795780639d23c4c7146101a4575b600080fd5b6100e160048036036100dc919081019061342b565b6102fc565b005b3480156100ef57600080fd5b5061010a600480360361010591908101906134d5565b6108da565b60405161011a9493929190614464565b60405180910390f35b34801561012f57600080fd5b50610138611c34565b6040516101459190614567565b60405180910390f35b34801561015a57600080fd5b50610163611c5a565b6040516101709190614582565b60405180910390f35b34801561018557600080fd5b5061018e611c80565b60405161019b91906144fb565b60405180910390f35b3480156101b057600080fd5b506101b9611ca6565b6040516101c69190614516565b60405180910390f35b3480156101db57600080fd5b506101e4611ccc565b6040516101f19190614531565b60405180910390f35b34801561020657600080fd5b5061020f611cf2565b60405161021c919061459d565b60405180910390f35b34801561023157600080fd5b5061024c60048036036102479190810190613628565b611d18565b60405161025f97969594939291906142e1565b60405180910390f35b34801561027457600080fd5b5061028f600480360361028a919081019061367a565b611d87565b005b34801561029d57600080fd5b506102a66121c0565b005b3480156102b457600080fd5b506102bd6126b1565b6040516102ca919061454c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036036102f59190810190613628565b6126d7565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461035257fe5b60006009541461035e57fe5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63faf5625f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a257600080fd5b505af41580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103da9190810190613651565b341461041b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610412906146da565b60405180910390fd5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b15801561045f57600080fd5b505af4158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104979190810190613651565b83839050505073__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e157600080fd5b505af41580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105199190810190613651565b83839050111561055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906145da565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef85856040518363ffffffff1660e01b81526004016105bd92919061429b565b602060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060f91908101906134ac565b9050610619612a2f565b6040518060e00160405280848152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389c09d386040518163ffffffff1660e01b815260040160206040518083038186803b15801561069257600080fd5b505afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ca91908101906134ac565b81526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200134815260200173__$b941c30c0f5422d8b714f571f17d94a5fd$__635d4cbd0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107739190810190613651565b4301815260200142815250905060078190806001815401808255809150509060018203906000526020600020906007020160009091929091909150600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060155505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cea4592f826040015184866001600780549050036040518563ffffffff1660e01b81526004016108a19493929190614256565b600060405180830381600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050505050505050565b600080600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768a896000015160200151600001518a60000151600001518b602001516040518563ffffffff1660e01b815260040161095994939291906143d3565b60206040518083038186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a99190810190613483565b6109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906146ba565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166325ab625e89600001516000015173__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7557600080fd5b505af4158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aad9190810190613751565b6040518363ffffffff1660e01b8152600401610aca92919061488b565b60206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1a9190810190613651565b90508860000151600001518114610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d9061475a565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63ae97e1bf8a6040518263ffffffff1660e01b8152600401610b9d919061479c565b60206040518083038186803b158015610bb557600080fd5b505af4158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bed91908101906134ac565b73__$11f233442b4eefbe29cf56a2c2d703f84d$__6377d32e9490918b608001516040518363ffffffff1660e01b8152600401610c2b929190614350565b60206040518083038186803b158015610c4357600080fd5b505af4158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b91908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e8a6000015160200151600001516040518263ffffffff1660e01b8152600401610cd491906144a9565b60206040518083038186803b158015610cec57600080fd5b505af4158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d2491908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d719061473a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea8b604001516040518263ffffffff1660e01b8152600401610df1919061481d565b60206040518083038186803b158015610e0957600080fd5b505afa158015610e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4191908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff161415610ef25773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505af4158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed991908101906134ac565b6000806000829250819150945094509450945050611c27565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768c73__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8d600001516040518263ffffffff1660e01b8152600401610f6c91906147be565b60006040518083038186803b158015610f8457600080fd5b505af4158015610f98573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610fc191908101906135be565b8a60000151600001518b602001516040518563ffffffff1660e01b8152600401610fee9493929190614380565b60206040518083038186803b15801561100657600080fd5b505afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061103e9190810190613483565b61107d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611074906146fa565b60405180910390fd5b6000896060015163ffffffff1610156111255773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505af41580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061110c91908101906134ac565b6000806000829250819150945094509450945050611c27565b886060015163ffffffff168760000151602001516040015110156111d85773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561118757600080fd5b505af415801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111bf91908101906134ac565b6000806000829250819150945094509450945050611c27565b886040015187600001516020015160200151146112845773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505af4158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126b91908101906134ac565b6000806000829250819150945094509450945050611c27565b61128c612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__631229626389600001516020015161135a8d6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8e60000151602001516040518263ffffffff1660e01b81526004016112fc91906147be565b60206040518083038186803b15801561131457600080fd5b505af4158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134c9190810190613651565b61293590919063ffffffff16565b6040518363ffffffff1660e01b81526004016113779291906147f4565b60806040518083038186803b15801561138f57600080fd5b505af41580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906135ff565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e856040518263ffffffff1660e01b815260040161144091906147d9565b60006040518083038186803b15801561145857600080fd5b505af415801561146c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061149591908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b81526004016114c893929190614426565b60206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061151891908101906134ac565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768273__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8f602001516040518263ffffffff1660e01b815260040161159491906147be565b60006040518083038186803b1580156115ac57600080fd5b505af41580156115c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506115e991908101906135be565b8b60000151600001518c602001516040518563ffffffff1660e01b81526004016116169493929190614380565b60206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116669190810190613483565b6116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906146fa565b60405180910390fd5b8a6040015188600001516020015160200151146117535773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561170057600080fd5b505af4158015611714573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173891908101906134ac565b60008060008292508191509650965096509650505050611c27565b61175b612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63122962638a60000151602001516118298f6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8f60000151602001516040518263ffffffff1660e01b81526004016117cb91906147be565b60206040518083038186803b1580156117e357600080fd5b505af41580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061181b9190810190613651565b61297f90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118469291906147f4565b60806040518083038186803b15801561185e57600080fd5b505af4158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061189691908101906135ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3b4523473__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b815260040161190d91906147d9565b60006040518083038186803b15801561192557600080fd5b505af4158015611939573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061196291908101906135be565b8b60000151600001516040518363ffffffff1660e01b81526004016119889291906144cb565b600060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b8152600401611a2f91906147d9565b60006040518083038186803b158015611a4757600080fd5b505af4158015611a5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611a8491908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b8152600401611ab793929190614426565b60206040518083038186803b158015611acf57600080fd5b505afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b0791908101906134ac565b91508173__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd856040518263ffffffff1660e01b8152600401611b4191906147d9565b60206040518083038186803b158015611b5957600080fd5b505af4158015611b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b919190810190613651565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd846040518263ffffffff1660e01b8152600401611bc891906147d9565b60206040518083038186803b158015611be057600080fd5b505af4158015611bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c189190810190613651565b60019750975097509750505050505b9650965096509692505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078181548110611d2557fe5b90600052602060002090600702016000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154905087565b600060078681548110611d9657fe5b9060005260206000209060070201600401541415611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de0906145fa565b60405180910390fd5b60078581548110611df657fe5b9060005260206000209060070201600501544310611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e409061469a565b60405180910390fd5b6009548510611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e849061471a565b60405180910390fd5b606060008090505b8551811015611f615773__$a6b8846b3184b62d6aec39d1f36e30dab3$__63dbcbdf9f878381518110611ec457fe5b60200260200101516040518263ffffffff1660e01b8152600401611ee8919061477a565b60006040518083038186803b158015611f0057600080fd5b505af4158015611f14573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611f3d91908101906135be565b828281518110611f4957fe5b60200260200101819052508080600101915050611e95565b506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef836040518263ffffffff1660e01b8152600401611fbf91906142bf565b602060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061201191908101906134ac565b90506007878154811061202057fe5b906000526020600020906007020160030154811415612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9061463a565b60405180910390fd5b600080600080600080905060008090505b8b5181101561214f5761212460078e8154811061209e57fe5b90600052602060002090600702016000015460078f815481106120bd57fe5b9060005260206000209060070201600101548e84815181106120db57fe5b60200260200101518d85815181106120ef57fe5b60200260200101518f868151811061210357fe5b60200260200101518e878151811061211757fe5b60200260200101516108da565b8096508197508298508399505050505082612142576001915061214f565b8080600101915050612085565b508015612171578b6009819055506121656121c0565b505050505050506121b9565b60078c8154811061217e57fe5b90600052602060002090600702016000015485146121b1578b6009819055506121a56121c0565b505050505050506121b9565b505050505050505b5050505050565b6000600954116121cc57fe5b600080905060008090506000809050600060016007805490500390505b60095481106124d45773__$b941c30c0f5422d8b714f571f17d94a5fd$__63106e99216040518163ffffffff1660e01b815260040160206040518083038186803b15801561223657600080fd5b505af415801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061226e9190810190613651565b5a11612279576124d4565b60095481141561228c5760006009819055505b612294612a2f565b600782815481106122a157fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050600360028260800151028161235f57fe5b048501945061237b85826080015161293590919063ffffffff16565b8401935060006007838154811061238e57fe5b906000526020600020906007020160040181905550600782815481106123b057fe5b906000526020600020906007020160008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550508280600101935050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4ba86b38383604001518460000151856060015186608001516040518663ffffffff1660e01b8152600401612493959493929190614838565b600060405180830381600087803b1580156124ad57600080fd5b505af11580156124c1573d6000803e3d6000fd5b50505050508080600190039150506121e9565b503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561251b573d6000803e3d6000fd5b50600073__$b941c30c0f5422d8b714f571f17d94a5fd$__63fccc28136040518163ffffffff1660e01b815260040160206040518083038186803b15801561256257600080fd5b505af4158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061259a9190810190613402565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156125e2573d6000803e3d6000fd5b506126106125fc600160095461293590919063ffffffff16565b60078054905061293590919063ffffffff16565b60078161261d9190612ab3565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aeedf0c7836040518263ffffffff1660e01b8152600401612679919061481d565b600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b5050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126df612a2f565b600782815481106126ec57fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128029061465a565b60405180910390fd5b8060a001514311612851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128489061467a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc82608001519081150290604051600060405180830381858888f1935050505015801561289b573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54404ae338360800151856040518463ffffffff1660e01b81526004016128ff9392919061421f565b600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b505050505050565b600061297783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129d4565b905092915050565b6000808284019050838110156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c19061461a565b60405180910390fd5b8091505092915050565b6000838311158290612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1391906145b8565b60405180910390fd5b5060008385039050809150509392505050565b6040518060e001604052806000801916815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b815481835581811115612ae057600702816007028360005260206000209182019101612adf9190612ae5565b5b505050565b612b5891905b80821115612b545760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550600701612aeb565b5090565b90565b600081519050612b6a81614d47565b92915050565b600081519050612b7f81614d5e565b92915050565b600082601f830112612b9657600080fd5b8135612ba9612ba4826148e1565b6148b4565b91508181835260208401935060208101905083856020840282011115612bce57600080fd5b60005b83811015612bfe5781612be48882612dc3565b845260208401935060208301925050600181019050612bd1565b5050505092915050565b60008083601f840112612c1a57600080fd5b8235905067ffffffffffffffff811115612c3357600080fd5b602083019150836020820283011115612c4b57600080fd5b9250929050565b600082601f830112612c6357600080fd5b8135612c76612c7182614909565b6148b4565b9150818183526020840193506020810190508360005b83811015612cbc5781358601612ca28882612ee1565b845260208401935060208301925050600181019050612c8c565b5050505092915050565b600082601f830112612cd757600080fd5b8135612cea612ce582614931565b6148b4565b9150818183526020840193506020810190508360005b83811015612d305781358601612d16888261305d565b845260208401935060208301925050600181019050612d00565b5050505092915050565b600082601f830112612d4b57600080fd5b8135612d5e612d5982614959565b6148b4565b9150818183526020840193506020810190508360005b83811015612da45781358601612d8a8882613155565b845260208401935060208301925050600181019050612d74565b5050505092915050565b600081519050612dbd81614d75565b92915050565b600081359050612dd281614d8c565b92915050565b600081519050612de781614d8c565b92915050565b600082601f830112612dfe57600080fd5b8135612e11612e0c82614981565b6148b4565b91508082526020830160208301858383011115612e2d57600080fd5b612e38838284614cf4565b50505092915050565b600082601f830112612e5257600080fd5b8151612e65612e60826149ad565b6148b4565b91508082526020830160208301858383011115612e8157600080fd5b612e8c838284614d03565b50505092915050565b600060a08284031215612ea757600080fd5b612eb160406148b4565b90506000612ec184828501613385565b6000830152506020612ed58482850161329d565b60208301525092915050565b600060c08284031215612ef357600080fd5b612efd60406148b4565b90506000612f0d84828501612e95565b60008301525060a082013567ffffffffffffffff811115612f2d57600080fd5b612f3984828501612b85565b60208301525092915050565b600060c08284031215612f5757600080fd5b612f6160406148b4565b90506000612f7184828501612e95565b60008301525060a082013567ffffffffffffffff811115612f9157600080fd5b612f9d84828501612b85565b60208301525092915050565b600060408284031215612fbb57600080fd5b612fc560406148b4565b90506000612fd584828501613385565b600083015250602082013567ffffffffffffffff811115612ff557600080fd5b6130018482850161300d565b60208301525092915050565b60006020828403121561301f57600080fd5b61302960206148b4565b9050600082013567ffffffffffffffff81111561304557600080fd5b61305184828501612ded565b60008301525092915050565b60006040828403121561306f57600080fd5b61307960406148b4565b9050600082013567ffffffffffffffff81111561309557600080fd5b6130a184828501612fa9565b600083015250602082013567ffffffffffffffff8111156130c157600080fd5b6130cd84828501612b85565b60208301525092915050565b6000604082840312156130eb57600080fd5b6130f560406148b4565b9050600082013567ffffffffffffffff81111561311157600080fd5b61311d84828501612fa9565b600083015250602082013567ffffffffffffffff81111561313d57600080fd5b61314984828501612b85565b60208301525092915050565b6000610160828403121561316857600080fd5b61317260a06148b4565b905060006131828482850161329d565b60008301525060806131968482850161329d565b6020830152506101006131ab84828501613385565b6040830152506101206131c0848285016133af565b60608301525061014082013567ffffffffffffffff8111156131e157600080fd5b6131ed84828501612ded565b60808301525092915050565b6000610160828403121561320c57600080fd5b61321660a06148b4565b905060006132268482850161329d565b600083015250608061323a8482850161329d565b60208301525061010061324f84828501613385565b604083015250610120613264848285016133af565b60608301525061014082013567ffffffffffffffff81111561328557600080fd5b61329184828501612ded565b60808301525092915050565b6000608082840312156132af57600080fd5b6132b960806148b4565b905060006132c984828501613385565b60008301525060206132dd84828501613385565b60208301525060406132f184828501613385565b604083015250606061330584828501613385565b60608301525092915050565b60006080828403121561332357600080fd5b61332d60806148b4565b9050600061333d8482850161339a565b60008301525060206133518482850161339a565b60208301525060406133658482850161339a565b60408301525060606133798482850161339a565b60608301525092915050565b60008135905061339481614da3565b92915050565b6000815190506133a981614da3565b92915050565b6000813590506133be81614dba565b92915050565b6000815190506133d381614dd1565b92915050565b6000602082840312156133eb57600080fd5b60006133f984828501612b5b565b91505092915050565b60006020828403121561341457600080fd5b600061342284828501612b70565b91505092915050565b60008060006040848603121561344057600080fd5b600084013567ffffffffffffffff81111561345a57600080fd5b61346686828701612c08565b9350935050602061347986828701612dc3565b9150509250925092565b60006020828403121561349557600080fd5b60006134a384828501612dae565b91505092915050565b6000602082840312156134be57600080fd5b60006134cc84828501612dd8565b91505092915050565b60008060008060008060c087890312156134ee57600080fd5b60006134fc89828a01612dc3565b965050602061350d89828a01612dc3565b955050604087013567ffffffffffffffff81111561352a57600080fd5b61353689828a016131f9565b945050606087013567ffffffffffffffff81111561355357600080fd5b61355f89828a016130d9565b935050608087013567ffffffffffffffff81111561357c57600080fd5b61358889828a01612f45565b92505060a087013567ffffffffffffffff8111156135a557600080fd5b6135b189828a01612f45565b9150509295509295509295565b6000602082840312156135d057600080fd5b600082015167ffffffffffffffff8111156135ea57600080fd5b6135f684828501612e41565b91505092915050565b60006080828403121561361157600080fd5b600061361f84828501613311565b91505092915050565b60006020828403121561363a57600080fd5b600061364884828501613385565b91505092915050565b60006020828403121561366357600080fd5b60006136718482850161339a565b91505092915050565b600080600080600060a0868803121561369257600080fd5b60006136a088828901613385565b955050602086013567ffffffffffffffff8111156136bd57600080fd5b6136c988828901612d3a565b945050604086013567ffffffffffffffff8111156136e657600080fd5b6136f288828901612c52565b935050606086013567ffffffffffffffff81111561370f57600080fd5b61371b88828901612cc6565b925050608086013567ffffffffffffffff81111561373857600080fd5b61374488828901612c52565b9150509295509295909350565b60006020828403121561376357600080fd5b6000613771848285016133c4565b91505092915050565b60006137868383613932565b60208301905092915050565b600061379f84848461395f565b90509392505050565b60006137b483836139c5565b905092915050565b6137c581614bb0565b82525050565b6137d481614b2f565b82525050565b60006137e582614a03565b6137ef8185614a61565b93506137fa836149d9565b8060005b8381101561382b578151613812888261377a565b975061381d83614a3a565b9250506001810190506137fe565b5085935050505092915050565b60006138448385614a72565b935083602084028501613856846149e9565b8060005b8781101561389c5784840389526138718284614ad8565b61387c868284613792565b955061388784614a47565b935060208b019a50505060018101905061385a565b50829750879450505050509392505050565b60006138b982614a0e565b6138c38185614a72565b9350836020820285016138d5856149f3565b8060005b8581101561391157848403895281516138f285826137a8565b94506138fd83614a54565b925060208a019950506001810190506138d9565b50829750879550505050505092915050565b61392c81614b53565b82525050565b61393b81614b5f565b82525050565b61394a81614b5f565b82525050565b61395981614b5f565b82525050565b600061396b8385614a83565b9350613978838584614cf4565b61398183614d36565b840190509392505050565b600061399782614a24565b6139a18185614a94565b93506139b1818560208601614d03565b6139ba81614d36565b840191505092915050565b60006139d082614a19565b6139da8185614a83565b93506139ea818560208601614d03565b6139f381614d36565b840191505092915050565b6000613a0982614a19565b613a138185614a94565b9350613a23818560208601614d03565b613a2c81614d36565b840191505092915050565b6000613a4282614a19565b613a4c8185614aa5565b9350613a5c818560208601614d03565b613a6581614d36565b840191505092915050565b6000613a7b82614a19565b613a858185614ab6565b9350613a95818560208601614d03565b613a9e81614d36565b840191505092915050565b613ab281614bc2565b82525050565b613ac181614be6565b82525050565b613ad081614c0a565b82525050565b613adf81614c2e565b82525050565b613aee81614c52565b82525050565b613afd81614c76565b82525050565b613b0c81614c9a565b82525050565b6000613b1d82614a2f565b613b278185614ac7565b9350613b37818560208601614d03565b613b4081614d36565b840191505092915050565b6000613b58602e83614ac7565b91507f426174636820636f6e7461696e73206d6f7265207472616e736174696f6e732060008301527f7468616e20746865206c696d69740000000000000000000000000000000000006020830152604082019050919050565b6000613bbe602883614ac7565b91507f426174636820646f65736e74206578697374206f7220697320736c617368656460008301527f20616c72656164790000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c24601b83614ac7565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613c64602683614ac7565b91507f496e76616c696420646973707574652c20747820726f6f7420646f65736e277460008301527f206d6174636800000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cca603083614ac7565b91507f596f7520617265206e6f742074686520636f727265637420636f6d6d6974746560008301527f7220666f722074686973206261746368000000000000000000000000000000006020830152604082019050919050565b6000613d30603183614ac7565b91507f54686973206261746368206973206e6f74207965742066696e616c697365642c60008301527f20636865636b206261636b20736f6f6e210000000000000000000000000000006020830152604082019050919050565b6000613d96601783614ac7565b91507f426174636820616c72656164792066696e616c697365640000000000000000006000830152602082019050919050565b6000613dd6601a83614ac7565b91507f546865205044412070726f6f6620697320696e636f72726563740000000000006000830152602082019050919050565b6000613e16602683614ac7565b91507f506c656173652073656e6420333220657468207769746820626174636820617360008301527f207374616b6500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e7c602783614ac7565b91507f4d65726b6c652050726f6f6620666f722066726f6d206c65616620697320696e60008301527f636f7272656374000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ee2603383614ac7565b91507f416c7265616479207375636365737366756c6c792064697370757465642e205260008301527f6f6c6c206261636b20696e2070726f63657373000000000000000000000000006020830152604082019050919050565b6000613f48601683614ac7565b91507f5369676e617475726520697320696e636f7272656374000000000000000000006000830152602082019050919050565b6000613f88603983614ac7565b91507f5075626b6579206e6f742072656c6174656420746f207468652066726f6d206160008301527f63636f756e7420696e20746865207472616e73616374696f6e000000000000006020830152604082019050919050565b600061016083016000830151613ffa600086018261417f565b50602083015161400d608086018261417f565b5060408301516140216101008601826141f2565b506060830151614035610120860182614201565b50608083015184820361014086015261404e8282613a70565b9150508091505092915050565b600061016083016000830151614074600086018261417f565b506020830151614087608086018261417f565b50604083015161409b6101008601826141f2565b5060608301516140af610120860182614201565b5060808301518482036101408601526140c88282613a70565b9150508091505092915050565b6080820160008201516140eb60008501826141f2565b5060208201516140fe60208501826141f2565b50604082015161411160408501826141f2565b50606082015161412460608501826141f2565b50505050565b60808201600082015161414060008501826141f2565b50602082015161415360208501826141f2565b50604082015161416660408501826141f2565b50606082015161417960608501826141f2565b50505050565b60808201600082015161419560008501826141f2565b5060208201516141a860208501826141f2565b5060408201516141bb60408501826141f2565b5060608201516141ce60608501826141f2565b50505050565b6141dd81614b89565b82525050565b6141ec81614b89565b82525050565b6141fb81614b89565b82525050565b61420a81614b93565b82525050565b61421981614ce2565b82525050565b600060608201905061423460008301866137bc565b61424160208301856141d4565b61424e60408301846141d4565b949350505050565b600060808201905061426b60008301876137cb565b6142786020830186613941565b6142856040830185613941565b61429260608301846141d4565b95945050505050565b600060208201905081810360008301526142b6818486613838565b90509392505050565b600060208201905081810360008301526142d981846138ae565b905092915050565b600060e0820190506142f6600083018a613941565b6143036020830189613941565b61431060408301886137cb565b61431d6060830187613941565b61432a60808301866141d4565b61433760a08301856141d4565b61434460c08301846141d4565b98975050505050505050565b60006040820190506143656000830185613950565b81810360208301526143778184613a37565b90509392505050565b60006080820190506143956000830187613941565b81810360208301526143a7818661398c565b90506143b660408301856141d4565b81810360608301526143c881846137da565b905095945050505050565b60006080820190506143e86000830187613941565b81810360208301526143fa81866139fe565b905061440960408301856141d4565b818103606083015261441b81846137da565b905095945050505050565b600060608201905061443b6000830186613941565b61444860208301856141d4565b818103604083015261445a81846137da565b9050949350505050565b60006080820190506144796000830187613941565b61448660208301866141d4565b61449360408301856141d4565b6144a06060830184613923565b95945050505050565b600060208201905081810360008301526144c38184613a37565b905092915050565b600060408201905081810360008301526144e5818561398c565b90506144f460208301846141d4565b9392505050565b60006020820190506145106000830184613aa9565b92915050565b600060208201905061452b6000830184613ab8565b92915050565b60006020820190506145466000830184613ac7565b92915050565b60006020820190506145616000830184613ad6565b92915050565b600060208201905061457c6000830184613ae5565b92915050565b60006020820190506145976000830184613af4565b92915050565b60006020820190506145b26000830184613b03565b92915050565b600060208201905081810360008301526145d28184613b12565b905092915050565b600060208201905081810360008301526145f381613b4b565b9050919050565b6000602082019050818103600083015261461381613bb1565b9050919050565b6000602082019050818103600083015261463381613c17565b9050919050565b6000602082019050818103600083015261465381613c57565b9050919050565b6000602082019050818103600083015261467381613cbd565b9050919050565b6000602082019050818103600083015261469381613d23565b9050919050565b600060208201905081810360008301526146b381613d89565b9050919050565b600060208201905081810360008301526146d381613dc9565b9050919050565b600060208201905081810360008301526146f381613e09565b9050919050565b6000602082019050818103600083015261471381613e6f565b9050919050565b6000602082019050818103600083015261473381613ed5565b9050919050565b6000602082019050818103600083015261475381613f3b565b9050919050565b6000602082019050818103600083015261477381613f7b565b9050919050565b60006020820190508181036000830152614794818461405b565b905092915050565b600060208201905081810360008301526147b68184613fe1565b905092915050565b60006080820190506147d3600083018461412a565b92915050565b60006080820190506147ee60008301846140d5565b92915050565b600060a082019050614809600083018561412a565b61481660808301846141e3565b9392505050565b600060208201905061483260008301846141d4565b92915050565b600060a08201905061484d60008301886141d4565b61485a60208301876137cb565b6148676040830186613941565b6148746060830185613941565b61488160808301846141d4565b9695505050505050565b60006040820190506148a060008301856141d4565b6148ad6020830184614210565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156148d757600080fd5b8060405250919050565b600067ffffffffffffffff8211156148f857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561492057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561494857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561497057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561499857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156149c457600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60008083356001602003843603038112614af157600080fd5b83810192508235915060208301925067ffffffffffffffff821115614b1557600080fd5b600182023603841315614b2757600080fd5b509250929050565b6000614b3a82614b69565b9050919050565b6000614b4c82614b69565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000614bbb82614cbe565b9050919050565b6000614bcd82614bd4565b9050919050565b6000614bdf82614b69565b9050919050565b6000614bf182614bf8565b9050919050565b6000614c0382614b69565b9050919050565b6000614c1582614c1c565b9050919050565b6000614c2782614b69565b9050919050565b6000614c3982614c40565b9050919050565b6000614c4b82614b69565b9050919050565b6000614c5d82614c64565b9050919050565b6000614c6f82614b69565b9050919050565b6000614c8182614c88565b9050919050565b6000614c9382614b69565b9050919050565b6000614ca582614cac565b9050919050565b6000614cb782614b69565b9050919050565b6000614cc982614cd0565b9050919050565b6000614cdb82614b69565b9050919050565b6000614ced82614ba3565b9050919050565b82818337600083830152505050565b60005b83811015614d21578082015181840152602081019050614d06565b83811115614d30576000848401525b50505050565b6000601f19601f8301169050919050565b614d5081614b2f565b8114614d5b57600080fd5b50565b614d6781614b41565b8114614d7257600080fd5b50565b614d7e81614b53565b8114614d8957600080fd5b50565b614d9581614b5f565b8114614da057600080fd5b50565b614dac81614b89565b8114614db757600080fd5b50565b614dc381614b93565b8114614dce57600080fd5b50565b614dda81614ba3565b8114614de557600080fd5b5056fea365627a7a72315820eca607656161544afb07e3e3ac7ed67fe7673212b0e17c7e5117f262b9a1578a6c6578706572696d656e74616cf564736f6c634300050f0040", + "deployedBytecode": "0x6080604052600436106100c25760003560e01c8063ae2926d41161007f578063defd34e311610059578063defd34e314610268578063df07098314610291578063f24ccbfe146102a8578063ff34585d146102d3576100c2565b8063ae2926d4146101cf578063b2692d77146101fa578063b32c4d8d14610225576100c2565b80630e981757146100c75780634643dde4146100e357806347b0f08e146101235780634eb7221a1461014e57806355a373d6146101795780639d23c4c7146101a4575b600080fd5b6100e160048036036100dc919081019061342b565b6102fc565b005b3480156100ef57600080fd5b5061010a600480360361010591908101906134d5565b6108da565b60405161011a9493929190614464565b60405180910390f35b34801561012f57600080fd5b50610138611c34565b6040516101459190614567565b60405180910390f35b34801561015a57600080fd5b50610163611c5a565b6040516101709190614582565b60405180910390f35b34801561018557600080fd5b5061018e611c80565b60405161019b91906144fb565b60405180910390f35b3480156101b057600080fd5b506101b9611ca6565b6040516101c69190614516565b60405180910390f35b3480156101db57600080fd5b506101e4611ccc565b6040516101f19190614531565b60405180910390f35b34801561020657600080fd5b5061020f611cf2565b60405161021c919061459d565b60405180910390f35b34801561023157600080fd5b5061024c60048036036102479190810190613628565b611d18565b60405161025f97969594939291906142e1565b60405180910390f35b34801561027457600080fd5b5061028f600480360361028a919081019061367a565b611d87565b005b34801561029d57600080fd5b506102a66121c0565b005b3480156102b457600080fd5b506102bd6126b1565b6040516102ca919061454c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036036102f59190810190613628565b6126d7565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461035257fe5b60006009541461035e57fe5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63faf5625f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a257600080fd5b505af41580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103da9190810190613651565b341461041b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610412906146da565b60405180910390fd5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b15801561045f57600080fd5b505af4158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104979190810190613651565b83839050505073__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e157600080fd5b505af41580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105199190810190613651565b83839050111561055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906145da565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef85856040518363ffffffff1660e01b81526004016105bd92919061429b565b602060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060f91908101906134ac565b9050610619612a2f565b6040518060e00160405280848152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389c09d386040518163ffffffff1660e01b815260040160206040518083038186803b15801561069257600080fd5b505afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ca91908101906134ac565b81526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200134815260200173__$b941c30c0f5422d8b714f571f17d94a5fd$__635d4cbd0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107739190810190613651565b4301815260200142815250905060078190806001815401808255809150509060018203906000526020600020906007020160009091929091909150600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060155505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cea4592f826040015184866001600780549050036040518563ffffffff1660e01b81526004016108a19493929190614256565b600060405180830381600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050505050505050565b600080600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768a896000015160200151600001518a60000151600001518b602001516040518563ffffffff1660e01b815260040161095994939291906143d3565b60206040518083038186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a99190810190613483565b6109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906146ba565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166325ab625e89600001516000015173__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7557600080fd5b505af4158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aad9190810190613751565b6040518363ffffffff1660e01b8152600401610aca92919061488b565b60206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1a9190810190613651565b90508860000151600001518114610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d9061475a565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63ae97e1bf8a6040518263ffffffff1660e01b8152600401610b9d919061479c565b60206040518083038186803b158015610bb557600080fd5b505af4158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bed91908101906134ac565b73__$11f233442b4eefbe29cf56a2c2d703f84d$__6377d32e9490918b608001516040518363ffffffff1660e01b8152600401610c2b929190614350565b60206040518083038186803b158015610c4357600080fd5b505af4158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b91908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e8a6000015160200151600001516040518263ffffffff1660e01b8152600401610cd491906144a9565b60206040518083038186803b158015610cec57600080fd5b505af4158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d2491908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d719061473a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea8b604001516040518263ffffffff1660e01b8152600401610df1919061481d565b60206040518083038186803b158015610e0957600080fd5b505afa158015610e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4191908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff161415610ef25773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505af4158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed991908101906134ac565b6000806000829250819150945094509450945050611c27565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768c73__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8d600001516040518263ffffffff1660e01b8152600401610f6c91906147be565b60006040518083038186803b158015610f8457600080fd5b505af4158015610f98573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610fc191908101906135be565b8a60000151600001518b602001516040518563ffffffff1660e01b8152600401610fee9493929190614380565b60206040518083038186803b15801561100657600080fd5b505afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061103e9190810190613483565b61107d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611074906146fa565b60405180910390fd5b6000896060015163ffffffff1610156111255773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505af41580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061110c91908101906134ac565b6000806000829250819150945094509450945050611c27565b886060015163ffffffff168760000151602001516040015110156111d85773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561118757600080fd5b505af415801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111bf91908101906134ac565b6000806000829250819150945094509450945050611c27565b886040015187600001516020015160200151146112845773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505af4158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126b91908101906134ac565b6000806000829250819150945094509450945050611c27565b61128c612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__631229626389600001516020015161135a8d6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8e60000151602001516040518263ffffffff1660e01b81526004016112fc91906147be565b60206040518083038186803b15801561131457600080fd5b505af4158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134c9190810190613651565b61293590919063ffffffff16565b6040518363ffffffff1660e01b81526004016113779291906147f4565b60806040518083038186803b15801561138f57600080fd5b505af41580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906135ff565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e856040518263ffffffff1660e01b815260040161144091906147d9565b60006040518083038186803b15801561145857600080fd5b505af415801561146c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061149591908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b81526004016114c893929190614426565b60206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061151891908101906134ac565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768273__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8f602001516040518263ffffffff1660e01b815260040161159491906147be565b60006040518083038186803b1580156115ac57600080fd5b505af41580156115c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506115e991908101906135be565b8b60000151600001518c602001516040518563ffffffff1660e01b81526004016116169493929190614380565b60206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116669190810190613483565b6116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906146fa565b60405180910390fd5b8a6040015188600001516020015160200151146117535773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561170057600080fd5b505af4158015611714573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173891908101906134ac565b60008060008292508191509650965096509650505050611c27565b61175b612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63122962638a60000151602001516118298f6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8f60000151602001516040518263ffffffff1660e01b81526004016117cb91906147be565b60206040518083038186803b1580156117e357600080fd5b505af41580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061181b9190810190613651565b61297f90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118469291906147f4565b60806040518083038186803b15801561185e57600080fd5b505af4158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061189691908101906135ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3b4523473__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b815260040161190d91906147d9565b60006040518083038186803b15801561192557600080fd5b505af4158015611939573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061196291908101906135be565b8b60000151600001516040518363ffffffff1660e01b81526004016119889291906144cb565b600060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b8152600401611a2f91906147d9565b60006040518083038186803b158015611a4757600080fd5b505af4158015611a5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611a8491908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b8152600401611ab793929190614426565b60206040518083038186803b158015611acf57600080fd5b505afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b0791908101906134ac565b91508173__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd856040518263ffffffff1660e01b8152600401611b4191906147d9565b60206040518083038186803b158015611b5957600080fd5b505af4158015611b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b919190810190613651565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd846040518263ffffffff1660e01b8152600401611bc891906147d9565b60206040518083038186803b158015611be057600080fd5b505af4158015611bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c189190810190613651565b60019750975097509750505050505b9650965096509692505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078181548110611d2557fe5b90600052602060002090600702016000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154905087565b600060078681548110611d9657fe5b9060005260206000209060070201600401541415611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de0906145fa565b60405180910390fd5b60078581548110611df657fe5b9060005260206000209060070201600501544310611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e409061469a565b60405180910390fd5b6009548510611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e849061471a565b60405180910390fd5b606060008090505b8551811015611f615773__$a6b8846b3184b62d6aec39d1f36e30dab3$__63dbcbdf9f878381518110611ec457fe5b60200260200101516040518263ffffffff1660e01b8152600401611ee8919061477a565b60006040518083038186803b158015611f0057600080fd5b505af4158015611f14573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611f3d91908101906135be565b828281518110611f4957fe5b60200260200101819052508080600101915050611e95565b506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef836040518263ffffffff1660e01b8152600401611fbf91906142bf565b602060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061201191908101906134ac565b90506007878154811061202057fe5b906000526020600020906007020160030154811415612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9061463a565b60405180910390fd5b600080600080600080905060008090505b8b5181101561214f5761212460078e8154811061209e57fe5b90600052602060002090600702016000015460078f815481106120bd57fe5b9060005260206000209060070201600101548e84815181106120db57fe5b60200260200101518d85815181106120ef57fe5b60200260200101518f868151811061210357fe5b60200260200101518e878151811061211757fe5b60200260200101516108da565b8096508197508298508399505050505082612142576001915061214f565b8080600101915050612085565b508015612171578b6009819055506121656121c0565b505050505050506121b9565b60078c8154811061217e57fe5b90600052602060002090600702016000015485146121b1578b6009819055506121a56121c0565b505050505050506121b9565b505050505050505b5050505050565b6000600954116121cc57fe5b600080905060008090506000809050600060016007805490500390505b60095481106124d45773__$b941c30c0f5422d8b714f571f17d94a5fd$__63106e99216040518163ffffffff1660e01b815260040160206040518083038186803b15801561223657600080fd5b505af415801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061226e9190810190613651565b5a11612279576124d4565b60095481141561228c5760006009819055505b612294612a2f565b600782815481106122a157fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050600360028260800151028161235f57fe5b048501945061237b85826080015161293590919063ffffffff16565b8401935060006007838154811061238e57fe5b906000526020600020906007020160040181905550600782815481106123b057fe5b906000526020600020906007020160008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550508280600101935050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4ba86b38383604001518460000151856060015186608001516040518663ffffffff1660e01b8152600401612493959493929190614838565b600060405180830381600087803b1580156124ad57600080fd5b505af11580156124c1573d6000803e3d6000fd5b50505050508080600190039150506121e9565b503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561251b573d6000803e3d6000fd5b50600073__$b941c30c0f5422d8b714f571f17d94a5fd$__63fccc28136040518163ffffffff1660e01b815260040160206040518083038186803b15801561256257600080fd5b505af4158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061259a9190810190613402565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156125e2573d6000803e3d6000fd5b506126106125fc600160095461293590919063ffffffff16565b60078054905061293590919063ffffffff16565b60078161261d9190612ab3565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aeedf0c7836040518263ffffffff1660e01b8152600401612679919061481d565b600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b5050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126df612a2f565b600782815481106126ec57fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128029061465a565b60405180910390fd5b8060a001514311612851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128489061467a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc82608001519081150290604051600060405180830381858888f1935050505015801561289b573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54404ae338360800151856040518463ffffffff1660e01b81526004016128ff9392919061421f565b600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b505050505050565b600061297783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129d4565b905092915050565b6000808284019050838110156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c19061461a565b60405180910390fd5b8091505092915050565b6000838311158290612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1391906145b8565b60405180910390fd5b5060008385039050809150509392505050565b6040518060e001604052806000801916815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b815481835581811115612ae057600702816007028360005260206000209182019101612adf9190612ae5565b5b505050565b612b5891905b80821115612b545760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550600701612aeb565b5090565b90565b600081519050612b6a81614d47565b92915050565b600081519050612b7f81614d5e565b92915050565b600082601f830112612b9657600080fd5b8135612ba9612ba4826148e1565b6148b4565b91508181835260208401935060208101905083856020840282011115612bce57600080fd5b60005b83811015612bfe5781612be48882612dc3565b845260208401935060208301925050600181019050612bd1565b5050505092915050565b60008083601f840112612c1a57600080fd5b8235905067ffffffffffffffff811115612c3357600080fd5b602083019150836020820283011115612c4b57600080fd5b9250929050565b600082601f830112612c6357600080fd5b8135612c76612c7182614909565b6148b4565b9150818183526020840193506020810190508360005b83811015612cbc5781358601612ca28882612ee1565b845260208401935060208301925050600181019050612c8c565b5050505092915050565b600082601f830112612cd757600080fd5b8135612cea612ce582614931565b6148b4565b9150818183526020840193506020810190508360005b83811015612d305781358601612d16888261305d565b845260208401935060208301925050600181019050612d00565b5050505092915050565b600082601f830112612d4b57600080fd5b8135612d5e612d5982614959565b6148b4565b9150818183526020840193506020810190508360005b83811015612da45781358601612d8a8882613155565b845260208401935060208301925050600181019050612d74565b5050505092915050565b600081519050612dbd81614d75565b92915050565b600081359050612dd281614d8c565b92915050565b600081519050612de781614d8c565b92915050565b600082601f830112612dfe57600080fd5b8135612e11612e0c82614981565b6148b4565b91508082526020830160208301858383011115612e2d57600080fd5b612e38838284614cf4565b50505092915050565b600082601f830112612e5257600080fd5b8151612e65612e60826149ad565b6148b4565b91508082526020830160208301858383011115612e8157600080fd5b612e8c838284614d03565b50505092915050565b600060a08284031215612ea757600080fd5b612eb160406148b4565b90506000612ec184828501613385565b6000830152506020612ed58482850161329d565b60208301525092915050565b600060c08284031215612ef357600080fd5b612efd60406148b4565b90506000612f0d84828501612e95565b60008301525060a082013567ffffffffffffffff811115612f2d57600080fd5b612f3984828501612b85565b60208301525092915050565b600060c08284031215612f5757600080fd5b612f6160406148b4565b90506000612f7184828501612e95565b60008301525060a082013567ffffffffffffffff811115612f9157600080fd5b612f9d84828501612b85565b60208301525092915050565b600060408284031215612fbb57600080fd5b612fc560406148b4565b90506000612fd584828501613385565b600083015250602082013567ffffffffffffffff811115612ff557600080fd5b6130018482850161300d565b60208301525092915050565b60006020828403121561301f57600080fd5b61302960206148b4565b9050600082013567ffffffffffffffff81111561304557600080fd5b61305184828501612ded565b60008301525092915050565b60006040828403121561306f57600080fd5b61307960406148b4565b9050600082013567ffffffffffffffff81111561309557600080fd5b6130a184828501612fa9565b600083015250602082013567ffffffffffffffff8111156130c157600080fd5b6130cd84828501612b85565b60208301525092915050565b6000604082840312156130eb57600080fd5b6130f560406148b4565b9050600082013567ffffffffffffffff81111561311157600080fd5b61311d84828501612fa9565b600083015250602082013567ffffffffffffffff81111561313d57600080fd5b61314984828501612b85565b60208301525092915050565b6000610160828403121561316857600080fd5b61317260a06148b4565b905060006131828482850161329d565b60008301525060806131968482850161329d565b6020830152506101006131ab84828501613385565b6040830152506101206131c0848285016133af565b60608301525061014082013567ffffffffffffffff8111156131e157600080fd5b6131ed84828501612ded565b60808301525092915050565b6000610160828403121561320c57600080fd5b61321660a06148b4565b905060006132268482850161329d565b600083015250608061323a8482850161329d565b60208301525061010061324f84828501613385565b604083015250610120613264848285016133af565b60608301525061014082013567ffffffffffffffff81111561328557600080fd5b61329184828501612ded565b60808301525092915050565b6000608082840312156132af57600080fd5b6132b960806148b4565b905060006132c984828501613385565b60008301525060206132dd84828501613385565b60208301525060406132f184828501613385565b604083015250606061330584828501613385565b60608301525092915050565b60006080828403121561332357600080fd5b61332d60806148b4565b9050600061333d8482850161339a565b60008301525060206133518482850161339a565b60208301525060406133658482850161339a565b60408301525060606133798482850161339a565b60608301525092915050565b60008135905061339481614da3565b92915050565b6000815190506133a981614da3565b92915050565b6000813590506133be81614dba565b92915050565b6000815190506133d381614dd1565b92915050565b6000602082840312156133eb57600080fd5b60006133f984828501612b5b565b91505092915050565b60006020828403121561341457600080fd5b600061342284828501612b70565b91505092915050565b60008060006040848603121561344057600080fd5b600084013567ffffffffffffffff81111561345a57600080fd5b61346686828701612c08565b9350935050602061347986828701612dc3565b9150509250925092565b60006020828403121561349557600080fd5b60006134a384828501612dae565b91505092915050565b6000602082840312156134be57600080fd5b60006134cc84828501612dd8565b91505092915050565b60008060008060008060c087890312156134ee57600080fd5b60006134fc89828a01612dc3565b965050602061350d89828a01612dc3565b955050604087013567ffffffffffffffff81111561352a57600080fd5b61353689828a016131f9565b945050606087013567ffffffffffffffff81111561355357600080fd5b61355f89828a016130d9565b935050608087013567ffffffffffffffff81111561357c57600080fd5b61358889828a01612f45565b92505060a087013567ffffffffffffffff8111156135a557600080fd5b6135b189828a01612f45565b9150509295509295509295565b6000602082840312156135d057600080fd5b600082015167ffffffffffffffff8111156135ea57600080fd5b6135f684828501612e41565b91505092915050565b60006080828403121561361157600080fd5b600061361f84828501613311565b91505092915050565b60006020828403121561363a57600080fd5b600061364884828501613385565b91505092915050565b60006020828403121561366357600080fd5b60006136718482850161339a565b91505092915050565b600080600080600060a0868803121561369257600080fd5b60006136a088828901613385565b955050602086013567ffffffffffffffff8111156136bd57600080fd5b6136c988828901612d3a565b945050604086013567ffffffffffffffff8111156136e657600080fd5b6136f288828901612c52565b935050606086013567ffffffffffffffff81111561370f57600080fd5b61371b88828901612cc6565b925050608086013567ffffffffffffffff81111561373857600080fd5b61374488828901612c52565b9150509295509295909350565b60006020828403121561376357600080fd5b6000613771848285016133c4565b91505092915050565b60006137868383613932565b60208301905092915050565b600061379f84848461395f565b90509392505050565b60006137b483836139c5565b905092915050565b6137c581614bb0565b82525050565b6137d481614b2f565b82525050565b60006137e582614a03565b6137ef8185614a61565b93506137fa836149d9565b8060005b8381101561382b578151613812888261377a565b975061381d83614a3a565b9250506001810190506137fe565b5085935050505092915050565b60006138448385614a72565b935083602084028501613856846149e9565b8060005b8781101561389c5784840389526138718284614ad8565b61387c868284613792565b955061388784614a47565b935060208b019a50505060018101905061385a565b50829750879450505050509392505050565b60006138b982614a0e565b6138c38185614a72565b9350836020820285016138d5856149f3565b8060005b8581101561391157848403895281516138f285826137a8565b94506138fd83614a54565b925060208a019950506001810190506138d9565b50829750879550505050505092915050565b61392c81614b53565b82525050565b61393b81614b5f565b82525050565b61394a81614b5f565b82525050565b61395981614b5f565b82525050565b600061396b8385614a83565b9350613978838584614cf4565b61398183614d36565b840190509392505050565b600061399782614a24565b6139a18185614a94565b93506139b1818560208601614d03565b6139ba81614d36565b840191505092915050565b60006139d082614a19565b6139da8185614a83565b93506139ea818560208601614d03565b6139f381614d36565b840191505092915050565b6000613a0982614a19565b613a138185614a94565b9350613a23818560208601614d03565b613a2c81614d36565b840191505092915050565b6000613a4282614a19565b613a4c8185614aa5565b9350613a5c818560208601614d03565b613a6581614d36565b840191505092915050565b6000613a7b82614a19565b613a858185614ab6565b9350613a95818560208601614d03565b613a9e81614d36565b840191505092915050565b613ab281614bc2565b82525050565b613ac181614be6565b82525050565b613ad081614c0a565b82525050565b613adf81614c2e565b82525050565b613aee81614c52565b82525050565b613afd81614c76565b82525050565b613b0c81614c9a565b82525050565b6000613b1d82614a2f565b613b278185614ac7565b9350613b37818560208601614d03565b613b4081614d36565b840191505092915050565b6000613b58602e83614ac7565b91507f426174636820636f6e7461696e73206d6f7265207472616e736174696f6e732060008301527f7468616e20746865206c696d69740000000000000000000000000000000000006020830152604082019050919050565b6000613bbe602883614ac7565b91507f426174636820646f65736e74206578697374206f7220697320736c617368656460008301527f20616c72656164790000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c24601b83614ac7565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613c64602683614ac7565b91507f496e76616c696420646973707574652c20747820726f6f7420646f65736e277460008301527f206d6174636800000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cca603083614ac7565b91507f596f7520617265206e6f742074686520636f727265637420636f6d6d6974746560008301527f7220666f722074686973206261746368000000000000000000000000000000006020830152604082019050919050565b6000613d30603183614ac7565b91507f54686973206261746368206973206e6f74207965742066696e616c697365642c60008301527f20636865636b206261636b20736f6f6e210000000000000000000000000000006020830152604082019050919050565b6000613d96601783614ac7565b91507f426174636820616c72656164792066696e616c697365640000000000000000006000830152602082019050919050565b6000613dd6601a83614ac7565b91507f546865205044412070726f6f6620697320696e636f72726563740000000000006000830152602082019050919050565b6000613e16602683614ac7565b91507f506c656173652073656e6420333220657468207769746820626174636820617360008301527f207374616b6500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e7c602783614ac7565b91507f4d65726b6c652050726f6f6620666f722066726f6d206c65616620697320696e60008301527f636f7272656374000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ee2603383614ac7565b91507f416c7265616479207375636365737366756c6c792064697370757465642e205260008301527f6f6c6c206261636b20696e2070726f63657373000000000000000000000000006020830152604082019050919050565b6000613f48601683614ac7565b91507f5369676e617475726520697320696e636f7272656374000000000000000000006000830152602082019050919050565b6000613f88603983614ac7565b91507f5075626b6579206e6f742072656c6174656420746f207468652066726f6d206160008301527f63636f756e7420696e20746865207472616e73616374696f6e000000000000006020830152604082019050919050565b600061016083016000830151613ffa600086018261417f565b50602083015161400d608086018261417f565b5060408301516140216101008601826141f2565b506060830151614035610120860182614201565b50608083015184820361014086015261404e8282613a70565b9150508091505092915050565b600061016083016000830151614074600086018261417f565b506020830151614087608086018261417f565b50604083015161409b6101008601826141f2565b5060608301516140af610120860182614201565b5060808301518482036101408601526140c88282613a70565b9150508091505092915050565b6080820160008201516140eb60008501826141f2565b5060208201516140fe60208501826141f2565b50604082015161411160408501826141f2565b50606082015161412460608501826141f2565b50505050565b60808201600082015161414060008501826141f2565b50602082015161415360208501826141f2565b50604082015161416660408501826141f2565b50606082015161417960608501826141f2565b50505050565b60808201600082015161419560008501826141f2565b5060208201516141a860208501826141f2565b5060408201516141bb60408501826141f2565b5060608201516141ce60608501826141f2565b50505050565b6141dd81614b89565b82525050565b6141ec81614b89565b82525050565b6141fb81614b89565b82525050565b61420a81614b93565b82525050565b61421981614ce2565b82525050565b600060608201905061423460008301866137bc565b61424160208301856141d4565b61424e60408301846141d4565b949350505050565b600060808201905061426b60008301876137cb565b6142786020830186613941565b6142856040830185613941565b61429260608301846141d4565b95945050505050565b600060208201905081810360008301526142b6818486613838565b90509392505050565b600060208201905081810360008301526142d981846138ae565b905092915050565b600060e0820190506142f6600083018a613941565b6143036020830189613941565b61431060408301886137cb565b61431d6060830187613941565b61432a60808301866141d4565b61433760a08301856141d4565b61434460c08301846141d4565b98975050505050505050565b60006040820190506143656000830185613950565b81810360208301526143778184613a37565b90509392505050565b60006080820190506143956000830187613941565b81810360208301526143a7818661398c565b90506143b660408301856141d4565b81810360608301526143c881846137da565b905095945050505050565b60006080820190506143e86000830187613941565b81810360208301526143fa81866139fe565b905061440960408301856141d4565b818103606083015261441b81846137da565b905095945050505050565b600060608201905061443b6000830186613941565b61444860208301856141d4565b818103604083015261445a81846137da565b9050949350505050565b60006080820190506144796000830187613941565b61448660208301866141d4565b61449360408301856141d4565b6144a06060830184613923565b95945050505050565b600060208201905081810360008301526144c38184613a37565b905092915050565b600060408201905081810360008301526144e5818561398c565b90506144f460208301846141d4565b9392505050565b60006020820190506145106000830184613aa9565b92915050565b600060208201905061452b6000830184613ab8565b92915050565b60006020820190506145466000830184613ac7565b92915050565b60006020820190506145616000830184613ad6565b92915050565b600060208201905061457c6000830184613ae5565b92915050565b60006020820190506145976000830184613af4565b92915050565b60006020820190506145b26000830184613b03565b92915050565b600060208201905081810360008301526145d28184613b12565b905092915050565b600060208201905081810360008301526145f381613b4b565b9050919050565b6000602082019050818103600083015261461381613bb1565b9050919050565b6000602082019050818103600083015261463381613c17565b9050919050565b6000602082019050818103600083015261465381613c57565b9050919050565b6000602082019050818103600083015261467381613cbd565b9050919050565b6000602082019050818103600083015261469381613d23565b9050919050565b600060208201905081810360008301526146b381613d89565b9050919050565b600060208201905081810360008301526146d381613dc9565b9050919050565b600060208201905081810360008301526146f381613e09565b9050919050565b6000602082019050818103600083015261471381613e6f565b9050919050565b6000602082019050818103600083015261473381613ed5565b9050919050565b6000602082019050818103600083015261475381613f3b565b9050919050565b6000602082019050818103600083015261477381613f7b565b9050919050565b60006020820190508181036000830152614794818461405b565b905092915050565b600060208201905081810360008301526147b68184613fe1565b905092915050565b60006080820190506147d3600083018461412a565b92915050565b60006080820190506147ee60008301846140d5565b92915050565b600060a082019050614809600083018561412a565b61481660808301846141e3565b9392505050565b600060208201905061483260008301846141d4565b92915050565b600060a08201905061484d60008301886141d4565b61485a60208301876137cb565b6148676040830186613941565b6148746060830185613941565b61488160808301846141d4565b9695505050505050565b60006040820190506148a060008301856141d4565b6148ad6020830184614210565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156148d757600080fd5b8060405250919050565b600067ffffffffffffffff8211156148f857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561492057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561494857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561497057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561499857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156149c457600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60008083356001602003843603038112614af157600080fd5b83810192508235915060208301925067ffffffffffffffff821115614b1557600080fd5b600182023603841315614b2757600080fd5b509250929050565b6000614b3a82614b69565b9050919050565b6000614b4c82614b69565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000614bbb82614cbe565b9050919050565b6000614bcd82614bd4565b9050919050565b6000614bdf82614b69565b9050919050565b6000614bf182614bf8565b9050919050565b6000614c0382614b69565b9050919050565b6000614c1582614c1c565b9050919050565b6000614c2782614b69565b9050919050565b6000614c3982614c40565b9050919050565b6000614c4b82614b69565b9050919050565b6000614c5d82614c64565b9050919050565b6000614c6f82614b69565b9050919050565b6000614c8182614c88565b9050919050565b6000614c9382614b69565b9050919050565b6000614ca582614cac565b9050919050565b6000614cb782614b69565b9050919050565b6000614cc982614cd0565b9050919050565b6000614cdb82614b69565b9050919050565b6000614ced82614ba3565b9050919050565b82818337600083830152505050565b60005b83811015614d21578082015181840152602081019050614d06565b83811115614d30576000848401525b50505050565b6000601f19601f8301169050919050565b614d5081614b2f565b8114614d5b57600080fd5b50565b614d6781614b41565b8114614d7257600080fd5b50565b614d7e81614b53565b8114614d8957600080fd5b50565b614d9581614b5f565b8114614da057600080fd5b50565b614dac81614b89565b8114614db757600080fd5b50565b614dc381614b93565b8114614dce57600080fd5b50565b614dda81614ba3565b8114614de557600080fd5b5056fea365627a7a72315820eca607656161544afb07e3e3ac7ed67fe7673212b0e17c7e5117f262b9a1578a6c6578706572696d656e74616cf564736f6c634300050f0040", + "linkReferences": { + "contracts/libs/ECVerify.sol": { + "ECVerify": [ + { + "length": 20, + "start": 6467 + } + ] + }, + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 6 + }, + { + "length": 20, + "start": 390 + }, + { + "length": 20, + "start": 758 + }, + { + "length": 20, + "start": 1126 + }, + { + "length": 20, + "start": 1494 + }, + { + "length": 20, + "start": 1862 + }, + { + "length": 20, + "start": 2230 + }, + { + "length": 20, + "start": 4276 + }, + { + "length": 20, + "start": 4465 + }, + { + "length": 20, + "start": 4595 + }, + { + "length": 20, + "start": 5197 + }, + { + "length": 20, + "start": 6023 + }, + { + "length": 20, + "start": 7091 + }, + { + "length": 20, + "start": 7654 + }, + { + "length": 20, + "start": 7833 + }, + { + "length": 20, + "start": 8005 + }, + { + "length": 20, + "start": 9234 + }, + { + "length": 20, + "start": 12104 + }, + { + "length": 20, + "start": 12916 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 6332 + }, + { + "length": 20, + "start": 6631 + }, + { + "length": 20, + "start": 7303 + }, + { + "length": 20, + "start": 8162 + }, + { + "length": 20, + "start": 8211 + }, + { + "length": 20, + "start": 8543 + }, + { + "length": 20, + "start": 8879 + }, + { + "length": 20, + "start": 9393 + }, + { + "length": 20, + "start": 9442 + }, + { + "length": 20, + "start": 9772 + }, + { + "length": 20, + "start": 10062 + }, + { + "length": 20, + "start": 10336 + }, + { + "length": 20, + "start": 10471 + }, + { + "length": 20, + "start": 11252 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/libs/ECVerify.sol": { + "ECVerify": [ + { + "length": 20, + "start": 3055 + } + ] + }, + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 864 + }, + { + "length": 20, + "start": 1053 + }, + { + "length": 20, + "start": 1183 + }, + { + "length": 20, + "start": 1785 + }, + { + "length": 20, + "start": 2611 + }, + { + "length": 20, + "start": 3679 + }, + { + "length": 20, + "start": 4242 + }, + { + "length": 20, + "start": 4421 + }, + { + "length": 20, + "start": 4593 + }, + { + "length": 20, + "start": 5822 + }, + { + "length": 20, + "start": 8692 + }, + { + "length": 20, + "start": 9504 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 2920 + }, + { + "length": 20, + "start": 3219 + }, + { + "length": 20, + "start": 3891 + }, + { + "length": 20, + "start": 4750 + }, + { + "length": 20, + "start": 4799 + }, + { + "length": 20, + "start": 5131 + }, + { + "length": 20, + "start": 5467 + }, + { + "length": 20, + "start": 5981 + }, + { + "length": 20, + "start": 6030 + }, + { + "length": 20, + "start": 6360 + }, + { + "length": 20, + "start": 6650 + }, + { + "length": 20, + "start": 6924 + }, + { + "length": 20, + "start": 7059 + }, + { + "length": 20, + "start": 7840 + } + ] + } + } +} diff --git a/artifacts/RollupUtils.json b/artifacts/RollupUtils.json new file mode 100644 index 0000000..1ccbe66 --- /dev/null +++ b/artifacts/RollupUtils.json @@ -0,0 +1,441 @@ +{ + "contractName": "RollupUtils", + "abi": [ + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "name": "BalanceFromAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "name": "BytesFromAccount", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction", + "name": "_tx", + "type": "tuple" + } + ], + "name": "BytesFromTx", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "name": "HashFromAccount", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction", + "name": "_tx", + "type": "tuple" + } + ], + "name": "HashFromTx", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "internalType": "struct Types.PDALeaf", + "name": "_PDA_Leaf", + "type": "tuple" + } + ], + "name": "PDALeafToHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "original_account", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "new_balance", + "type": "uint256" + } + ], + "name": "UpdateBalanceInAccount", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "updated_account", + "type": "tuple" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "pub", + "type": "bytes" + } + ], + "name": "calculateAddress", + "outputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x610c5f610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c806361efb43e1161006557806361efb43e14610157578063ae97e1bf14610187578063dbcbdf9f146101b7578063e8a4c04e146101e757610092565b8063073568bd146100975780630d68f924146100c757806312296263146100f757806326b3285d14610127575b600080fd5b6100b160048036036100ac91908101906106c3565b610217565b6040516100be9190610a17565b60405180910390f35b6100e160048036036100dc91908101906106c3565b610225565b6040516100ee919061097b565b60405180910390f35b610111600480360361010c91908101906106ec565b61023e565b60405161011e91906109fc565b60405180910390f35b610141600480360361013c9190810190610641565b610259565b60405161014e919061097b565b60405180910390f35b610171600480360361016c91908101906106c3565b61028d565b60405161017e91906109b8565b60405180910390f35b6101a1600480360361019c9190810190610682565b6102cc565b6040516101ae919061097b565b60405180910390f35b6101d160048036036101cc9190810190610682565b6102e5565b6040516101de91906109b8565b60405180910390f35b61020160048036036101fc9190810190610600565b61030e565b60405161020e9190610960565b60405180910390f35b600081604001519050919050565b60006102308261028d565b805190602001209050919050565b61024661032a565b8183604001818152505082905092915050565b600081600001516040516020016102709190610996565b604051602081830303815290604052805190602001209050919050565b606081600001518260400151836060015184602001516040516020016102b69493929190610a32565b6040516020818303038152906040529050919050565b60006102d7826102e5565b805190602001209050919050565b6060816040516020016102f891906109da565b6040516020818303038152906040529050919050565b6000808280519060200120905080600052600051915050919050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600082601f83011261036357600080fd5b813561037661037182610aa4565b610a77565b9150808252602083016020830185838301111561039257600080fd5b61039d838284610b9b565b50505092915050565b600082601f8301126103b757600080fd5b81356103ca6103c582610ad0565b610a77565b915080825260208301602083018583830111156103e657600080fd5b6103f1838284610b9b565b50505092915050565b60006020828403121561040c57600080fd5b6104166020610a77565b9050600082013567ffffffffffffffff81111561043257600080fd5b61043e84828501610352565b60008301525092915050565b6000610160828403121561045d57600080fd5b61046760a0610a77565b90506000610477848285016104ee565b600083015250608061048b848285016104ee565b6020830152506101006104a0848285016105d6565b6040830152506101206104b5848285016105eb565b60608301525061014082013567ffffffffffffffff8111156104d657600080fd5b6104e284828501610352565b60808301525092915050565b60006080828403121561050057600080fd5b61050a6080610a77565b9050600061051a848285016105d6565b600083015250602061052e848285016105d6565b6020830152506040610542848285016105d6565b6040830152506060610556848285016105d6565b60608301525092915050565b60006080828403121561057457600080fd5b61057e6080610a77565b9050600061058e848285016105d6565b60008301525060206105a2848285016105d6565b60208301525060406105b6848285016105d6565b60408301525060606105ca848285016105d6565b60608301525092915050565b6000813590506105e581610bee565b92915050565b6000813590506105fa81610c05565b92915050565b60006020828403121561061257600080fd5b600082013567ffffffffffffffff81111561062c57600080fd5b610638848285016103a6565b91505092915050565b60006020828403121561065357600080fd5b600082013567ffffffffffffffff81111561066d57600080fd5b610679848285016103fa565b91505092915050565b60006020828403121561069457600080fd5b600082013567ffffffffffffffff8111156106ae57600080fd5b6106ba8482850161044a565b91505092915050565b6000608082840312156106d557600080fd5b60006106e384828501610562565b91505092915050565b60008060a083850312156106ff57600080fd5b600061070d85828601610562565b925050608061071e858286016105d6565b9150509250929050565b61073181610b45565b82525050565b61074081610b57565b82525050565b600061075182610b07565b61075b8185610b34565b935061076b818560208601610baa565b61077481610bdd565b840191505092915050565b600061078a82610afc565b6107948185610b12565b93506107a4818560208601610baa565b6107ad81610bdd565b840191505092915050565b60006107c382610afc565b6107cd8185610b23565b93506107dd818560208601610baa565b6107e681610bdd565b840191505092915050565b60006101608301600083015161080a60008601826108c0565b50602083015161081d60808601826108c0565b506040830151610831610100860182610915565b506060830151610845610120860182610951565b50608083015184820361014086015261085e828261077f565b9150508091505092915050565b6080820160008201516108816000850182610942565b5060208201516108946020850182610942565b5060408201516108a76040850182610942565b5060608201516108ba6060850182610942565b50505050565b6080820160008201516108d66000850182610915565b5060208201516108e96020850182610915565b5060408201516108fc6040850182610915565b50606082015161090f6060850182610915565b50505050565b61091e81610b81565b82525050565b61092d81610b81565b82525050565b61093c81610b81565b82525050565b61094b81610b81565b82525050565b61095a81610b8b565b82525050565b60006020820190506109756000830184610728565b92915050565b60006020820190506109906000830184610737565b92915050565b600060208201905081810360008301526109b081846107b8565b905092915050565b600060208201905081810360008301526109d28184610746565b905092915050565b600060208201905081810360008301526109f481846107f1565b905092915050565b6000608082019050610a11600083018461086b565b92915050565b6000602082019050610a2c6000830184610933565b92915050565b6000608082019050610a476000830187610924565b610a546020830186610924565b610a616040830185610924565b610a6e6060830184610924565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715610a9a57600080fd5b8060405250919050565b600067ffffffffffffffff821115610abb57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610ae757600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610b5082610b61565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015610bc8578082015181840152602081019050610bad565b83811115610bd7576000848401525b50505050565b6000601f19601f8301169050919050565b610bf781610b81565b8114610c0257600080fd5b50565b610c0e81610b8b565b8114610c1957600080fd5b5056fea365627a7a72315820d1ba011e41e9b19b42a7e7c9dbc80ef1dcf510f963f18d08ece559a7d69269eb6c6578706572696d656e74616cf564736f6c634300050f0040", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c806361efb43e1161006557806361efb43e14610157578063ae97e1bf14610187578063dbcbdf9f146101b7578063e8a4c04e146101e757610092565b8063073568bd146100975780630d68f924146100c757806312296263146100f757806326b3285d14610127575b600080fd5b6100b160048036036100ac91908101906106c3565b610217565b6040516100be9190610a17565b60405180910390f35b6100e160048036036100dc91908101906106c3565b610225565b6040516100ee919061097b565b60405180910390f35b610111600480360361010c91908101906106ec565b61023e565b60405161011e91906109fc565b60405180910390f35b610141600480360361013c9190810190610641565b610259565b60405161014e919061097b565b60405180910390f35b610171600480360361016c91908101906106c3565b61028d565b60405161017e91906109b8565b60405180910390f35b6101a1600480360361019c9190810190610682565b6102cc565b6040516101ae919061097b565b60405180910390f35b6101d160048036036101cc9190810190610682565b6102e5565b6040516101de91906109b8565b60405180910390f35b61020160048036036101fc9190810190610600565b61030e565b60405161020e9190610960565b60405180910390f35b600081604001519050919050565b60006102308261028d565b805190602001209050919050565b61024661032a565b8183604001818152505082905092915050565b600081600001516040516020016102709190610996565b604051602081830303815290604052805190602001209050919050565b606081600001518260400151836060015184602001516040516020016102b69493929190610a32565b6040516020818303038152906040529050919050565b60006102d7826102e5565b805190602001209050919050565b6060816040516020016102f891906109da565b6040516020818303038152906040529050919050565b6000808280519060200120905080600052600051915050919050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600082601f83011261036357600080fd5b813561037661037182610aa4565b610a77565b9150808252602083016020830185838301111561039257600080fd5b61039d838284610b9b565b50505092915050565b600082601f8301126103b757600080fd5b81356103ca6103c582610ad0565b610a77565b915080825260208301602083018583830111156103e657600080fd5b6103f1838284610b9b565b50505092915050565b60006020828403121561040c57600080fd5b6104166020610a77565b9050600082013567ffffffffffffffff81111561043257600080fd5b61043e84828501610352565b60008301525092915050565b6000610160828403121561045d57600080fd5b61046760a0610a77565b90506000610477848285016104ee565b600083015250608061048b848285016104ee565b6020830152506101006104a0848285016105d6565b6040830152506101206104b5848285016105eb565b60608301525061014082013567ffffffffffffffff8111156104d657600080fd5b6104e284828501610352565b60808301525092915050565b60006080828403121561050057600080fd5b61050a6080610a77565b9050600061051a848285016105d6565b600083015250602061052e848285016105d6565b6020830152506040610542848285016105d6565b6040830152506060610556848285016105d6565b60608301525092915050565b60006080828403121561057457600080fd5b61057e6080610a77565b9050600061058e848285016105d6565b60008301525060206105a2848285016105d6565b60208301525060406105b6848285016105d6565b60408301525060606105ca848285016105d6565b60608301525092915050565b6000813590506105e581610bee565b92915050565b6000813590506105fa81610c05565b92915050565b60006020828403121561061257600080fd5b600082013567ffffffffffffffff81111561062c57600080fd5b610638848285016103a6565b91505092915050565b60006020828403121561065357600080fd5b600082013567ffffffffffffffff81111561066d57600080fd5b610679848285016103fa565b91505092915050565b60006020828403121561069457600080fd5b600082013567ffffffffffffffff8111156106ae57600080fd5b6106ba8482850161044a565b91505092915050565b6000608082840312156106d557600080fd5b60006106e384828501610562565b91505092915050565b60008060a083850312156106ff57600080fd5b600061070d85828601610562565b925050608061071e858286016105d6565b9150509250929050565b61073181610b45565b82525050565b61074081610b57565b82525050565b600061075182610b07565b61075b8185610b34565b935061076b818560208601610baa565b61077481610bdd565b840191505092915050565b600061078a82610afc565b6107948185610b12565b93506107a4818560208601610baa565b6107ad81610bdd565b840191505092915050565b60006107c382610afc565b6107cd8185610b23565b93506107dd818560208601610baa565b6107e681610bdd565b840191505092915050565b60006101608301600083015161080a60008601826108c0565b50602083015161081d60808601826108c0565b506040830151610831610100860182610915565b506060830151610845610120860182610951565b50608083015184820361014086015261085e828261077f565b9150508091505092915050565b6080820160008201516108816000850182610942565b5060208201516108946020850182610942565b5060408201516108a76040850182610942565b5060608201516108ba6060850182610942565b50505050565b6080820160008201516108d66000850182610915565b5060208201516108e96020850182610915565b5060408201516108fc6040850182610915565b50606082015161090f6060850182610915565b50505050565b61091e81610b81565b82525050565b61092d81610b81565b82525050565b61093c81610b81565b82525050565b61094b81610b81565b82525050565b61095a81610b8b565b82525050565b60006020820190506109756000830184610728565b92915050565b60006020820190506109906000830184610737565b92915050565b600060208201905081810360008301526109b081846107b8565b905092915050565b600060208201905081810360008301526109d28184610746565b905092915050565b600060208201905081810360008301526109f481846107f1565b905092915050565b6000608082019050610a11600083018461086b565b92915050565b6000602082019050610a2c6000830184610933565b92915050565b6000608082019050610a476000830187610924565b610a546020830186610924565b610a616040830185610924565b610a6e6060830184610924565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715610a9a57600080fd5b8060405250919050565b600067ffffffffffffffff821115610abb57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610ae757600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610b5082610b61565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015610bc8578082015181840152602081019050610bad565b83811115610bd7576000848401525b50505050565b6000601f19601f8301169050919050565b610bf781610b81565b8114610c0257600080fd5b50565b610c0e81610b8b565b8114610c1957600080fd5b5056fea365627a7a72315820d1ba011e41e9b19b42a7e7c9dbc80ef1dcf510f963f18d08ece559a7d69269eb6c6578706572696d656e74616cf564736f6c634300050f0040", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/SafeMath.json b/artifacts/SafeMath.json new file mode 100644 index 0000000..20c4a76 --- /dev/null +++ b/artifacts/SafeMath.json @@ -0,0 +1,8 @@ +{ + "contractName": "SafeMath", + "abi": [], + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098533dd3d2e384cca3d2d7e19fcdfdcc0d8c48436013eb5204ba739726e9258664736f6c634300050f0032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098533dd3d2e384cca3d2d7e19fcdfdcc0d8c48436013eb5204ba739726e9258664736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/TestToken.json b/artifacts/TestToken.json new file mode 100644 index 0000000..e7b3c13 --- /dev/null +++ b/artifacts/TestToken.json @@ -0,0 +1,335 @@ +{ + "contractName": "TestToken", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060006100216100da60201b60201c565b905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100d53364174876e8006100e260201b60201c565b61032d565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61019e816002546102a560201b610fac1790919060201c565b6002819055506101f9816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546102a560201b610fac1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6112d6806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461028b5780638f32d59b146102d5578063a457c2d7146102f7578063a9059cbb1461035d578063dd62ed3e146103c3578063f2fde38b1461043b576100b4565b8063095ea7b3146100b957806318160ddd1461011f57806323b872dd1461013d57806339509351146101c357806370a0823114610229578063715018a614610281575b600080fd5b610105600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061047f565b604051808215151515815260200191505060405180910390f35b61012761049d565b6040518082815260200191505060405180910390f35b6101a96004803603606081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a7565b604051808215151515815260200191505060405180910390f35b61020f600480360360408110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610580565b604051808215151515815260200191505060405180910390f35b61026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610633565b6040518082815260200191505060405180910390f35b61028961067b565b005b6102936107b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102dd6107e0565b604051808215151515815260200191505060405180910390f35b6103436004803603604081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b6103a96004803603604081101561037357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090c565b604051808215151515815260200191505060405180910390f35b610425600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061092a565b6040518082815260200191505060405180910390f35b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b1565b005b600061049361048c610a37565b8484610a3f565b6001905092915050565b6000600254905090565b60006104b4848484610c36565b610575846104c0610a37565b6105708560405180606001604052806028815260200161120c60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610526610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b600190509392505050565b600061062961058d610a37565b84610624856001600061059e610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b610a3f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106836107e0565b6106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610823610a37565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600061090261084c610a37565b846108fd8560405180606001604052806025815260200161127d6025913960016000610876610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b6001905092915050565b6000610920610919610a37565b8484610c36565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109b96107e0565b610a2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610a3481611034565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112596024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c46022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112346025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061117b6023913960400191505060405180910390fd5b610dad816040518060600160405280602681526020016111e6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e40816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5e578082015181840152602081019050610f43565b50505050905090810190601f168015610f8b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061119e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820d6bbaa556343e26c9c32ce18d18f5a8842ee483c9656d2bb7c5f069a560e19cc64736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461028b5780638f32d59b146102d5578063a457c2d7146102f7578063a9059cbb1461035d578063dd62ed3e146103c3578063f2fde38b1461043b576100b4565b8063095ea7b3146100b957806318160ddd1461011f57806323b872dd1461013d57806339509351146101c357806370a0823114610229578063715018a614610281575b600080fd5b610105600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061047f565b604051808215151515815260200191505060405180910390f35b61012761049d565b6040518082815260200191505060405180910390f35b6101a96004803603606081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a7565b604051808215151515815260200191505060405180910390f35b61020f600480360360408110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610580565b604051808215151515815260200191505060405180910390f35b61026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610633565b6040518082815260200191505060405180910390f35b61028961067b565b005b6102936107b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102dd6107e0565b604051808215151515815260200191505060405180910390f35b6103436004803603604081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b6103a96004803603604081101561037357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090c565b604051808215151515815260200191505060405180910390f35b610425600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061092a565b6040518082815260200191505060405180910390f35b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b1565b005b600061049361048c610a37565b8484610a3f565b6001905092915050565b6000600254905090565b60006104b4848484610c36565b610575846104c0610a37565b6105708560405180606001604052806028815260200161120c60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610526610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b600190509392505050565b600061062961058d610a37565b84610624856001600061059e610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b610a3f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106836107e0565b6106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610823610a37565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600061090261084c610a37565b846108fd8560405180606001604052806025815260200161127d6025913960016000610876610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b6001905092915050565b6000610920610919610a37565b8484610c36565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109b96107e0565b610a2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610a3481611034565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112596024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c46022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112346025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061117b6023913960400191505060405180910390fd5b610dad816040518060600160405280602681526020016111e6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e40816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5e578082015181840152602081019050610f43565b50505050905090810190601f168015610f8b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061119e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820d6bbaa556343e26c9c32ce18d18f5a8842ee483c9656d2bb7c5f069a560e19cc64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/TokenRegistry.json b/artifacts/TokenRegistry.json new file mode 100644 index 0000000..dc4e7ba --- /dev/null +++ b/artifacts/TokenRegistry.json @@ -0,0 +1,177 @@ +{ + "contractName": "TokenRegistry", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "Coordinator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "finaliseTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "logger", + "outputs": [ + { + "internalType": "contract Logger", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "numTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pendingRegistrations", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "registeredTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "requestTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rollupNC", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032", + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 261 + } + ] + } + }, + "deployedLinkReferences": {} +} diff --git a/artifacts/Tree.json b/artifacts/Tree.json new file mode 100644 index 0000000..1b05110 --- /dev/null +++ b/artifacts/Tree.json @@ -0,0 +1,287 @@ +{ + "contractName": "Tree", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + } + ], + "name": "getChildren", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + } + ], + "name": "getSiblings", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_height", + "type": "uint256" + } + ], + "name": "setMerkleRootAndHeight", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "store", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "storeLeaf", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_leftChild", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_rightChild", + "type": "bytes32" + } + ], + "name": "storeNode", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tree", + "outputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + } + ], + "name": "update", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + } + ], + "name": "updateLeaf", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "verifyAndStore", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200136238038062001362833981810160405260208110156200003757600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010a57600080fd5b505af41580156200011f573d6000803e3d6000fd5b505050506040513d60208110156200013657600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156200017c57600080fd5b505afa15801562000191573d6000803e3d6000fd5b505050506040513d6020811015620001a857600080fd5b8101908080519060200190929190505050600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000355600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cb0a3436040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026657600080fd5b505afa1580156200027b573d6000803e3d6000fd5b505050506040513d60208110156200029257600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5f8e87b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030c57600080fd5b505afa15801562000321573d6000803e3d6000fd5b505050506040513d60208110156200033857600080fd5b81019080805190602001909291905050506200035c60201b60201c565b5062000374565b81600260000181905550806002600101819055505050565b610fde80620003846000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80635ca1e165116100715780635ca1e165146104a857806363327f89146104c65780639c0de52014610508578063c3b45234146105d4578063d37684ff14610699578063fd54b228146106e2576100b4565b8063101b166c146100b9578063158933ad1461013c578063272684b5146102955780634359356d146102cd5780634eb7221a146104265780635c22b6d914610470575b600080fd5b6100e5600480360360208110156100cf57600080fd5b8101908080359060200190929190505050610707565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561012857808201518184015260208101905061010d565b505050509050019250505060405180910390f35b6102936004803603606081101561015257600080fd5b810190808035906020019064010000000081111561016f57600080fd5b82018360208201111561018157600080fd5b803590602001918460018302840111640100000000831117156101a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019064010000000081111561021057600080fd5b82018360208201111561022257600080fd5b8035906020019184602083028401116401000000008311171561024457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610892565b005b6102cb600480360360408110156102ab57600080fd5b8101908080359060200190929190803590602001909291905050506108af565b005b610424600480360360608110156102e357600080fd5b810190808035906020019064010000000081111561030057600080fd5b82018360208201111561031257600080fd5b8035906020019184600183028401116401000000008311171561033457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001906401000000008111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111640100000000831117156103d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506108cc565b005b61042e610944565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a66004803603604081101561048657600080fd5b810190808035906020019092919080359060200190929190505050610969565b005b6104b0610981565b6040518082815260200191505060405180910390f35b610506600480360360608110156104dc57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061098e565b005b6105d26004803603606081101561051e57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b21565b005b610697600480360360408110156105ea57600080fd5b810190808035906020019064010000000081111561060757600080fd5b82018360208201111561061957600080fd5b8035906020019184600183028401116401000000008311171561063b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610dc4565b005b6106c5600480360360208110156106af57600080fd5b8101908080359060200190929190505050610de1565b604051808381526020018281526020019250505060405180910390f35b6106ea610f73565b604051808381526020018281526020019250505060405180910390f35b60608060026001015460405190808252806020026020018201604052801561073e5781602001602082028038833980820191505090505b50905060006002600001549050600060026001015490505b600081111561088757600060018203905060008061077385610de1565b915091506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb8a866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d602081101561081e57600080fd5b810190808051906020019092919050505060ff161415610859578194508086848151811061084857fe5b602002602001018181525050610876565b8094508186848151811061086957fe5b6020026020010181815250505b505050808060019003915050610756565b508192505050919050565b6000838051906020012090506108a9818484610b21565b50505050565b60606108ba82610707565b90506108c7838383610b21565b505050565b600060026000015490506108e1848484610892565b806002600001541461093e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f866024913960400191505060405180910390fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600260000181905550806002600101819055505050565b6000600260000154905090565b81600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b810190808051906020019092919050505081526020019081526020016000208190555080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b8101908080519060200190929190505050815260200190815260200160002081905550505050565b600083905060008090505b8251811015610db357600080848381518110610b4457fe5b602002602001015190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb88866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b8101908080519060200190929190505050905060008160ff161415610cdc57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb86846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d6020811015610cb957600080fd5b81019080805190602001909291905050509250610cd783868461098e565b610da0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb83876040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d5757600080fd5b505afa158015610d6b573d6000803e3d6000fd5b505050506040513d6020811015610d8157600080fd5b81019080805190602001909291905050509250610d9f83838761098e565b5b8294505050508080600101915050610b2c565b508060026000018190555050505050565b6060610dcf82610707565b9050610ddc838383610892565b505050565b600080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e5d57600080fd5b505afa158015610e71573d6000803e3d6000fd5b505050506040513d6020811015610e8757600080fd5b8101908080519060200190929190505050815260200190815260200160002054600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d6020811015610f4a57600080fd5b810190808051906020019092919050505081526020019081526020016000205491509150915091565b6002806000015490806001015490508256fe4661696c65642073616d6520726f6f7420766572696669636174696f6e20636865636b21a265627a7a72315820d65ff7475ce1fbfee0adcb5bc21ac56699a338afad9e3ceda4605da37492f21d64736f6c634300050f0032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80635ca1e165116100715780635ca1e165146104a857806363327f89146104c65780639c0de52014610508578063c3b45234146105d4578063d37684ff14610699578063fd54b228146106e2576100b4565b8063101b166c146100b9578063158933ad1461013c578063272684b5146102955780634359356d146102cd5780634eb7221a146104265780635c22b6d914610470575b600080fd5b6100e5600480360360208110156100cf57600080fd5b8101908080359060200190929190505050610707565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561012857808201518184015260208101905061010d565b505050509050019250505060405180910390f35b6102936004803603606081101561015257600080fd5b810190808035906020019064010000000081111561016f57600080fd5b82018360208201111561018157600080fd5b803590602001918460018302840111640100000000831117156101a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019064010000000081111561021057600080fd5b82018360208201111561022257600080fd5b8035906020019184602083028401116401000000008311171561024457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610892565b005b6102cb600480360360408110156102ab57600080fd5b8101908080359060200190929190803590602001909291905050506108af565b005b610424600480360360608110156102e357600080fd5b810190808035906020019064010000000081111561030057600080fd5b82018360208201111561031257600080fd5b8035906020019184600183028401116401000000008311171561033457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001906401000000008111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111640100000000831117156103d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506108cc565b005b61042e610944565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a66004803603604081101561048657600080fd5b810190808035906020019092919080359060200190929190505050610969565b005b6104b0610981565b6040518082815260200191505060405180910390f35b610506600480360360608110156104dc57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061098e565b005b6105d26004803603606081101561051e57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b21565b005b610697600480360360408110156105ea57600080fd5b810190808035906020019064010000000081111561060757600080fd5b82018360208201111561061957600080fd5b8035906020019184600183028401116401000000008311171561063b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610dc4565b005b6106c5600480360360208110156106af57600080fd5b8101908080359060200190929190505050610de1565b604051808381526020018281526020019250505060405180910390f35b6106ea610f73565b604051808381526020018281526020019250505060405180910390f35b60608060026001015460405190808252806020026020018201604052801561073e5781602001602082028038833980820191505090505b50905060006002600001549050600060026001015490505b600081111561088757600060018203905060008061077385610de1565b915091506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb8a866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d602081101561081e57600080fd5b810190808051906020019092919050505060ff161415610859578194508086848151811061084857fe5b602002602001018181525050610876565b8094508186848151811061086957fe5b6020026020010181815250505b505050808060019003915050610756565b508192505050919050565b6000838051906020012090506108a9818484610b21565b50505050565b60606108ba82610707565b90506108c7838383610b21565b505050565b600060026000015490506108e1848484610892565b806002600001541461093e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f866024913960400191505060405180910390fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600260000181905550806002600101819055505050565b6000600260000154905090565b81600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b810190808051906020019092919050505081526020019081526020016000208190555080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b8101908080519060200190929190505050815260200190815260200160002081905550505050565b600083905060008090505b8251811015610db357600080848381518110610b4457fe5b602002602001015190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb88866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b8101908080519060200190929190505050905060008160ff161415610cdc57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb86846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d6020811015610cb957600080fd5b81019080805190602001909291905050509250610cd783868461098e565b610da0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb83876040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d5757600080fd5b505afa158015610d6b573d6000803e3d6000fd5b505050506040513d6020811015610d8157600080fd5b81019080805190602001909291905050509250610d9f83838761098e565b5b8294505050508080600101915050610b2c565b508060026000018190555050505050565b6060610dcf82610707565b9050610ddc838383610892565b505050565b600080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e5d57600080fd5b505afa158015610e71573d6000803e3d6000fd5b505050506040513d6020811015610e8757600080fd5b8101908080519060200190929190505050815260200190815260200160002054600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d6020811015610f4a57600080fd5b810190808051906020019092919050505081526020019081526020016000205491509150915091565b6002806000015490806001015490508256fe4661696c65642073616d6520726f6f7420766572696669636174696f6e20636865636b21a265627a7a72315820d65ff7475ce1fbfee0adcb5bc21ac56699a338afad9e3ceda4605da37492f21d64736f6c634300050f0032", + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 199 + } + ] + } + }, + "deployedLinkReferences": {} +} diff --git a/artifacts/Types.json b/artifacts/Types.json new file mode 100644 index 0000000..8c727d4 --- /dev/null +++ b/artifacts/Types.json @@ -0,0 +1,8 @@ +{ + "contractName": "Types", + "abi": [], + "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820d5e54a17e1ba6653c6271ac202f31a78ee2f997bc93c807036f909a5715e9c2d64736f6c634300050f0032", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820d5e54a17e1ba6653c6271ac202f31a78ee2f997bc93c807036f909a5715e9c2d64736f6c634300050f0032", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/buidler.config.js b/buidler.config.js new file mode 100644 index 0000000..6770d0a --- /dev/null +++ b/buidler.config.js @@ -0,0 +1,22 @@ +usePlugin("@nomiclabs/buidler-waffle"); + +// This is a sample Buidler task. To learn how to create your own go to +// https://buidler.dev/guides/create-task.html +task("accounts", "Prints the list of accounts", async () => { + const accounts = await ethers.getSigners(); + + for (const account of accounts) { + console.log(await account.getAddress()); + } +}); + +// You have to export an object to set up your config +// This object can have the following optional entries: +// defaultNetwork, networks, solc, and paths. +// Go to https://buidler.dev/config/ to learn more +module.exports = { + // This is a sample solc configuration that specifies which version of solc to use + solc: { + version: "0.5.15", + }, +}; diff --git a/cache/last-solc-config.json b/cache/last-solc-config.json new file mode 100644 index 0000000..bc1bba4 --- /dev/null +++ b/cache/last-solc-config.json @@ -0,0 +1,10 @@ +{ + "solc": { + "version": "0.5.15", + "optimizer": { + "enabled": false, + "runs": 200 + } + }, + "buidlerVersion": "1.3.1" +} \ No newline at end of file diff --git a/cache/solc-input.json b/cache/solc-input.json new file mode 100644 index 0000000..fc84b27 --- /dev/null +++ b/cache/solc-input.json @@ -0,0 +1,103 @@ +{ + "language": "Solidity", + "sources": { + "contracts/Deployer.sol": { + "content": "pragma solidity ^0.5.15;\nimport {ParamManager} from \"./libs/ParamManager.sol\";\nimport {NameRegistry as Registry} from \"./NameRegistry.sol\";\nimport {Tree as MerkleTree} from \"./Tree.sol\";\nimport {IncrementalTree} from \"./IncrementalTree.sol\";\nimport {DepositManager} from \"./DepositManager.sol\";\nimport {TestToken} from \"./TestToken.sol\";\nimport {Rollup} from \"./Rollup.sol\";\nimport {TokenRegistry} from \"./TokenRegistry.sol\";\nimport {Logger} from \"./Logger.sol\";\nimport {MerkleTreeUtils as MTUtils} from \"./MerkleTreeUtils.sol\";\n\n\n// Deployer is supposed to deploy new set of contracts while setting up all the utilities\n// libraries and other auxiallry contracts like registry\ncontract Deployer {\n constructor(address nameregistry) public {\n deployContracts(nameregistry);\n }\n\n function deployContracts(address nameRegistryAddr)\n public\n returns (address)\n {\n Registry registry = Registry(nameRegistryAddr);\n address mtUtils = address(new MTUtils());\n require(\n registry.registerName(ParamManager.MERKLE_UTILS(), mtUtils),\n \"Could not register merkle utils tree\"\n );\n\n address logger = address(new Logger());\n require(\n registry.registerName(ParamManager.LOGGER(), logger),\n \"Cannot register logger\"\n );\n\n address tokenRegistry = address(new TokenRegistry(nameRegistryAddr));\n require(\n registry.registerName(ParamManager.TOKEN_REGISTRY(), tokenRegistry),\n \"Cannot register token registry\"\n );\n\n return nameRegistryAddr;\n // address balancesTree = address(new MerkleTree(nameRegistryAddr));\n // require(\n // registry.registerName(ParamManager.BALANCES_TREE(), balancesTree),\n // \"Could not register balances tree\"\n // );\n // deploy accounts tree\n // address accountsTree = address(new IncrementalTree(nameRegistryAddr));\n // require(\n // registry.registerName(ParamManager.ACCOUNTS_TREE(), accountsTree),\n // \"Could not register accounts tree\"\n // );\n\n // deposit manager\n // address depositManager = address(new DepositManager(nameRegistryAddr));\n // require(\n // registry.registerName(\n // ParamManager.DEPOSIT_MANAGER(),\n // depositManager\n // ),\n // \"Cannot register deposit manager\"\n // );\n\n // // deploy core rollup contract\n // address rollup = address(new Rollup(nameRegistryAddr));\n // require(\n // registry.registerName(ParamManager.ROLLUP_CORE(), rollup),\n // \"Cannot register core rollup\"\n // );\n }\n}\n" + }, + "contracts/libs/ParamManager.sol": { + "content": "pragma solidity ^0.5.15;\n\n\nlibrary ParamManager {\n function DEPOSIT_MANAGER() public pure returns (bytes32) {\n return keccak256(\"deposit_manager\");\n }\n\n function WITHDRAW_MANAGER() public pure returns (bytes32) {\n return keccak256(\"withdraw_manager\");\n }\n\n function TEST_TOKEN() public pure returns (bytes32) {\n return keccak256(\"test_token\");\n }\n\n function ROLLUP_CORE() public pure returns (bytes32) {\n return keccak256(\"rollup_core\");\n }\n\n function ACCOUNTS_TREE() public pure returns (bytes32) {\n return keccak256(\"accounts_tree\");\n }\n\n function BALANCES_TREE() public pure returns (bytes32) {\n return keccak256(\"balances_tree\");\n }\n\n function LOGGER() public pure returns (bytes32) {\n return keccak256(\"logger\");\n }\n\n function MERKLE_UTILS() public pure returns (bytes32) {\n return keccak256(\"merkle_lib\");\n }\n\n function PARAM_MANAGER() public pure returns (bytes32) {\n return keccak256(\"param_manager\");\n }\n\n function TOKEN_REGISTRY() public pure returns (bytes32) {\n return keccak256(\"token_registry\");\n }\n\n uint8 public constant _MAX_DEPTH = 4;\n\n function MAX_DEPTH() public pure returns (uint8) {\n return _MAX_DEPTH;\n }\n\n uint8 public constant _MAX_DEPOSIT_SUBTREE = 2;\n\n function MAX_DEPOSIT_SUBTREE() public pure returns (uint8) {\n return _MAX_DEPOSIT_SUBTREE;\n }\n\n bytes32 public constant _CHAIN_ID = keccak256(\"opru-123\");\n\n function CHAIN_ID() public pure returns (bytes32) {\n return _CHAIN_ID;\n }\n\n // finalisation time is the number of blocks required by a batch to finalise\n // Delay period = 7 days. Block time = 15 seconds\n uint256 public constant _TIME_TO_FINALISE = 7 days;\n\n function TIME_TO_FINALISE() public pure returns (uint256) {\n return _TIME_TO_FINALISE;\n }\n\n // min gas required before rollback pauses\n uint256 public constant _MIN_GAS_LIMIT_LEFT = 100000;\n\n function MIN_GAS_LIMIT_LEFT() public pure returns (uint256) {\n return _MIN_GAS_LIMIT_LEFT;\n }\n\n uint256 public constant _MAX_TXS_PER_BATCH = 10;\n\n function MAX_TXS_PER_BATCH() public pure returns (uint256) {\n return _MAX_TXS_PER_BATCH;\n }\n\n uint256 public constant _STAKE_AMOUNT = 32;\n\n function STAKE_AMOUNT() public pure returns (uint256) {\n return _STAKE_AMOUNT;\n }\n\n address payable constant _BURN_ADDRESS = 0x0000000000000000000000000000000000000000;\n\n function BURN_ADDRESS() public pure returns (address payable) {\n return _BURN_ADDRESS;\n }\n\n bytes32 public constant _ZERO_BYTES32 = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n function ZERO_BYTES32() public pure returns (bytes32) {\n return _ZERO_BYTES32;\n }\n}\n" + }, + "contracts/NameRegistry.sol": { + "content": "pragma solidity ^0.5.15;\n\n\ncontract NameRegistry {\n struct ContractDetails {\n // registered contract address\n address contractAddress;\n }\n event RegisteredNewContract(bytes32 name, address contractAddr);\n mapping(bytes32 => ContractDetails) registry;\n\n function registerName(bytes32 name, address addr) external returns (bool) {\n ContractDetails memory info = registry[name];\n // create info if it doesn't exist in the registry\n if (info.contractAddress == address(0)) {\n info.contractAddress = addr;\n registry[name] = info;\n // added to registry\n return true;\n } else {\n // already was registered\n return false;\n }\n }\n\n function getContractDetails(bytes32 name) external view returns (address) {\n return (registry[name].contractAddress);\n }\n\n function updateContractDetails(bytes32 name, address addr) external {\n // TODO not sure if we should do this\n // If we do we need a plan on how to remove this\n }\n}\n" + }, + "contracts/Tree.sol": { + "content": "pragma solidity ^0.5.15;\nimport {MerkleTreeUtils as MTUtils} from \"./MerkleTreeUtils.sol\";\nimport {NameRegistry as Registry} from \"./NameRegistry.sol\";\nimport {ParamManager} from \"./libs/ParamManager.sol\";\n\n\n/*\n * Merkle Tree Utilities for Rollup\n */\ncontract Tree {\n Registry public nameRegistry;\n MTUtils merkleUtils; /* Structs */\n // A partial merkle tree which can be updated with new nodes, recomputing the root\n struct MerkleTree {\n // The root\n bytes32 root;\n uint256 height;\n mapping(bytes32 => bytes32) nodes;\n }\n\n constructor(address _registryAddr) public {\n nameRegistry = Registry(_registryAddr);\n merkleUtils = MTUtils(\n nameRegistry.getContractDetails(ParamManager.MERKLE_UTILS())\n );\n setMerkleRootAndHeight(\n merkleUtils.getZeroRoot(),\n merkleUtils.getMaxTreeDepth()\n );\n }\n\n // A tree which is used in `update()` and `store()`\n MerkleTree public tree;\n\n /**\n * @notice Update the stored tree / root with a particular dataBlock at some path (no siblings needed)\n * @param _dataBlock The data block we're storing/verifying\n * @param _path The path from the leaf to the root / the index of the leaf.\n */\n function update(bytes memory _dataBlock, uint256 _path) public {\n bytes32[] memory siblings = getSiblings(_path);\n store(_dataBlock, _path, siblings);\n }\n\n /**\n * @notice Update the stored tree / root with a particular leaf hash at some path (no siblings needed)\n * @param _leaf The leaf we're storing/verifying\n * @param _path The path from the leaf to the root / the index of the leaf.\n */\n function updateLeaf(bytes32 _leaf, uint256 _path) public {\n bytes32[] memory siblings = getSiblings(_path);\n storeLeaf(_leaf, _path, siblings);\n }\n\n /**\n * @notice Store a particular merkle proof & verify that the root did not change.\n * @param _dataBlock The data block we're storing/verifying\n * @param _path The path from the leaf to the root / the index of the leaf.\n * @param _siblings The sibling nodes along the way.\n */\n function verifyAndStore(\n bytes memory _dataBlock,\n uint256 _path,\n bytes32[] memory _siblings\n ) public {\n bytes32 oldRoot = tree.root;\n store(_dataBlock, _path, _siblings);\n require(tree.root == oldRoot, \"Failed same root verification check!\");\n }\n\n /**\n * @notice Store a particular dataBlock & its intermediate nodes in the tree\n * @param _dataBlock The data block we're storing.\n * @param _path The path from the leaf to the root / the index of the leaf.\n * @param _siblings The sibling nodes along the way.\n */\n function store(\n bytes memory _dataBlock,\n uint256 _path,\n bytes32[] memory _siblings\n ) public {\n // Compute the leaf node & store the leaf\n bytes32 leaf = keccak256(_dataBlock);\n storeLeaf(leaf, _path, _siblings);\n }\n\n /**\n * @notice Store a particular leaf hash & its intermediate nodes in the tree\n * @param _leaf The leaf we're storing.\n * @param _path The path from the leaf to the root / the index of the leaf.\n * @param _siblings The sibling nodes along the way.\n */\n function storeLeaf(bytes32 _leaf, uint256 _path, bytes32[] memory _siblings)\n public\n {\n // First compute the leaf node\n bytes32 computedNode = _leaf;\n for (uint256 i = 0; i < _siblings.length; i++) {\n bytes32 parent;\n bytes32 sibling = _siblings[i];\n uint8 isComputedRightSibling = merkleUtils.getNthBitFromRight(\n _path,\n i\n );\n if (isComputedRightSibling == 0) {\n parent = merkleUtils.getParent(computedNode, sibling);\n // Store the node!\n storeNode(parent, computedNode, sibling);\n } else {\n parent = merkleUtils.getParent(sibling, computedNode);\n // Store the node!\n storeNode(parent, sibling, computedNode);\n }\n computedNode = parent;\n }\n // Store the new root\n tree.root = computedNode;\n }\n\n /**\n * @notice Get siblings for a leaf at a particular index of the tree.\n * This is used for updates which don't include sibling nodes.\n * @param _path The path from the leaf to the root / the index of the leaf.\n * @return The sibling nodes along the way.\n */\n function getSiblings(uint256 _path) public returns (bytes32[] memory) {\n bytes32[] memory siblings = new bytes32[](tree.height);\n bytes32 computedNode = tree.root;\n for (uint256 i = tree.height; i > 0; i--) {\n uint256 siblingIndex = i - 1;\n (bytes32 leftChild, bytes32 rightChild) = getChildren(computedNode);\n if (merkleUtils.getNthBitFromRight(_path, siblingIndex) == 0) {\n computedNode = leftChild;\n siblings[siblingIndex] = rightChild;\n } else {\n computedNode = rightChild;\n siblings[siblingIndex] = leftChild;\n }\n }\n // Now store everything\n return siblings;\n }\n\n /*********************\n * Utility Functions *\n ********************/\n /**\n * @notice Get our stored tree's root\n * @return The merkle root of the tree\n */\n function getRoot() public view returns (bytes32) {\n return tree.root;\n }\n\n /**\n * @notice Set the tree root and height of the stored tree\n * @param _root The merkle root of the tree\n * @param _height The height of the tree\n */\n function setMerkleRootAndHeight(bytes32 _root, uint256 _height) public {\n tree.root = _root;\n tree.height = _height;\n }\n\n /**\n * @notice Store node in the (in-storage) merkle tree\n * @param _parent The parent node\n * @param _leftChild The left child of the parent in the tree\n * @param _rightChild The right child of the parent in the tree\n */\n function storeNode(bytes32 _parent, bytes32 _leftChild, bytes32 _rightChild)\n public\n {\n tree.nodes[merkleUtils.getLeftSiblingKey(_parent)] = _leftChild;\n tree.nodes[merkleUtils.getRightSiblingKey(_parent)] = _rightChild;\n }\n\n /**\n * @notice Get the children of some parent in the tree\n * @param _parent The parent node\n * @return (rightChild, leftChild) -- the two children of the parent\n */\n function getChildren(bytes32 _parent)\n public\n view\n returns (bytes32, bytes32)\n {\n return (\n tree.nodes[merkleUtils.getLeftSiblingKey(_parent)],\n tree.nodes[merkleUtils.getRightSiblingKey(_parent)]\n );\n }\n}\n" + }, + "contracts/MerkleTreeUtils.sol": { + "content": "pragma solidity ^0.5.15;\npragma experimental ABIEncoderV2;\nimport {ParamManager} from \"./libs/ParamManager.sol\";\n\n\ncontract MerkleTreeUtils {\n // The default hashes\n // TODO remove 160 and use max depth from parammanager\n bytes32[] public defaultHashes;\n uint256 public MAX_DEPTH;\n bytes32 public ZERO_BYTES32 = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n /**\n * @notice Initialize a new MerkleTree contract, computing the default hashes for the merkle tree (MT)\n */\n constructor() public {\n MAX_DEPTH = ParamManager.MAX_DEPTH();\n defaultHashes = new bytes32[](MAX_DEPTH);\n // Calculate & set the default hashes\n setDefaultHashes(MAX_DEPTH);\n }\n\n /* Methods */\n\n /**\n * @notice Set default hashes\n */\n function setDefaultHashes(uint256 depth) internal {\n // Set the initial default hash.\n defaultHashes[0] = keccak256(abi.encode(0));\n for (uint256 i = 1; i < depth; i++) {\n defaultHashes[i] = keccak256(\n abi.encode(defaultHashes[i - 1], defaultHashes[i - 1])\n );\n }\n }\n\n function getZeroRoot() public view returns (bytes32) {\n return\n keccak256(\n abi.encode(\n defaultHashes[MAX_DEPTH - 1],\n defaultHashes[MAX_DEPTH - 1]\n )\n );\n }\n\n function getMaxTreeDepth() public view returns (uint256) {\n return MAX_DEPTH;\n }\n\n function getRoot(uint256 index) public view returns (bytes32) {\n return defaultHashes[index];\n }\n\n function keecakHash(bytes memory data) public pure returns (bytes32) {\n return keccak256(data);\n }\n\n /**\n * @notice Get the merkle root computed from some set of data blocks.\n * @param _dataBlocks The data being used to generate the tree.\n * @return the merkle tree root\n * NOTE: This is a stateless operation\n */\n function getMerkleRoot(bytes[] calldata _dataBlocks)\n external\n returns (bytes32)\n {\n uint256 nextLevelLength = _dataBlocks.length;\n uint256 currentLevel = 0;\n bytes32[] memory nodes = new bytes32[](nextLevelLength + 1); // Add one in case we have an odd number of leaves\n // Generate the leaves\n for (uint256 i = 0; i < _dataBlocks.length; i++) {\n nodes[i] = keccak256(_dataBlocks[i]);\n }\n if (_dataBlocks.length == 1) {\n return nodes[0];\n }\n // Add a defaultNode if we've got an odd number of leaves\n if (nextLevelLength % 2 == 1) {\n nodes[nextLevelLength] = defaultHashes[currentLevel];\n nextLevelLength += 1;\n }\n\n // Now generate each level\n while (nextLevelLength > 1) {\n currentLevel += 1;\n // Calculate the nodes for the currentLevel\n for (uint256 i = 0; i < nextLevelLength / 2; i++) {\n nodes[i] = getParent(nodes[i * 2], nodes[i * 2 + 1]);\n }\n nextLevelLength = nextLevelLength / 2;\n // Check if we will need to add an extra node\n if (nextLevelLength % 2 == 1 && nextLevelLength != 1) {\n nodes[nextLevelLength] = defaultHashes[currentLevel];\n nextLevelLength += 1;\n }\n }\n // Alright! We should be left with a single node! Return it...\n return nodes[0];\n }\n\n /**\n * @notice Calculate root from an inclusion proof.\n * @param _dataBlock The data block we're calculating root for.\n * @param _path The path from the leaf to the root.\n * @param _siblings The sibling nodes along the way.\n * @return The next level of the tree\n * NOTE: This is a stateless operation\n */\n function computeInclusionProofRoot(\n bytes memory _dataBlock,\n uint256 _path,\n bytes32[] memory _siblings\n ) public pure returns (bytes32) {\n // First compute the leaf node\n bytes32 computedNode = keccak256(_dataBlock);\n\n for (uint256 i = 0; i < _siblings.length; i++) {\n bytes32 sibling = _siblings[i];\n uint8 isComputedRightSibling = getNthBitFromRight(_path, i);\n if (isComputedRightSibling == 0) {\n computedNode = getParent(computedNode, sibling);\n } else {\n computedNode = getParent(sibling, computedNode);\n }\n }\n // Check if the computed node (_root) is equal to the provided root\n return computedNode;\n }\n\n /**\n * @notice Calculate root from an inclusion proof.\n * @param _leaf The data block we're calculating root for.\n * @param _path The path from the leaf to the root.\n * @param _siblings The sibling nodes along the way.\n * @return The next level of the tree\n * NOTE: This is a stateless operation\n */\n function computeInclusionProofRootWithLeaf(\n bytes32 _leaf,\n uint256 _path,\n bytes32[] memory _siblings\n ) public view returns (bytes32) {\n // First compute the leaf node\n bytes32 computedNode = _leaf;\n for (uint256 i = 0; i < _siblings.length; i++) {\n bytes32 sibling = _siblings[i];\n uint8 isComputedRightSibling = getNthBitFromRight(_path, i);\n if (isComputedRightSibling == 0) {\n computedNode = getParent(computedNode, sibling);\n } else {\n computedNode = getParent(sibling, computedNode);\n }\n }\n // Check if the computed node (_root) is equal to the provided root\n return computedNode;\n }\n\n /**\n * @notice Verify an inclusion proof.\n * @param _root The root of the tree we are verifying inclusion for.\n * @param _dataBlock The data block we're verifying inclusion for.\n * @param _path The path from the leaf to the root.\n * @param _siblings The sibling nodes along the way.\n * @return The next level of the tree\n * NOTE: This is a stateless operation\n */\n function verify(\n bytes32 _root,\n bytes memory _dataBlock,\n uint256 _path,\n bytes32[] memory _siblings\n ) public view returns (bool) {\n // First compute the leaf node\n bytes32 calculatedRoot = computeInclusionProofRoot(\n _dataBlock,\n _path,\n _siblings\n );\n return calculatedRoot == _root;\n }\n\n /**\n * @notice Verify an inclusion proof.\n * @param _root The root of the tree we are verifying inclusion for.\n * @param _leaf The data block we're verifying inclusion for.\n * @param _path The path from the leaf to the root.\n * @param _siblings The sibling nodes along the way.\n * @return The next level of the tree\n * NOTE: This is a stateless operation\n\n */\n function verifyLeaf(\n bytes32 _root,\n bytes32 _leaf,\n uint256 _path,\n bytes32[] memory _siblings\n ) public view returns (bool) {\n bytes32 calculatedRoot = computeInclusionProofRootWithLeaf(\n _leaf,\n _path,\n _siblings\n );\n return calculatedRoot == _root;\n }\n\n /**\n * @notice Update a leaf using siblings and root\n * This is a stateless operation\n * @param _leaf The leaf we're updating.\n * @param _path The path from the leaf to the root / the index of the leaf.\n * @param _siblings The sibling nodes along the way.\n * @return Updated root\n */\n function updateLeafWithSiblings(\n bytes32 _leaf,\n uint256 _path,\n bytes32[] memory _siblings\n ) public pure returns (bytes32) {\n bytes32 computedNode = _leaf;\n for (uint256 i = 0; i < _siblings.length; i++) {\n bytes32 parent;\n bytes32 sibling = _siblings[i];\n uint8 isComputedRightSibling = getNthBitFromRight(_path, i);\n if (isComputedRightSibling == 0) {\n parent = getParent(computedNode, sibling);\n } else {\n parent = getParent(sibling, computedNode);\n }\n computedNode = parent;\n }\n return computedNode;\n }\n\n /**\n * @notice Get the parent of two children nodes in the tree\n * @param _left The left child\n * @param _right The right child\n * @return The parent node\n */\n function getParent(bytes32 _left, bytes32 _right)\n public\n pure\n returns (bytes32)\n {\n return keccak256(abi.encode(_left, _right));\n }\n\n /**\n * @notice get the n'th bit in a uint.\n * For instance, if exampleUint=binary(11), getNth(exampleUint, 0) == 1, getNth(2, 1) == 1\n * @param _intVal The uint we are extracting a bit out of\n * @param _index The index of the bit we want to extract\n * @return The bit (1 or 0) in a uint8\n */\n function getNthBitFromRight(uint256 _intVal, uint256 _index)\n public\n pure\n returns (uint8)\n {\n return uint8((_intVal >> _index) & 1);\n }\n\n /**\n * @notice Get the right sibling key. Note that these keys overwrite the first bit of the hash\n to signify if it is on the right side of the parent or on the left\n * @param _parent The parent node\n * @return the key for the left sibling (0 as the first bit)\n */\n function getLeftSiblingKey(bytes32 _parent) public pure returns (bytes32) {\n return\n _parent &\n 0x0111111111111111111111111111111111111111111111111111111111111111;\n }\n\n /**\n * @notice Get the right sibling key. Note that these keys overwrite the first bit of the hash\n to signify if it is on the right side of the parent or on the left\n * @param _parent The parent node\n * @return the key for the right sibling (1 as the first bit)\n */\n function getRightSiblingKey(bytes32 _parent) public pure returns (bytes32) {\n return\n _parent |\n 0x1000000000000000000000000000000000000000000000000000000000000000;\n }\n\n function pathToIndex(uint256 path, uint256 height)\n public\n view\n returns (uint256)\n {\n uint256 result = 0;\n for (uint256 i = 0; i < height; i++) {\n uint8 temp = getNthBitFromRight(path, i);\n // UNSAFE FIX THIS\n result = result + (temp * (2**i));\n }\n return result;\n }\n}\n" + }, + "contracts/IncrementalTree.sol": { + "content": "pragma solidity ^0.5.15;\n\nimport {MerkleTreeUtils as MTUtils} from \"./MerkleTreeUtils.sol\";\nimport {ParamManager} from \"./libs/ParamManager.sol\";\nimport {NameRegistry as Registry} from \"./NameRegistry.sol\";\n\n\ncontract IncrementalTree {\n uint256 DEPTH = ParamManager.MAX_DEPTH();\n Registry public nameRegistry;\n MTUtils public merkleUtils;\n\n MerkleTree public tree;\n // Merkle Tree to store the whole tree\n struct MerkleTree {\n // Root of the tree\n bytes32 root;\n // current height of the tree\n uint256 height;\n // Allows you to compute the path to the element (but it's not the path to\n // the elements). Caching these values is essential to efficient appends.\n bytes32[] filledSubtrees;\n }\n\n // The number of inserted leaves\n uint256 public nextLeafIndex = 0;\n\n constructor(address _registryAddr) public {\n tree.filledSubtrees = new bytes32[](DEPTH);\n nameRegistry = Registry(_registryAddr);\n merkleUtils = MTUtils(\n nameRegistry.getContractDetails(ParamManager.MERKLE_UTILS())\n );\n setMerkleRootAndHeight(\n merkleUtils.getZeroRoot(),\n merkleUtils.getMaxTreeDepth()\n );\n bytes32 zero = merkleUtils.getRoot(0);\n for (uint8 i = 1; i < DEPTH; i++) {\n tree.filledSubtrees[i] = zero;\n }\n }\n\n /**\n * @notice Append leaf will append a leaf to the end of the tree\n * @return The sibling nodes along the way.\n */\n function appendLeaf(bytes32 _leaf) public returns (uint256) {\n uint256 currentIndex = nextLeafIndex;\n\n uint256 depth = uint256(tree.height);\n require(\n currentIndex < uint256(2)**depth,\n \"IncrementalMerkleTree: tree is full\"\n );\n bytes32 currentLevelHash = _leaf;\n bytes32 left;\n bytes32 right;\n for (uint8 i = 0; i < tree.height; i++) {\n if (currentIndex % 2 == 0) {\n left = currentLevelHash;\n right = merkleUtils.getRoot(i);\n tree.filledSubtrees[i] = currentLevelHash;\n } else {\n left = tree.filledSubtrees[i];\n right = currentLevelHash;\n }\n currentLevelHash = merkleUtils.getParent(left, right);\n currentIndex >>= 1;\n }\n tree.root = currentLevelHash;\n uint256 n;\n n = nextLeafIndex;\n nextLeafIndex += 1;\n return n;\n }\n\n /**\n * @notice Set the tree root and height of the stored tree\n * @param _root The merkle root of the tree\n * @param _height The height of the tree\n */\n function setMerkleRootAndHeight(bytes32 _root, uint256 _height) public {\n tree.root = _root;\n tree.height = _height;\n }\n\n function getTreeRoot() external view returns (bytes32) {\n return tree.root;\n }\n}\n" + }, + "contracts/DepositManager.sol": { + "content": "pragma solidity ^0.5.15;\npragma experimental ABIEncoderV2;\nimport {IncrementalTree} from \"./IncrementalTree.sol\";\nimport {Types} from \"./libs/Types.sol\";\nimport {Logger} from \"./Logger.sol\";\nimport {RollupUtils} from \"./libs/RollupUtils.sol\";\nimport {MerkleTreeUtils as MTUtils} from \"./MerkleTreeUtils.sol\";\nimport {NameRegistry as Registry} from \"./NameRegistry.sol\";\nimport {ITokenRegistry} from \"./interfaces/ITokenRegistry.sol\";\nimport {IERC20} from \"./interfaces/IERC20.sol\";\nimport {Tree as MerkleTree} from \"./Tree.sol\";\nimport {ParamManager} from \"./libs/ParamManager.sol\";\n\n\ncontract DepositManager {\n MTUtils public merkleUtils;\n Registry public nameRegistry;\n MerkleTree public balancesTree;\n bytes32[] public pendingDeposits;\n uint256 public queueNumber;\n uint256 public depositSubtreeHeight;\n\n address public Coordinator;\n\n Logger public logger;\n ITokenRegistry public tokenRegistry;\n IERC20 public tokenContract;\n IncrementalTree public accountsTree;\n\n bool isPaused;\n\n modifier isNotWaitingForFinalisation() {\n assert(isPaused == false);\n _;\n }\n\n constructor(address _registryAddr) public {\n nameRegistry = Registry(_registryAddr);\n merkleUtils = MTUtils(\n nameRegistry.getContractDetails(ParamManager.MERKLE_UTILS())\n );\n tokenRegistry = ITokenRegistry(\n nameRegistry.getContractDetails(ParamManager.TOKEN_REGISTRY())\n );\n logger = Logger(nameRegistry.getContractDetails(ParamManager.LOGGER()));\n accountsTree = IncrementalTree(\n nameRegistry.getContractDetails(ParamManager.ACCOUNTS_TREE())\n );\n balancesTree = MerkleTree(\n nameRegistry.getContractDetails(ParamManager.BALANCES_TREE())\n );\n }\n\n /**\n * @notice Adds a deposit for the msg.sender to the deposit queue\n * @param _amount Number of tokens that user wants to deposit\n * @param _tokenType Type of token user is depositing\n */\n function deposit(uint256 _amount, uint256 _tokenType, bytes memory _pubkey)\n public\n isNotWaitingForFinalisation\n {\n depositFor(msg.sender, _amount, _tokenType, _pubkey);\n }\n\n /**\n * @notice Adds a deposit for an address to the deposit queue\n * @param _destination Address for which we are depositing\n * @param _amount Number of tokens that user wants to deposit\n * @param _tokenType Type of token user is depositing\n */\n function depositFor(\n address _destination,\n uint256 _amount,\n uint256 _tokenType,\n bytes memory _pubkey\n ) public isNotWaitingForFinalisation {\n // check amount is greater than 0\n require(_amount > 0, \"token deposit must be greater than 0\");\n\n // ensure public matches the destination address\n require(\n _destination == RollupUtils.calculateAddress(_pubkey),\n \"public key and address don't match\"\n );\n\n // check token type exists\n address tokenContractAddress = tokenRegistry.registeredTokens(\n _tokenType\n );\n tokenContract = IERC20(tokenContractAddress);\n\n // transfer from msg.sender to this contract\n require(\n tokenContract.transferFrom(msg.sender, address(this), _amount),\n \"token transfer not approved\"\n );\n\n // Add pubkey to PDA tree\n Types.PDALeaf memory newPDALeaf;\n newPDALeaf.pubkey = _pubkey;\n\n // returns leaf index upon successfull append\n uint256 accID = accountsTree.appendLeaf(\n RollupUtils.PDALeafToHash(newPDALeaf)\n );\n\n // create a new account\n Types.UserAccount memory newAccount;\n newAccount.balance = _amount;\n newAccount.tokenType = _tokenType;\n newAccount.nonce = 0;\n newAccount.ID = accID;\n\n // get new account hash\n bytes32 accountHash = RollupUtils.HashFromAccount(newAccount);\n\n // queue the deposit\n pendingDeposits.push(accountHash);\n // emit the event\n logger.logDepositQueued(\n accID,\n _destination,\n _amount,\n _tokenType,\n accountHash,\n _pubkey\n );\n\n queueNumber++;\n uint256 tmpDepositSubtreeHeight = 0;\n uint256 tmp = queueNumber;\n while (tmp % 2 == 0) {\n bytes32[] memory deposits = new bytes32[](2);\n deposits[0] = pendingDeposits[pendingDeposits.length - 2];\n deposits[1] = pendingDeposits[pendingDeposits.length - 1];\n\n pendingDeposits[pendingDeposits.length - 2] = merkleUtils.getParent(\n deposits[0],\n deposits[1]\n );\n\n // remove 1 deposit from the pending deposit queue\n removeDeposit(pendingDeposits.length - 1);\n tmp = tmp / 2;\n\n // update the temp deposit subtree height\n tmpDepositSubtreeHeight++;\n\n // thow event for the coordinator\n logger.logDepositLeafMerged(\n deposits[0],\n deposits[1],\n pendingDeposits[0]\n );\n }\n if (tmpDepositSubtreeHeight > depositSubtreeHeight) {\n depositSubtreeHeight = tmpDepositSubtreeHeight;\n }\n if (depositSubtreeHeight == ParamManager.MAX_DEPOSIT_SUBTREE()) {\n // pause and wait for finalisation\n isPaused = true;\n }\n }\n\n /**\n * @notice Merges the deposit tree with the balance tree by\n * superimposing the deposit subtree on the balance tree\n * @param _subTreeDepth Deposit tree depth or depth of subtree that is being deposited\n * @param _zero_account_mp Merkle proof proving the node at which we are inserting the deposit subtree consists of all empty leaves\n * @return Updates in-state merkle tree root\n */\n function finaliseDeposits(\n uint256 _subTreeDepth,\n Types.AccountMerkleProof memory _zero_account_mp\n ) public returns (bytes32) {\n bytes32 emptySubtreeRoot = merkleUtils.getRoot(_subTreeDepth);\n // from mt proof we find the root of the tree\n // we match the root to the balance tree root on-chain\n require(\n merkleUtils.verifyLeaf(\n balancesTree.getRoot(),\n emptySubtreeRoot,\n _zero_account_mp.accountIP.pathToAccount,\n _zero_account_mp.siblings\n ),\n \"proof invalid\"\n );\n\n // update the in-state balance tree with new leaf from pendingDeposits[0]\n // balancesTree.updateLeaf(\n // pendingDeposits[0],\n // _zero_account_mp.accountIP.pathToAccount\n // );\n\n balancesTree.storeLeaf(\n pendingDeposits[0],\n _zero_account_mp.accountIP.pathToAccount,\n _zero_account_mp.siblings\n );\n // empty the pending deposits queue\n removeDeposit(0);\n // update the number of elements present in the queue\n queueNumber = queueNumber - 2**depositSubtreeHeight;\n bytes32 newRoot = balancesTree.getRoot();\n\n // emit the event\n logger.logDepositFinalised(\n pendingDeposits[0],\n _zero_account_mp.accountIP.pathToAccount,\n newRoot\n );\n\n // return the updated merkle tree root\n return newRoot;\n }\n\n /**\n * @notice Removes a deposit from the pendingDeposits queue and shifts the queue\n * @param _index Index of the element to remove\n * @return Remaining elements of the array\n */\n function removeDeposit(uint256 _index) internal {\n require(\n _index < pendingDeposits.length,\n \"array index is out of bounds\"\n );\n\n // if we want to nuke the queue\n if (_index == 0) {\n for (uint256 i = 0; i < pendingDeposits.length - 1; i++) {\n delete pendingDeposits[i];\n\n pendingDeposits.length--;\n }\n return;\n }\n\n if (_index == pendingDeposits.length - 1) {\n delete pendingDeposits[pendingDeposits.length - 1];\n pendingDeposits.length--;\n return;\n }\n }\n}\n" + }, + "contracts/libs/Types.sol": { + "content": "pragma solidity ^0.5.15;\n\n\n/**\n * @title DataTypes\n */\nlibrary Types {\n // PDALeaf represents the leaf in\n // Pubkey DataAvailability Tree\n struct PDALeaf {\n bytes pubkey;\n }\n\n // Batch represents the batch submitted periodically to the ethereum chain\n struct Batch {\n bytes32 stateRoot;\n bytes32 accountRoot;\n address committer;\n bytes32 txRoot;\n uint256 stakeCommitted;\n uint256 finalisesOn;\n uint256 timestamp;\n }\n\n // Transaction represents how each transaction looks like for\n // this rollup chain\n struct Transaction {\n UserAccount from;\n UserAccount to;\n uint256 tokenType;\n uint32 amount;\n bytes signature;\n }\n\n // AccountInclusionProof consists of the following fields\n // 1. Path to the account leaf from root in the balances tree\n // 2. Actual data stored in the leaf\n struct AccountInclusionProof {\n uint256 pathToAccount;\n UserAccount account;\n }\n\n struct TranasctionInclusionProof {\n uint256 pathToTx;\n Transaction data;\n }\n\n struct PDAInclusionProof {\n uint256 pathToPubkey;\n PDALeaf pubkey_leaf;\n }\n\n // UserAccount contains the actual data stored in the leaf of balance tree\n struct UserAccount {\n // ID is the path to the pubkey in the PDA tree\n uint256 ID;\n uint256 tokenType;\n uint256 balance;\n uint256 nonce;\n }\n\n struct AccountMerkleProof {\n AccountInclusionProof accountIP;\n bytes32[] siblings;\n }\n\n struct TransactionMerkleProof {\n TranasctionInclusionProof _tx;\n bytes32[] siblings;\n }\n\n struct PDAMerkleProof {\n PDAInclusionProof _pda;\n bytes32[] siblings;\n }\n}\n" + }, + "contracts/Logger.sol": { + "content": "pragma solidity ^0.5.15;\n\n\ncontract Logger {\n /*********************\n * Rollup Contract *\n ********************/\n event NewBatch(\n address committer,\n bytes32 txroot,\n bytes32 updatedRoot,\n uint256 index\n );\n\n function logNewBatch(\n address committer,\n bytes32 txroot,\n bytes32 updatedRoot,\n uint256 index\n ) public {\n emit NewBatch(committer, txroot, updatedRoot, index);\n }\n\n event StakeWithdraw(address committed, uint256 amount, uint256 batch_id);\n\n function logStakeWithdraw(\n address committed,\n uint256 amount,\n uint256 batch_id\n ) public {\n emit StakeWithdraw(committed, amount, batch_id);\n }\n\n event BatchRollback(\n uint256 batch_id,\n address committer,\n bytes32 stateRoot,\n bytes32 txRoot,\n uint256 stakeSlashed\n );\n\n function logBatchRollback(\n uint256 batch_id,\n address committer,\n bytes32 stateRoot,\n bytes32 txRoot,\n uint256 stakeSlashed\n ) public {\n emit BatchRollback(\n batch_id,\n committer,\n stateRoot,\n txRoot,\n stakeSlashed\n );\n }\n\n event RollbackFinalisation(uint256 totalBatchesSlashed);\n\n function logRollbackFinalisation(uint256 totalBatchesSlashed) public {\n emit RollbackFinalisation(totalBatchesSlashed);\n }\n\n event RegisteredToken(uint256 tokenType, address tokenContract);\n\n function logRegisteredToken(uint256 tokenType, address tokenContract)\n public\n {\n emit RegisteredToken(tokenType, tokenContract);\n }\n\n event RegistrationRequest(address tokenContract);\n\n function logRegistrationRequest(address tokenContract) public {\n emit RegistrationRequest(tokenContract);\n }\n\n event DepositQueued(\n uint256 AccountID,\n address destination,\n uint256 amount,\n uint256 token,\n bytes32 accountHash,\n bytes pubkey\n );\n\n function logDepositQueued(\n uint256 accountID,\n address destination,\n uint256 amount,\n uint256 token,\n bytes32 accountHash,\n bytes memory pubkey\n ) public {\n emit DepositQueued(\n accountID,\n destination,\n amount,\n token,\n accountHash,\n pubkey\n );\n }\n\n event DepositLeafMerged(bytes32 left, bytes32 right, bytes32 newRoot);\n\n function logDepositLeafMerged(bytes32 left, bytes32 right, bytes32 newRoot)\n public\n {\n emit DepositLeafMerged(left, right, newRoot);\n }\n\n event DepositsFinalised(\n bytes32 depositSubTreeRoot,\n uint256 pathToSubTree,\n bytes32 newBalanceRoot\n );\n\n function logDepositFinalised(\n bytes32 depositSubTreeRoot,\n uint256 pathToSubTree,\n bytes32 newBalanceRoot\n ) public {\n emit DepositsFinalised(\n depositSubTreeRoot,\n pathToSubTree,\n newBalanceRoot\n );\n }\n}\n" + }, + "contracts/libs/RollupUtils.sol": { + "content": "pragma solidity ^0.5.15;\npragma experimental ABIEncoderV2;\n\nimport {Types} from \"./Types.sol\";\n\n\nlibrary RollupUtils {\n // ---------- Account Related Utils -------------------\n function PDALeafToHash(Types.PDALeaf memory _PDA_Leaf)\n public\n pure\n returns (bytes32)\n {\n return keccak256(abi.encode(_PDA_Leaf.pubkey));\n }\n\n // returns a new User Account with updated balance\n function UpdateBalanceInAccount(\n Types.UserAccount memory original_account,\n uint256 new_balance\n ) public pure returns (Types.UserAccount memory updated_account) {\n original_account.balance = new_balance;\n return original_account;\n }\n\n function BalanceFromAccount(Types.UserAccount memory account)\n public\n pure\n returns (uint256)\n {\n return account.balance;\n }\n\n function HashFromAccount(Types.UserAccount memory account)\n public\n pure\n returns (bytes32)\n {\n return keccak256(BytesFromAccount(account));\n }\n\n function BytesFromAccount(Types.UserAccount memory account)\n public\n pure\n returns (bytes memory)\n {\n return\n abi.encode(\n account.ID,\n account.balance,\n account.nonce,\n account.tokenType\n );\n }\n\n // ---------- Tx Related Utils -------------------\n\n function BytesFromTx(Types.Transaction memory _tx)\n public\n pure\n returns (bytes memory)\n {\n return abi.encode(_tx);\n }\n\n function HashFromTx(Types.Transaction memory _tx)\n public\n pure\n returns (bytes32)\n {\n return keccak256(BytesFromTx(_tx));\n }\n\n /**\n * @notice Calculates the address from the pubkey\n * @param pub is the pubkey\n * @return Returns the address that has been calculated from the pubkey\n */\n function calculateAddress(bytes memory pub)\n public\n pure\n returns (address addr)\n {\n bytes32 hash = keccak256(pub);\n assembly {\n mstore(0, hash)\n addr := mload(0)\n }\n }\n}\n" + }, + "contracts/interfaces/ITokenRegistry.sol": { + "content": "pragma solidity ^0.5.15;\n\n\n// token registry contract interface\ncontract ITokenRegistry {\n address public Coordinator;\n uint256 public numTokens;\n mapping(address => bool) public pendingRegistrations;\n mapping(uint256 => address) public registeredTokens;\n\n modifier onlyCoordinator() {\n assert(msg.sender == Coordinator);\n _;\n }\n\n function requestTokenRegistration(address tokenContract) public {}\n\n function finaliseTokenRegistration(address tokenContract) public {}\n}\n" + }, + "contracts/interfaces/IERC20.sol": { + "content": "pragma solidity ^0.5.15;\n\n\n// ERC20 token interface\ncontract IERC20 {\n function transferFrom(address from, address to, uint256 value)\n public\n returns (bool)\n {}\n\n function transfer(address recipient, uint256 value) public returns (bool) {}\n}\n" + }, + "contracts/TestToken.sol": { + "content": "pragma solidity ^0.5.15;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/ownership/Ownable.sol\";\n\n\n/**\n * @title TestToken is a basic ERC20 Token\n */\ncontract TestToken is ERC20, Ownable {\n /**\n * @dev assign totalSupply to account creating this contract */\n constructor() public {\n _mint(msg.sender, 100000000000);\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20Mintable}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for `sender`'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n * from the caller's allowance.\n *\n * See {_burn} and {_approve}.\n */\n function _burnFrom(address account, uint256 amount) internal {\n _burn(account, amount);\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \"ERC20: burn amount exceeds allowance\"));\n }\n}\n" + }, + "@openzeppelin/contracts/GSN/Context.sol": { + "content": "pragma solidity ^0.5.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\ncontract Context {\n // Empty internal constructor, to prevent people from mistakenly deploying\n // an instance of this contract, which should be used via inheritance.\n constructor () internal { }\n // solhint-disable-previous-line no-empty-blocks\n\n function _msgSender() internal view returns (address payable) {\n return msg.sender;\n }\n\n function _msgData() internal view returns (bytes memory) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return msg.data;\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "pragma solidity ^0.5.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\n * the optional functions; to access them see {ERC20Detailed}.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n" + }, + "@openzeppelin/contracts/math/SafeMath.sol": { + "content": "pragma solidity ^0.5.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n *\n * _Available since v2.4.0._\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b != 0, errorMessage);\n return a % b;\n }\n}\n" + }, + "@openzeppelin/contracts/ownership/Ownable.sol": { + "content": "pragma solidity ^0.5.0;\n\nimport \"../GSN/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\ncontract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n address msgSender = _msgSender();\n _owner = msgSender;\n emit OwnershipTransferred(address(0), msgSender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(isOwner(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Returns true if the caller is the current owner.\n */\n function isOwner() public view returns (bool) {\n return _msgSender() == _owner;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public onlyOwner {\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n */\n function _transferOwnership(address newOwner) internal {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n" + }, + "contracts/Rollup.sol": { + "content": "pragma solidity ^0.5.15;\npragma experimental ABIEncoderV2;\n\nimport {Logger} from \"./logger.sol\";\nimport {Tree as MerkleTree} from \"./Tree.sol\";\nimport {IncrementalTree} from \"./IncrementalTree.sol\";\nimport {ParamManager} from \"./libs/ParamManager.sol\";\nimport {RollupUtils} from \"./libs/RollupUtils.sol\";\nimport {Types} from \"./libs/Types.sol\";\nimport {SafeMath} from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"solidity-bytes-utils/contracts/BytesLib.sol\";\nimport {IERC20} from \"./interfaces/IERC20.sol\";\nimport {ITokenRegistry} from \"./interfaces/ITokenRegistry.sol\";\nimport {NameRegistry as Registry} from \"./NameRegistry.sol\";\nimport {MerkleTreeUtils as MTUtils} from \"./MerkleTreeUtils.sol\";\nimport {ECVerify} from \"./libs/ECVerify.sol\";\n\n\n// Main rollup contract\ncontract Rollup {\n using SafeMath for uint256;\n using BytesLib for bytes;\n using ECVerify for bytes32;\n\n /*********************\n * Variable Declarations *\n ********************/\n\n address coordinator;\n\n // External contracts\n MerkleTree public balancesTree;\n IncrementalTree public accountsTree;\n Logger public logger;\n ITokenRegistry public tokenRegistry;\n IERC20 public tokenContract;\n Registry public nameRegistry;\n Types.Batch[] public batches;\n MTUtils public merkleUtils;\n\n // this variable will be greater than 0 if\n // there is rollback in progress\n // will be reset to 0 once rollback is completed\n uint256 invalidBatchMarker;\n\n modifier onlyCoordinator() {\n assert(msg.sender == coordinator);\n _;\n }\n\n modifier isNotRollingBack() {\n assert(invalidBatchMarker == 0);\n _;\n }\n\n modifier isRollingBack() {\n assert(invalidBatchMarker > 0);\n _;\n }\n\n // Stores transaction paths claimed per batch\n // TO BE REMOVED post withdraw mass migration\n bool[][] withdrawTxClaimed = new bool[][](ParamManager.MAX_TXS_PER_BATCH());\n\n /*********************\n * Constructor *\n ********************/\n constructor(address _registryAddr) public {\n nameRegistry = Registry(_registryAddr);\n\n logger = Logger(nameRegistry.getContractDetails(ParamManager.LOGGER()));\n balancesTree = MerkleTree(\n nameRegistry.getContractDetails(ParamManager.BALANCES_TREE())\n );\n merkleUtils = MTUtils(\n nameRegistry.getContractDetails(ParamManager.MERKLE_UTILS())\n );\n accountsTree = IncrementalTree(\n nameRegistry.getContractDetails(ParamManager.ACCOUNTS_TREE())\n );\n tokenContract = IERC20(\n nameRegistry.getContractDetails(ParamManager.TEST_TOKEN())\n );\n\n tokenRegistry = ITokenRegistry(\n nameRegistry.getContractDetails(ParamManager.TOKEN_REGISTRY())\n );\n }\n\n /**\n * @notice Submits a new batch to batches\n * @param _txs Compressed transactions .\n * @param _updatedRoot New balance tree root after processing all the transactions\n */\n function submitBatch(bytes[] calldata _txs, bytes32 _updatedRoot)\n external\n payable\n onlyCoordinator\n isNotRollingBack\n {\n require(\n msg.value == ParamManager.STAKE_AMOUNT(),\n \"Please send 32 eth with batch as stake\"\n );\n if (_txs.length > ParamManager.MAX_TXS_PER_BATCH()) {\n // TODO\n }\n\n require(\n _txs.length <= ParamManager.MAX_TXS_PER_BATCH(),\n \"Batch contains more transations than the limit\"\n );\n bytes32 txRoot = merkleUtils.getMerkleRoot(_txs);\n\n // TODO need to commit the depths of all trees as well, because they are variable depth\n // make merkel root of all txs\n Types.Batch memory newBatch = Types.Batch({\n stateRoot: _updatedRoot,\n accountRoot: accountsTree.getTreeRoot(),\n committer: msg.sender,\n txRoot: txRoot,\n stakeCommitted: msg.value,\n finalisesOn: block.number + ParamManager.TIME_TO_FINALISE(),\n timestamp: now\n });\n\n batches.push(newBatch);\n logger.logNewBatch(\n newBatch.committer,\n txRoot,\n _updatedRoot,\n batches.length - 1\n );\n }\n\n /**\n * disputeBatch processes a transactions and returns the updated balance tree\n * and the updated leaves.\n * @notice Gives the number of batches submitted on-chain\n * @return Total number of batches submitted onchain\n */\n function disputeBatch(\n uint256 _batch_id,\n Types.Transaction[] memory _txs,\n Types.AccountMerkleProof[] memory _from_proofs,\n Types.PDAMerkleProof[] memory _pda_proof,\n Types.AccountMerkleProof[] memory _to_proofs\n ) public {\n // load batch\n // Types.Batch memory disputed_batch = batches[_batch_id];\n require(\n batches[_batch_id].stakeCommitted != 0,\n \"Batch doesnt exist or is slashed already\"\n );\n\n // check if batch is disputable\n require(\n block.number < batches[_batch_id].finalisesOn,\n \"Batch already finalised\"\n );\n\n require(\n _batch_id < invalidBatchMarker,\n \"Already successfully disputed. Roll back in process\"\n );\n\n // generate merkle tree from the txs provided by user\n bytes[] memory txs;\n for (uint256 i = 0; i < _txs.length; i++) {\n txs[i] = RollupUtils.BytesFromTx(_txs[i]);\n }\n bytes32 txRoot = merkleUtils.getMerkleRoot(txs);\n\n // if tx root while submission doesnt match tx root of given txs\n // dispute is unsuccessful\n require(\n txRoot != batches[_batch_id].txRoot,\n \"Invalid dispute, tx root doesn't match\"\n );\n\n // run every transaction through transaction evaluators\n bytes32 newBalanceRoot;\n uint256 fromBalance;\n uint256 toBalance;\n bool isTxValid;\n\n // start with false state\n bool isDisputeValid = false;\n\n for (uint256 i = 0; i < _txs.length; i++) {\n // call process tx update for every transaction to check if any\n // tx evaluates correctly\n (newBalanceRoot, fromBalance, toBalance, isTxValid) = processTx(\n batches[_batch_id].stateRoot,\n batches[_batch_id].accountRoot,\n _txs[i],\n _pda_proof[i],\n _from_proofs[i],\n _to_proofs[i]\n );\n if (!isTxValid) {\n isDisputeValid = true;\n break;\n }\n }\n\n // dispute is valid, we need to slash and rollback :(\n if (isDisputeValid) {\n // before rolling back mark the batch invalid\n // so we can pause and unpause\n invalidBatchMarker = _batch_id;\n SlashAndRollback();\n return;\n }\n\n // if new root doesnt match what was submitted by coordinator\n // slash and rollback\n if (newBalanceRoot != batches[_batch_id].stateRoot) {\n invalidBatchMarker = _batch_id;\n SlashAndRollback();\n return;\n }\n }\n\n /**\n * @notice processTx processes a transactions and returns the updated balance tree\n * and the updated leaves\n * conditions in require mean that the dispute be declared invalid\n * if conditons evaluate if the coordinator was at fault\n * @return Total number of batches submitted onchain\n */\n function processTx(\n bytes32 _balanceRoot,\n bytes32 _accountsRoot,\n Types.Transaction memory _tx,\n Types.PDAMerkleProof memory _pda_proof,\n Types.AccountMerkleProof memory _from_merkle_proof,\n Types.AccountMerkleProof memory _to_merkle_proof\n ) public returns (bytes32, uint256, uint256, bool) {\n // verify pubkey exists in PDA tree\n require(\n merkleUtils.verify(\n _accountsRoot,\n _pda_proof._pda.pubkey_leaf.pubkey,\n _pda_proof._pda.pathToPubkey,\n _pda_proof.siblings\n ),\n \"The PDA proof is incorrect\"\n );\n\n // convert pubkey path to ID\n uint256 computedID = merkleUtils.pathToIndex(\n _pda_proof._pda.pathToPubkey,\n ParamManager.MAX_DEPTH()\n );\n\n require(\n computedID == _tx.from.ID,\n \"Pubkey not related to the from account in the transaction\"\n );\n\n require(\n RollupUtils.calculateAddress(_pda_proof._pda.pubkey_leaf.pubkey) ==\n RollupUtils.HashFromTx(_tx).ecrecovery(_tx.signature),\n \"Signature is incorrect\"\n );\n\n // check token type is registered\n if (tokenRegistry.registeredTokens(_tx.tokenType) == address(0)) {\n // invalid state transition\n // to be slashed because the submitted transaction\n // had invalid token type\n return (ParamManager.ZERO_BYTES32(), 0, 0, false);\n }\n\n // verify from leaf exists in the balance tree\n require(\n merkleUtils.verify(\n _balanceRoot,\n RollupUtils.BytesFromAccount(_tx.from),\n _from_merkle_proof.accountIP.pathToAccount,\n _from_merkle_proof.siblings\n ),\n \"Merkle Proof for from leaf is incorrect\"\n );\n\n if (_tx.amount < 0) {\n // invalid state transition\n // needs to be slashed because the submitted transaction\n // had amount less than 0\n return (ParamManager.ZERO_BYTES32(), 0, 0, false);\n }\n\n // check from leaf has enough balance\n if (_from_merkle_proof.accountIP.account.balance < _tx.amount) {\n // invalid state transition\n // needs to be slashed because the account doesnt have enough balance\n // for the transfer\n return (ParamManager.ZERO_BYTES32(), 0, 0, false);\n }\n\n // account holds the token type in the tx\n if (_from_merkle_proof.accountIP.account.tokenType != _tx.tokenType) {\n // invalid state transition\n // needs to be slashed because the submitted transaction\n // had invalid token type\n return (ParamManager.ZERO_BYTES32(), 0, 0, false);\n }\n\n // reduce balance of from leaf\n Types.UserAccount memory new_from_leaf = RollupUtils\n .UpdateBalanceInAccount(\n _from_merkle_proof.accountIP.account,\n RollupUtils\n .BalanceFromAccount(_from_merkle_proof.accountIP.account)\n .sub(_tx.amount)\n );\n\n bytes32 newRoot = merkleUtils.updateLeafWithSiblings(\n keccak256(RollupUtils.BytesFromAccount(new_from_leaf)),\n _from_merkle_proof.accountIP.pathToAccount,\n _from_merkle_proof.siblings\n );\n\n // verify to leaf exists in the balance tree\n require(\n merkleUtils.verify(\n newRoot,\n RollupUtils.BytesFromAccount(_tx.to),\n _to_merkle_proof.accountIP.pathToAccount,\n _to_merkle_proof.siblings\n ),\n \"Merkle Proof for from leaf is incorrect\"\n );\n\n // account holds the token type in the tx\n if (_to_merkle_proof.accountIP.account.tokenType != _tx.tokenType) {\n // invalid state transition\n // needs to be slashed because the submitted transaction\n // had invalid token type\n return (ParamManager.ZERO_BYTES32(), 0, 0, false);\n }\n\n // increase balance of to leaf\n Types.UserAccount memory new_to_leaf = RollupUtils\n .UpdateBalanceInAccount(\n _to_merkle_proof.accountIP.account,\n RollupUtils\n .BalanceFromAccount(_to_merkle_proof.accountIP.account)\n .add(_tx.amount)\n );\n\n // update the merkle tree\n balancesTree.update(\n RollupUtils.BytesFromAccount(new_to_leaf),\n _to_merkle_proof.accountIP.pathToAccount\n );\n newRoot = merkleUtils.updateLeafWithSiblings(\n keccak256(RollupUtils.BytesFromAccount(new_to_leaf)),\n _to_merkle_proof.accountIP.pathToAccount,\n _to_merkle_proof.siblings\n );\n\n return (\n newRoot,\n RollupUtils.BalanceFromAccount(new_from_leaf),\n RollupUtils.BalanceFromAccount(new_to_leaf),\n true\n );\n }\n\n /**\n * @notice SlashAndRollback slashes all the coordinator's who have built on top of the invalid batch\n * and rewards challegers. Also deletes all the batches after invalid batch\n */\n function SlashAndRollback() public isRollingBack {\n uint256 challengerRewards = 0;\n uint256 burnedAmount = 0;\n uint256 totalSlashings = 0;\n\n for (uint256 i = batches.length - 1; i >= invalidBatchMarker; i--) {\n // if gas left is low we would like to do all the transfers\n // and persist intermediate states so someone else can send another tx\n // and rollback remaining batches\n if (gasleft() <= ParamManager.MIN_GAS_LIMIT_LEFT()) {\n // exit loop gracefully\n break;\n }\n\n if (i == invalidBatchMarker) {\n // we have completed rollback\n // update the marker\n invalidBatchMarker = 0;\n }\n\n // load batch\n Types.Batch memory batch = batches[i];\n\n // TODO use safe math\n // calculate challeger's reward\n challengerRewards += (batch.stakeCommitted * 2) / 3;\n burnedAmount += batch.stakeCommitted.sub(challengerRewards);\n\n batches[i].stakeCommitted = 0;\n\n // delete batch\n delete batches[i];\n\n totalSlashings++;\n logger.logBatchRollback(\n i,\n batch.committer,\n batch.stateRoot,\n batch.txRoot,\n batch.stakeCommitted\n );\n }\n\n // TODO add deposit rollback\n\n // transfer reward to challenger\n (msg.sender).transfer(challengerRewards);\n\n // burn the remaning amount\n address payable burnAddress = ParamManager.BURN_ADDRESS();\n (burnAddress).transfer(burnedAmount);\n\n // resize batches length\n batches.length = batches.length.sub(invalidBatchMarker.sub(1));\n\n logger.logRollbackFinalisation(totalSlashings);\n }\n\n /**\n * @notice Withdraw delay allows coordinators to withdraw their stake after the batch has been finalised\n * @param batch_id Batch ID that the coordinator submitted\n */\n function WithdrawStake(uint256 batch_id) public {\n Types.Batch memory committedBatch = batches[batch_id];\n require(\n msg.sender == committedBatch.committer,\n \"You are not the correct committer for this batch\"\n );\n require(\n block.number > committedBatch.finalisesOn,\n \"This batch is not yet finalised, check back soon!\"\n );\n msg.sender.transfer(committedBatch.stakeCommitted);\n logger.logStakeWithdraw(\n msg.sender,\n committedBatch.stakeCommitted,\n batch_id\n );\n }\n\n /**\n * @notice Allows user to withdraw the balance in the leaf of the balances tree.\n * User has to do the following: Prove that a transfer of X tokens was made to the burn address or leaf 0\n * The batch we are allowing withdraws from should have been already finalised, so we can assume all data in the batch to be correct\n * @param _batch_id Deposit tree depth or depth of subtree that is being deposited\n * @param withdraw_tx_proof contains the siblints, txPath and the txData for the withdraw transaction\n */\n // function Withdraw(\n // uint256 _batch_id,\n // Types.PDAMerkleProof memory _pda_proof,\n // Types.TransactionMerkleProof memory withdraw_tx_proof\n // ) public {\n // // make sure the batch id is valid\n // require(\n // batches.length - 1 >= _batch_id,\n // \"Batch id greater than total number of batches, invalid batch id\"\n // );\n\n // Types.Batch memory batch = batches[_batch_id];\n\n // // check if the batch is finalised\n // require(block.number > batch.finalisesOn, \"Batch not finalised yt\");\n // // verify transaction exists in the batch\n // merkleUtils.verify(\n // batch.txRoot,\n // RollupUtils.BytesFromTx(withdraw_tx_proof._tx.data),\n // withdraw_tx_proof._tx.pathToTx,\n // withdraw_tx_proof.siblings\n // );\n\n // // check if the transaction is withdraw transaction\n // // ensure the `to` leaf was the 0th leaf\n // require(\n // withdraw_tx_proof._tx.data.to.ID == 0,\n // \"Not a withdraw transaction\"\n // );\n\n // bool isClaimed = withdrawTxClaimed[_batch_id][withdraw_tx_proof\n // ._tx\n // .pathToTx];\n // require(!isClaimed, \"Withdraw transaction already claimed\");\n // withdrawTxClaimed[_batch_id][withdraw_tx_proof._tx.pathToTx] = true;\n\n // // withdraw checks out, transfer to the account in account tree\n // address tokenContractAddress = tokenRegistry.registeredTokens(\n // withdraw_tx_proof._tx.data.tokenType\n // );\n\n // // convert pubkey path to ID\n // // TODO replace MAX_DEPTH with the committed depth\n // uint256 computedID = merkleUtils.pathToIndex(\n // _pda_proof._pda.pathToPubkey,\n // ParamManager.MAX_DEPTH()\n // );\n\n // require(\n // computedID == withdraw_tx_proof._tx.data.from.ID,\n // \"Pubkey not related to the from account in the transaction\"\n // );\n\n // address receiver = RollupUtils.calculateAddress(\n // _pda_proof._pda.pubkey_leaf.pubkey\n // );\n // require(\n // receiver ==\n // RollupUtils.HashFromTx(withdraw_tx_proof._tx.data).ecrecovery(\n // withdraw_tx_proof._tx.data.signature\n // ),\n // \"Signature is incorrect\"\n // );\n\n // uint256 amount = withdraw_tx_proof._tx.data.amount;\n\n // tokenContract = IERC20(tokenContractAddress);\n // require(tokenContract.transfer(receiver, amount), \"Unable to trasnfer\");\n // }\n}\n" + }, + "contracts/logger.sol": { + "content": "pragma solidity ^0.5.15;\n\n\ncontract Logger {\n /*********************\n * Rollup Contract *\n ********************/\n event NewBatch(\n address committer,\n bytes32 txroot,\n bytes32 updatedRoot,\n uint256 index\n );\n\n function logNewBatch(\n address committer,\n bytes32 txroot,\n bytes32 updatedRoot,\n uint256 index\n ) public {\n emit NewBatch(committer, txroot, updatedRoot, index);\n }\n\n event StakeWithdraw(address committed, uint256 amount, uint256 batch_id);\n\n function logStakeWithdraw(\n address committed,\n uint256 amount,\n uint256 batch_id\n ) public {\n emit StakeWithdraw(committed, amount, batch_id);\n }\n\n event BatchRollback(\n uint256 batch_id,\n address committer,\n bytes32 stateRoot,\n bytes32 txRoot,\n uint256 stakeSlashed\n );\n\n function logBatchRollback(\n uint256 batch_id,\n address committer,\n bytes32 stateRoot,\n bytes32 txRoot,\n uint256 stakeSlashed\n ) public {\n emit BatchRollback(\n batch_id,\n committer,\n stateRoot,\n txRoot,\n stakeSlashed\n );\n }\n\n event RollbackFinalisation(uint256 totalBatchesSlashed);\n\n function logRollbackFinalisation(uint256 totalBatchesSlashed) public {\n emit RollbackFinalisation(totalBatchesSlashed);\n }\n\n event RegisteredToken(uint256 tokenType, address tokenContract);\n\n function logRegisteredToken(uint256 tokenType, address tokenContract)\n public\n {\n emit RegisteredToken(tokenType, tokenContract);\n }\n\n event RegistrationRequest(address tokenContract);\n\n function logRegistrationRequest(address tokenContract) public {\n emit RegistrationRequest(tokenContract);\n }\n\n event DepositQueued(\n uint256 AccountID,\n address destination,\n uint256 amount,\n uint256 token,\n bytes32 accountHash,\n bytes pubkey\n );\n\n function logDepositQueued(\n uint256 accountID,\n address destination,\n uint256 amount,\n uint256 token,\n bytes32 accountHash,\n bytes memory pubkey\n ) public {\n emit DepositQueued(\n accountID,\n destination,\n amount,\n token,\n accountHash,\n pubkey\n );\n }\n\n event DepositLeafMerged(bytes32 left, bytes32 right, bytes32 newRoot);\n\n function logDepositLeafMerged(bytes32 left, bytes32 right, bytes32 newRoot)\n public\n {\n emit DepositLeafMerged(left, right, newRoot);\n }\n\n event DepositsFinalised(\n bytes32 depositSubTreeRoot,\n uint256 pathToSubTree,\n bytes32 newBalanceRoot\n );\n\n function logDepositFinalised(\n bytes32 depositSubTreeRoot,\n uint256 pathToSubTree,\n bytes32 newBalanceRoot\n ) public {\n emit DepositsFinalised(\n depositSubTreeRoot,\n pathToSubTree,\n newBalanceRoot\n );\n }\n}\n" + }, + "solidity-bytes-utils/contracts/BytesLib.sol": { + "content": "/*\n * @title Solidity Bytes Arrays Utils\n * @author Gonçalo Sá \n *\n * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity.\n * The library lets you concatenate, slice and type cast bytes arrays both in memory and storage.\n */\n\npragma solidity ^0.5.0;\n\n\nlibrary BytesLib {\n function concat(\n bytes memory _preBytes,\n bytes memory _postBytes\n )\n internal\n pure\n returns (bytes memory)\n {\n bytes memory tempBytes;\n\n assembly {\n // Get a location of some free memory and store it in tempBytes as\n // Solidity does for memory variables.\n tempBytes := mload(0x40)\n\n // Store the length of the first bytes array at the beginning of\n // the memory for tempBytes.\n let length := mload(_preBytes)\n mstore(tempBytes, length)\n\n // Maintain a memory counter for the current write location in the\n // temp bytes array by adding the 32 bytes for the array length to\n // the starting location.\n let mc := add(tempBytes, 0x20)\n // Stop copying when the memory counter reaches the length of the\n // first bytes array.\n let end := add(mc, length)\n\n for {\n // Initialize a copy counter to the start of the _preBytes data,\n // 32 bytes into its memory.\n let cc := add(_preBytes, 0x20)\n } lt(mc, end) {\n // Increase both counters by 32 bytes each iteration.\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n // Write the _preBytes data into the tempBytes memory 32 bytes\n // at a time.\n mstore(mc, mload(cc))\n }\n\n // Add the length of _postBytes to the current length of tempBytes\n // and store it as the new length in the first 32 bytes of the\n // tempBytes memory.\n length := mload(_postBytes)\n mstore(tempBytes, add(length, mload(tempBytes)))\n\n // Move the memory counter back from a multiple of 0x20 to the\n // actual end of the _preBytes data.\n mc := end\n // Stop copying when the memory counter reaches the new combined\n // length of the arrays.\n end := add(mc, length)\n\n for {\n let cc := add(_postBytes, 0x20)\n } lt(mc, end) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n mstore(mc, mload(cc))\n }\n\n // Update the free-memory pointer by padding our last write location\n // to 32 bytes: add 31 bytes to the end of tempBytes to move to the\n // next 32 byte block, then round down to the nearest multiple of\n // 32. If the sum of the length of the two arrays is zero then add \n // one before rounding down to leave a blank 32 bytes (the length block with 0).\n mstore(0x40, and(\n add(add(end, iszero(add(length, mload(_preBytes)))), 31),\n not(31) // Round down to the nearest 32 bytes.\n ))\n }\n\n return tempBytes;\n }\n\n function concatStorage(bytes storage _preBytes, bytes memory _postBytes) internal {\n assembly {\n // Read the first 32 bytes of _preBytes storage, which is the length\n // of the array. (We don't need to use the offset into the slot\n // because arrays use the entire slot.)\n let fslot := sload(_preBytes_slot)\n // Arrays of 31 bytes or less have an even value in their slot,\n // while longer arrays have an odd value. The actual length is\n // the slot divided by two for odd values, and the lowest order\n // byte divided by two for even values.\n // If the slot is even, bitwise and the slot with 255 and divide by\n // two to get the length. If the slot is odd, bitwise and the slot\n // with -1 and divide by two.\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n let newlength := add(slength, mlength)\n // slength can contain both the length and contents of the array\n // if length < 32 bytes so let's prepare for that\n // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage\n switch add(lt(slength, 32), lt(newlength, 32))\n case 2 {\n // Since the new array still fits in the slot, we just need to\n // update the contents of the slot.\n // uint256(bytes_storage) = uint256(bytes_storage) + uint256(bytes_memory) + new_length\n sstore(\n _preBytes_slot,\n // all the modifications to the slot are inside this\n // next block\n add(\n // we can just add to the slot contents because the\n // bytes we want to change are the LSBs\n fslot,\n add(\n mul(\n div(\n // load the bytes from memory\n mload(add(_postBytes, 0x20)),\n // zero all bytes to the right\n exp(0x100, sub(32, mlength))\n ),\n // and now shift left the number of bytes to\n // leave space for the length in the slot\n exp(0x100, sub(32, newlength))\n ),\n // increase length by the double of the memory\n // bytes length\n mul(mlength, 2)\n )\n )\n )\n }\n case 1 {\n // The stored value fits in the slot, but the combined value\n // will exceed it.\n // get the keccak hash to get the contents of the array\n mstore(0x0, _preBytes_slot)\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n\n // save new length\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n\n // The contents of the _postBytes array start 32 bytes into\n // the structure. Our first read should obtain the `submod`\n // bytes that can fit into the unused space in the last word\n // of the stored array. To get this, we read 32 bytes starting\n // from `submod`, so the data we read overlaps with the array\n // contents by `submod` bytes. Masking the lowest-order\n // `submod` bytes allows us to add that value directly to the\n // stored value.\n\n let submod := sub(32, slength)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n\n sstore(\n sc,\n add(\n and(\n fslot,\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00\n ),\n and(mload(mc), mask)\n )\n )\n\n for {\n mc := add(mc, 0x20)\n sc := add(sc, 1)\n } lt(mc, end) {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } {\n sstore(sc, mload(mc))\n }\n\n mask := exp(0x100, sub(mc, end))\n\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n default {\n // get the keccak hash to get the contents of the array\n mstore(0x0, _preBytes_slot)\n // Start copying to the last used word of the stored array.\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n\n // save new length\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n\n // Copy over the first `submod` bytes of the new data as in\n // case 1 above.\n let slengthmod := mod(slength, 32)\n let mlengthmod := mod(mlength, 32)\n let submod := sub(32, slengthmod)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n\n sstore(sc, add(sload(sc), and(mload(mc), mask)))\n \n for { \n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } lt(mc, end) {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } {\n sstore(sc, mload(mc))\n }\n\n mask := exp(0x100, sub(mc, end))\n\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n }\n }\n\n function slice(\n bytes memory _bytes,\n uint _start,\n uint _length\n )\n internal\n pure\n returns (bytes memory)\n {\n require(_bytes.length >= (_start + _length));\n\n bytes memory tempBytes;\n\n assembly {\n switch iszero(_length)\n case 0 {\n // Get a location of some free memory and store it in tempBytes as\n // Solidity does for memory variables.\n tempBytes := mload(0x40)\n\n // The first word of the slice result is potentially a partial\n // word read from the original array. To read it, we calculate\n // the length of that partial word and start copying that many\n // bytes into the array. The first word we copy will start with\n // data we don't care about, but the last `lengthmod` bytes will\n // land at the beginning of the contents of the new array. When\n // we're done copying, we overwrite the full first word with\n // the actual length of the slice.\n let lengthmod := and(_length, 31)\n\n // The multiplication in the next line is necessary\n // because when slicing multiples of 32 bytes (lengthmod == 0)\n // the following copy loop was copying the origin's length\n // and then ending prematurely not copying everything it should.\n let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n let end := add(mc, _length)\n\n for {\n // The multiplication in the next line has the same exact purpose\n // as the one above.\n let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n } lt(mc, end) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n mstore(mc, mload(cc))\n }\n\n mstore(tempBytes, _length)\n\n //update free-memory pointer\n //allocating the array padded to 32 bytes like the compiler does now\n mstore(0x40, and(add(mc, 31), not(31)))\n }\n //if we want a zero-length slice let's just return a zero-length array\n default {\n tempBytes := mload(0x40)\n\n mstore(0x40, add(tempBytes, 0x20))\n }\n }\n\n return tempBytes;\n }\n\n function toAddress(bytes memory _bytes, uint _start) internal pure returns (address) {\n require(_bytes.length >= (_start + 20));\n address tempAddress;\n\n assembly {\n tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n }\n\n return tempAddress;\n }\n\n function toUint8(bytes memory _bytes, uint _start) internal pure returns (uint8) {\n require(_bytes.length >= (_start + 1));\n uint8 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x1), _start))\n }\n\n return tempUint;\n }\n\n function toUint16(bytes memory _bytes, uint _start) internal pure returns (uint16) {\n require(_bytes.length >= (_start + 2));\n uint16 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x2), _start))\n }\n\n return tempUint;\n }\n\n function toUint32(bytes memory _bytes, uint _start) internal pure returns (uint32) {\n require(_bytes.length >= (_start + 4));\n uint32 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x4), _start))\n }\n\n return tempUint;\n }\n\n function toUint64(bytes memory _bytes, uint _start) internal pure returns (uint64) {\n require(_bytes.length >= (_start + 8));\n uint64 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x8), _start))\n }\n\n return tempUint;\n }\n\n function toUint96(bytes memory _bytes, uint _start) internal pure returns (uint96) {\n require(_bytes.length >= (_start + 12));\n uint96 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0xc), _start))\n }\n\n return tempUint;\n }\n\n function toUint128(bytes memory _bytes, uint _start) internal pure returns (uint128) {\n require(_bytes.length >= (_start + 16));\n uint128 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x10), _start))\n }\n\n return tempUint;\n }\n\n function toUint(bytes memory _bytes, uint _start) internal pure returns (uint256) {\n require(_bytes.length >= (_start + 32));\n uint256 tempUint;\n\n assembly {\n tempUint := mload(add(add(_bytes, 0x20), _start))\n }\n\n return tempUint;\n }\n\n function toBytes32(bytes memory _bytes, uint _start) internal pure returns (bytes32) {\n require(_bytes.length >= (_start + 32));\n bytes32 tempBytes32;\n\n assembly {\n tempBytes32 := mload(add(add(_bytes, 0x20), _start))\n }\n\n return tempBytes32;\n }\n\n function equal(bytes memory _preBytes, bytes memory _postBytes) internal pure returns (bool) {\n bool success = true;\n\n assembly {\n let length := mload(_preBytes)\n\n // if lengths don't match the arrays are not equal\n switch eq(length, mload(_postBytes))\n case 1 {\n // cb is a circuit breaker in the for loop since there's\n // no said feature for inline assembly loops\n // cb = 1 - don't breaker\n // cb = 0 - break\n let cb := 1\n\n let mc := add(_preBytes, 0x20)\n let end := add(mc, length)\n\n for {\n let cc := add(_postBytes, 0x20)\n // the next line is the loop condition:\n // while(uint(mc < end) + cb == 2)\n } eq(add(lt(mc, end), cb), 2) {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n } {\n // if any of these checks fails then arrays are not equal\n if iszero(eq(mload(mc), mload(cc))) {\n // unsuccess:\n success := 0\n cb := 0\n }\n }\n }\n default {\n // unsuccess:\n success := 0\n }\n }\n\n return success;\n }\n\n function equalStorage(\n bytes storage _preBytes,\n bytes memory _postBytes\n )\n internal\n view\n returns (bool)\n {\n bool success = true;\n\n assembly {\n // we know _preBytes_offset is 0\n let fslot := sload(_preBytes_slot)\n // Decode the length of the stored array like in concatStorage().\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n\n // if lengths don't match the arrays are not equal\n switch eq(slength, mlength)\n case 1 {\n // slength can contain both the length and contents of the array\n // if length < 32 bytes so let's prepare for that\n // v. http://solidity.readthedocs.io/en/latest/miscellaneous.html#layout-of-state-variables-in-storage\n if iszero(iszero(slength)) {\n switch lt(slength, 32)\n case 1 {\n // blank the last byte which is the length\n fslot := mul(div(fslot, 0x100), 0x100)\n\n if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) {\n // unsuccess:\n success := 0\n }\n }\n default {\n // cb is a circuit breaker in the for loop since there's\n // no said feature for inline assembly loops\n // cb = 1 - don't breaker\n // cb = 0 - break\n let cb := 1\n\n // get the keccak hash to get the contents of the array\n mstore(0x0, _preBytes_slot)\n let sc := keccak256(0x0, 0x20)\n\n let mc := add(_postBytes, 0x20)\n let end := add(mc, mlength)\n\n // the next line is the loop condition:\n // while(uint(mc < end) + cb == 2)\n for {} eq(add(lt(mc, end), cb), 2) {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n } {\n if iszero(eq(sload(sc), mload(mc))) {\n // unsuccess:\n success := 0\n cb := 0\n }\n }\n }\n }\n }\n default {\n // unsuccess:\n success := 0\n }\n }\n\n return success;\n }\n}\n" + }, + "contracts/libs/ECVerify.sol": { + "content": "pragma solidity ^0.5.15;\n\n\nlibrary ECVerify {\n function ecrecovery(bytes32 hash, bytes memory sig)\n public\n pure\n returns (address)\n {\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n if (sig.length != 65) {\n return address(0x0);\n }\n\n assembly {\n r := mload(add(sig, 32))\n s := mload(add(sig, 64))\n v := and(mload(add(sig, 65)), 255)\n }\n\n // https://github.com/ethereum/go-ethereum/issues/2053\n if (v < 27) {\n v += 27;\n }\n\n if (v != 27 && v != 28) {\n return address(0x0);\n }\n\n // get address out of hash and signature\n address result = ecrecover(hash, v, r, s);\n\n // ecrecover returns zero on error\n require(result != address(0x0));\n\n return result;\n }\n\n function ecrecovery(bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n public\n pure\n returns (address)\n {\n // get address out of hash and signature\n address result = ecrecover(hash, v, r, s);\n\n // ecrecover returns zero on error\n require(result != address(0x0));\n\n return result;\n }\n\n function ecverify(bytes32 hash, bytes memory sig, address signer)\n public\n pure\n returns (bool)\n {\n return signer == ecrecovery(hash, sig);\n }\n}\n" + }, + "contracts/TokenRegistry.sol": { + "content": "pragma solidity >=0.4.21;\n\nimport {Logger} from \"./Logger.sol\";\nimport {NameRegistry as Registry} from \"./NameRegistry.sol\";\nimport {ParamManager} from \"./libs/ParamManager.sol\";\n\n\ncontract TokenRegistry {\n address public Coordinator;\n address public rollupNC;\n Logger public logger;\n mapping(address => bool) public pendingRegistrations;\n mapping(uint256 => address) public registeredTokens;\n\n uint256 public numTokens;\n\n modifier onlyCoordinator() {\n assert(msg.sender == Coordinator);\n _;\n }\n Registry public nameRegistry;\n\n constructor(address _registryAddr) public {\n nameRegistry = Registry(_registryAddr);\n Coordinator = msg.sender;\n\n logger = Logger(nameRegistry.getContractDetails(ParamManager.LOGGER()));\n }\n\n /**\n * @notice Requests addition of a new token to the chain, can be called by anyone\n * @param tokenContract Address for the new token being added\n */\n function requestTokenRegistration(address tokenContract) public {\n require(\n pendingRegistrations[tokenContract] == false,\n \"Token already registered.\"\n );\n pendingRegistrations[tokenContract] = true;\n logger.logRegistrationRequest(tokenContract);\n }\n\n /**\n * @notice Add new tokens to the rollup chain by assigning them an ID called tokenType from here on\n * @param tokenContract Deposit tree depth or depth of subtree that is being deposited\n * TODO: add a modifier to allow only coordinator\n */\n function finaliseTokenRegistration(address tokenContract) public {\n require(\n pendingRegistrations[tokenContract],\n \"Token was not registered\"\n );\n numTokens++;\n registeredTokens[numTokens] = tokenContract; // tokenType => token contract address\n logger.logRegisteredToken(numTokens, tokenContract);\n }\n}\n" + }, + "contracts/Migrations.sol": { + "content": "pragma solidity >=0.4.21 <0.6.0;\n\n\ncontract Migrations {\n address public owner;\n uint256 public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint256 completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n" + }, + "contracts/POB.sol": { + "content": "pragma solidity ^0.5.15;\n\n\n/*\nPOB contract handles all the proof of burn related functionality\n*/\ncontract POB {\n constructor() public {}\n}\n" + } + }, + "settings": { + "metadata": { + "useLiteralContent": true + }, + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers" + ], + "": [ + "id", + "ast" + ] + } + } + } +} \ No newline at end of file diff --git a/cache/solc-output.json b/cache/solc-output.json new file mode 100644 index 0000000..2c90023 --- /dev/null +++ b/cache/solc-output.json @@ -0,0 +1,76810 @@ +{ + "contracts": { + "@openzeppelin/contracts/GSN/Context.sol": { + "Context": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098533dd3d2e384cca3d2d7e19fcdfdcc0d8c48436013eb5204ba739726e9258664736f6c634300050f0032", + "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP9 MSTORE8 RETURNDATASIZE 0xD3 0xD2 0xE3 DUP5 0xCC LOG3 0xD2 0xD7 0xE1 SWAP16 0xCD REVERT 0xCC 0xD DUP13 0x48 NUMBER PUSH1 0x13 0xEB MSTORE DIV 0xBA PUSH20 0x9726E9258664736F6C634300050F003200000000 ", + "sourceMap": "589:4708:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098533dd3d2e384cca3d2d7e19fcdfdcc0d8c48436013eb5204ba739726e9258664736f6c634300050f0032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP9 MSTORE8 RETURNDATASIZE 0xD3 0xD2 0xE3 DUP5 0xCC LOG3 0xD2 0xD7 0xE1 SWAP16 0xCD REVERT 0xCC 0xD DUP13 0x48 NUMBER PUSH1 0x13 0xEB MSTORE DIV 0xBA PUSH20 0x9726E9258664736F6C634300050F003200000000 ", + "sourceMap": "589:4708:1:-;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/ownership/Ownable.sol": { + "Ownable": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "isOwner()": "8f32d59b", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + } + } + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052610e3a806100136000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a08231146101fd578063a457c2d714610255578063a9059cbb146102bb578063dd62ed3e1461032157610088565b8063095ea7b31461008d57806318160ddd146100f357806323b872dd146101115780633950935114610197575b600080fd5b6100d9600480360360408110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610399565b604051808215151515815260200191505060405180910390f35b6100fb6103b7565b6040518082815260200191505060405180910390f35b61017d6004803603606081101561012757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103c1565b604051808215151515815260200191505060405180910390f35b6101e3600480360360408110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061049a565b604051808215151515815260200191505060405180910390f35b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054d565b6040518082815260200191505060405180910390f35b6102a16004803603604081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610595565b604051808215151515815260200191505060405180910390f35b610307600480360360408110156102d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610662565b604051808215151515815260200191505060405180910390f35b6103836004803603604081101561033757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610680565b6040518082815260200191505060405180910390f35b60006103ad6103a6610707565b848461070f565b6001905092915050565b6000600254905090565b60006103ce848484610906565b61048f846103da610707565b61048a85604051806060016040528060288152602001610d7060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610440610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b600190509392505050565b60006105436104a7610707565b8461053e85600160006104b8610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b61070f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106586105a2610707565b8461065385604051806060016040528060258152602001610de160259139600160006105cc610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b6001905092915050565b600061067661066f610707565b8484610906565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610795576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610dbd6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561081b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d286022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610d986025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610d056023913960400191505060405180910390fd5b610a7d81604051806060016040528060268152602001610d4a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b10816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610c69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c2e578082015181840152602081019050610c13565b50505050905090810190601f168015610c5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158207fd0c2762ace8dd831f92ca93ea48ed5c55971cb384414b034406eb06dc81a8364736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xE3A DUP1 PUSH2 0x13 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x321 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x197 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x399 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x49A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x662 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x680 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x3AD PUSH2 0x3A6 PUSH2 0x707 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE DUP5 DUP5 DUP5 PUSH2 0x906 JUMP JUMPDEST PUSH2 0x48F DUP5 PUSH2 0x3DA PUSH2 0x707 JUMP JUMPDEST PUSH2 0x48A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD70 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x440 PUSH2 0x707 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xBBC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x543 PUSH2 0x4A7 PUSH2 0x707 JUMP JUMPDEST DUP5 PUSH2 0x53E DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4B8 PUSH2 0x707 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xC7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x658 PUSH2 0x5A2 PUSH2 0x707 JUMP JUMPDEST DUP5 PUSH2 0x653 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDE1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5CC PUSH2 0x707 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xBBC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x676 PUSH2 0x66F PUSH2 0x707 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x906 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x795 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDBD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD28 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x98C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD98 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD05 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA7D DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD4A PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xBBC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xB10 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xC7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xC69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC2E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC13 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC5B 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xCFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x723158207FD0C2762ACE8DD831F92CA93EA48ED5C55971CB384414 0xB0 CALLVALUE BLOCKHASH PUSH15 0xB06DC81A8364736F6C634300050F00 ORIGIN ", + "sourceMap": "1268:6823:3:-;;;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a08231146101fd578063a457c2d714610255578063a9059cbb146102bb578063dd62ed3e1461032157610088565b8063095ea7b31461008d57806318160ddd146100f357806323b872dd146101115780633950935114610197575b600080fd5b6100d9600480360360408110156100a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610399565b604051808215151515815260200191505060405180910390f35b6100fb6103b7565b6040518082815260200191505060405180910390f35b61017d6004803603606081101561012757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103c1565b604051808215151515815260200191505060405180910390f35b6101e3600480360360408110156101ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061049a565b604051808215151515815260200191505060405180910390f35b61023f6004803603602081101561021357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054d565b6040518082815260200191505060405180910390f35b6102a16004803603604081101561026b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610595565b604051808215151515815260200191505060405180910390f35b610307600480360360408110156102d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610662565b604051808215151515815260200191505060405180910390f35b6103836004803603604081101561033757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610680565b6040518082815260200191505060405180910390f35b60006103ad6103a6610707565b848461070f565b6001905092915050565b6000600254905090565b60006103ce848484610906565b61048f846103da610707565b61048a85604051806060016040528060288152602001610d7060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610440610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b600190509392505050565b60006105436104a7610707565b8461053e85600160006104b8610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b61070f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006106586105a2610707565b8461065385604051806060016040528060258152602001610de160259139600160006105cc610707565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b61070f565b6001905092915050565b600061067661066f610707565b8484610906565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610795576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610dbd6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561081b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d286022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610d986025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610d056023913960400191505060405180910390fd5b610a7d81604051806060016040528060268152602001610d4a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bbc9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b10816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c7c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610c69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c2e578082015181840152602081019050610c13565b50505050905090810190601f168015610c5b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158207fd0c2762ace8dd831f92ca93ea48ed5c55971cb384414b034406eb06dc81a8364736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x321 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x197 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x399 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFB PUSH2 0x3B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x49A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x662 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x680 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x3AD PUSH2 0x3A6 PUSH2 0x707 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CE DUP5 DUP5 DUP5 PUSH2 0x906 JUMP JUMPDEST PUSH2 0x48F DUP5 PUSH2 0x3DA PUSH2 0x707 JUMP JUMPDEST PUSH2 0x48A DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD70 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x440 PUSH2 0x707 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xBBC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x543 PUSH2 0x4A7 PUSH2 0x707 JUMP JUMPDEST DUP5 PUSH2 0x53E DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x4B8 PUSH2 0x707 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xC7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x658 PUSH2 0x5A2 PUSH2 0x707 JUMP JUMPDEST DUP5 PUSH2 0x653 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDE1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x5CC PUSH2 0x707 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xBBC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x70F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x676 PUSH2 0x66F PUSH2 0x707 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x906 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x795 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDBD PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x81B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD28 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x98C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD98 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD05 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA7D DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD4A PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xBBC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xB10 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xC7C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xC69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC2E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC13 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC5B 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xCFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x723158207FD0C2762ACE8DD831F92CA93EA48ED5C55971CB384414 0xB0 CALLVALUE BLOCKHASH PUSH15 0xB06DC81A8364736F6C634300050F00 ORIGIN ", + "sourceMap": "1268:6823:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1268:6823:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4496:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2500:149;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;1706:108::-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;4496:258::-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;2230:132::-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:3:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:1:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "contracts/Deployer.sol": { + "Deployer": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "nameregistry", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "nameRegistryAddr", + "type": "address" + } + ], + "name": "deployContracts", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 181 + }, + { + "length": 20, + "start": 642 + }, + { + "length": 20, + "start": 1186 + }, + { + "length": 20, + "start": 1928 + }, + { + "length": 20, + "start": 2378 + }, + { + "length": 20, + "start": 2912 + }, + { + "length": 20, + "start": 3395 + }, + { + "length": 20, + "start": 11028 + }, + { + "length": 20, + "start": 13533 + }, + { + "length": 20, + "start": 21166 + } + ] + } + }, + "object": "60806040523480156200001157600080fd5b5060405162005c2838038062005c28833981810160405260208110156200003757600080fd5b810190808051906020019092919050505062000059816200006160201b60201c565b505062000673565b6000808290506000604051620000779062000649565b604051809103906000f08015801562000094573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000f857600080fd5b505af41580156200010d573d6000803e3d6000fd5b505050506040513d60208110156200012457600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620001a057600080fd5b505af1158015620001b5573d6000803e3d6000fd5b505050506040513d6020811015620001cc57600080fd5b810190808051906020019092919050505062000234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062005c046024913960400191505060405180910390fd5b6000604051620002449062000657565b604051809103906000f08015801562000261573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c557600080fd5b505af4158015620002da573d6000803e3d6000fd5b505050506040513d6020811015620002f157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200036d57600080fd5b505af115801562000382573d6000803e3d6000fd5b505050506040513d60208110156200039957600080fd5b81019080805190602001909291905050506200041d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616e6e6f74207265676973746572206c6f676765720000000000000000000081525060200191505060405180910390fd5b6000856040516200042e9062000665565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000481573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e557600080fd5b505af4158015620004fa573d6000803e3d6000fd5b505050506040513d60208110156200051157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200058d57600080fd5b505af1158015620005a2573d6000803e3d6000fd5b505050506040513d6020811015620005b957600080fd5b81019080805190602001909291905050506200063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420726567697374657220746f6b656e207265676973747279000081525060200191505060405180910390fd5b85945050505050919050565b61146b80620034c283390190565b61087c806200492d83390190565b610a5b80620051a983390190565b612e3f80620006836000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b5d80b9414610030575b600080fd5b6100726004803603602081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008082905060006040516100c89061067d565b604051809103906000f0801580156100e4573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156101ec57600080fd5b505af1158015610200573d6000803e3d6000fd5b505050506040513d602081101561021657600080fd5b810190808051906020019092919050505061027c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612de76024913960400191505060405180910390fd5b600060405161028a9061068a565b604051809103906000f0801580156102a6573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030957600080fd5b505af415801561031d573d6000803e3d6000fd5b505050506040513d602081101561033357600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b810190808051906020019092919050505061045b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616e6e6f74207265676973746572206c6f676765720000000000000000000081525060200191505060405180910390fd5b60008560405161046a90610697565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156104bc573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051f57600080fd5b505af4158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b8101908080519060200190929190505050610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420726567697374657220746f6b656e207265676973747279000081525060200191505060405180910390fd5b85945050505050919050565b61146b806106a583390190565b61087c80611b1083390190565b610a5b8061238c8339019056fe60806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565a265627a7a7231582042d855c280d57aa151771622eba292f22dbd41ac9cffbdfd6c159e67cef798d464736f6c634300050f003260806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5C28 CODESIZE SUB DUP1 PUSH3 0x5C28 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH3 0x59 DUP2 PUSH3 0x61 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH3 0x673 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x77 SWAP1 PUSH3 0x649 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x10D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH3 0x234 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x5C04 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH3 0x244 SWAP1 PUSH3 0x657 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x261 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x2DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x382 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH3 0x41D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F74207265676973746572206C6F6767657200000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x40 MLOAD PUSH3 0x42E SWAP1 PUSH3 0x665 JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x8A5B1D7A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x4FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x58D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x5A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH3 0x63D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F7420726567697374657220746F6B656E2072656769737472790000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x146B DUP1 PUSH3 0x34C2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x87C DUP1 PUSH3 0x492D DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xA5B DUP1 PUSH3 0x51A9 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x2E3F DUP1 PUSH3 0x683 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB5D80B94 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP1 PUSH2 0x67D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2DE7 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x28A SWAP1 PUSH2 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x31D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x45B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F74207265676973746572206C6F6767657200000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x40 MLOAD PUSH2 0x46A SWAP1 PUSH2 0x697 JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x4BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x8A5B1D7A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x671 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F7420726567697374657220746F6B656E2072656769737472790000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x146B DUP1 PUSH2 0x6A5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x87C DUP1 PUSH2 0x1B10 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xA5B DUP1 PUSH2 0x238C DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SHL PUSH1 0x2 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x99 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x27C JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xD4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xEC SWAP3 SWAP2 SWAP1 PUSH3 0x1EB JUMP JUMPDEST POP PUSH3 0x100 PUSH1 0x1 SLOAD PUSH3 0x106 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x359 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x11A SWAP2 SWAP1 PUSH3 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP1 DUP2 SLOAD DUP2 LT PUSH3 0x13E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1E7 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH3 0x16D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH3 0x189 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1A7 SWAP3 SWAP2 SWAP1 PUSH3 0x2CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1CB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH3 0x153 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x22A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x229 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x20C JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x239 SWAP2 SWAP1 PUSH3 0x23D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x262 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25E JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x244 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x276 DUP2 PUSH3 0x33F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x29F DUP5 DUP3 DUP6 ADD PUSH3 0x265 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2B3 DUP2 PUSH3 0x314 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x2C4 DUP2 PUSH3 0x32B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x2E1 PUSH1 0x0 DUP4 ADD DUP6 PUSH3 0x2A8 JUMP JUMPDEST PUSH3 0x2F0 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x2A8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x30E PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x2B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x338 DUP3 PUSH3 0x31E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x34A DUP2 PUSH3 0x31E JUMP JUMPDEST DUP2 EQ PUSH3 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1102 DUP1 PUSH3 0x369 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F6485FB GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDB0787CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB0787CB EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDF7C7263 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xE5F8E87B EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xE913E47F EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0xF8B557B7 EQ PUSH2 0x403 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x8F6485FB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x99AE9309 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x9B24B3B0 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x337 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x40FF34EF GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x40FF34EF EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x48419AD8 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5FED7127 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x747E2D1C EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x8530997C EQ PUSH2 0x277 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xCB0A343 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x25AB625E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x30D90A76 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9B JUMP JUMPDEST PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x22C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x25C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x291 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2EC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x31C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x96E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33F PUSH2 0x98E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x36F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x36A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x39A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AC SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH2 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x3E8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x418 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC20 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x44B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x467 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x483 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 PUSH2 0x4BF DUP7 DUP4 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 EXP DUP2 PUSH1 0xFF AND MUL DUP4 ADD SWAP3 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4AB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4F5 DUP6 DUP6 DUP6 PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 PUSH1 0x1 DUP4 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x547 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP7 DUP7 SWAP1 POP DUP2 LT ISZERO PUSH2 0x5F6 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x550 JUMP JUMPDEST POP PUSH1 0x1 DUP7 DUP7 SWAP1 POP EQ ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x610 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP PUSH2 0x777 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x62E JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x642 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST JUMPDEST PUSH1 0x1 DUP4 GT ISZERO PUSH2 0x75C JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP5 DUP2 PUSH2 0x68C JUMPI INVALID JUMPDEST DIV DUP2 LT ISZERO PUSH2 0x6F2 JUMPI PUSH2 0x6CD DUP3 PUSH1 0x2 DUP4 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 PUSH1 0x2 DUP6 MUL ADD DUP2 MLOAD DUP2 LT PUSH2 0x6C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x682 JUMP JUMPDEST POP PUSH1 0x2 DUP4 DUP2 PUSH2 0x6FD JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x70C JUMPI INVALID JUMPDEST MOD EQ DUP1 ISZERO PUSH2 0x71B JUMPI POP PUSH1 0x1 DUP4 EQ ISZERO JUMPDEST ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x72D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST PUSH2 0x66D JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x769 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x78A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7D8 DUP9 DUP6 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x7F7 JUMPI PUSH2 0x7F0 DUP6 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP PUSH2 0x804 JUMP JUMPDEST PUSH2 0x801 DUP3 DUP7 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x7AA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x86D DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x88C JUMPI PUSH2 0x885 DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x899 JUMP JUMPDEST PUSH2 0x896 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x840 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x911 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x927 DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x946 JUMPI PUSH2 0x93F DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x953 JUMP JUMPDEST PUSH2 0x950 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8FA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x97C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SWAP1 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x111111111111111111111111111111111111111111111111111111111111111 PUSH1 0x0 SHL DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SHL DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA1B DUP6 DUP6 DUP6 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA4F PUSH2 0xA4A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAA4 JUMPI DUP2 PUSH2 0xA8A DUP9 DUP3 PUSH2 0xAF8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB07 DUP2 PUSH2 0x1091 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB31 PUSH2 0xB2C DUP3 PUSH2 0x101E JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB58 DUP4 DUP3 DUP5 PUSH2 0x1082 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB70 DUP2 PUSH2 0x10A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0xAAE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP5 DUP3 DUP6 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC05 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xC16 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xC55 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xC66 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8F DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCBF DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE8 DUP8 DUP3 DUP9 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xCF9 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD22 DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD51 DUP7 DUP3 DUP8 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD62 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCD DUP5 DUP3 DUP6 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE11 DUP7 DUP3 DUP8 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE22 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE75 DUP5 DUP3 DUP6 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE9F DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEB0 DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xEC3 DUP2 PUSH2 0x1055 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xED2 DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE4 DUP4 DUP6 PUSH2 0x104A JUMP JUMPDEST SWAP4 POP PUSH2 0xEF1 DUP4 DUP6 DUP5 PUSH2 0x1082 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF06 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xF15 DUP2 PUSH2 0x1075 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF28 DUP3 DUP5 DUP7 PUSH2 0xED8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF49 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF64 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF7F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xF8C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFA8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFC3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xF0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x109A DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP2 EQ PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B1 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP2 EQ PUSH2 0x10BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xAE SAR 0xC6 0xAE 0x5E 0xC7 0xBF 0xAF POP PUSH12 0x88A91D4893DE50138FB2F16B DUP6 NUMBER DUP14 0xB6 0xCC 0x24 0xBB KECCAK256 GAS PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x85C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x6BCA9940CE8811680DF317574A81533CEF PUSH14 0xE3318F2C8C9AAFCAF8BE78C67364 PUSH20 0x6F6C634300050F00326080604052348015610010 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA5B CODESIZE SUB DUP1 PUSH2 0xA5B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x81A DUP1 PUSH2 0x241 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E499BCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x2E6 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x7BC7AA6E EQ PUSH2 0x16A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x356 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x541 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x172 PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x747 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x282 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20776173206E6F7420726567697374657265640000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x5 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88870639 PUSH1 0x5 SLOAD DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20616C726561647920726567697374657265642E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7637D2 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x28 0xF 0xEF 0xEE PUSH29 0x68A2493585D1F5FF77D09973186D9544111B21FDB7B3E64964100E6473 PUSH16 0x6C634300050F0032436F756C64206E6F PUSH21 0x207265676973746572206D65726B6C65207574696C PUSH20 0x2074726565A265627A7A7231582042D855C280D5 PUSH27 0xA151771622EBA292F22DBD41AC9CFFBDFD6C159E67CEF798D46473 PUSH16 0x6C634300050F00326080604052600080 SHL PUSH1 0x2 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x99 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x27C JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xD4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xEC SWAP3 SWAP2 SWAP1 PUSH3 0x1EB JUMP JUMPDEST POP PUSH3 0x100 PUSH1 0x1 SLOAD PUSH3 0x106 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x359 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x11A SWAP2 SWAP1 PUSH3 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP1 DUP2 SLOAD DUP2 LT PUSH3 0x13E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1E7 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH3 0x16D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH3 0x189 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1A7 SWAP3 SWAP2 SWAP1 PUSH3 0x2CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1CB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH3 0x153 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x22A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x229 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x20C JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x239 SWAP2 SWAP1 PUSH3 0x23D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x262 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25E JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x244 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x276 DUP2 PUSH3 0x33F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x29F DUP5 DUP3 DUP6 ADD PUSH3 0x265 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2B3 DUP2 PUSH3 0x314 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x2C4 DUP2 PUSH3 0x32B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x2E1 PUSH1 0x0 DUP4 ADD DUP6 PUSH3 0x2A8 JUMP JUMPDEST PUSH3 0x2F0 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x2A8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x30E PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x2B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x338 DUP3 PUSH3 0x31E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x34A DUP2 PUSH3 0x31E JUMP JUMPDEST DUP2 EQ PUSH3 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1102 DUP1 PUSH3 0x369 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F6485FB GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDB0787CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB0787CB EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDF7C7263 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xE5F8E87B EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xE913E47F EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0xF8B557B7 EQ PUSH2 0x403 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x8F6485FB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x99AE9309 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x9B24B3B0 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x337 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x40FF34EF GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x40FF34EF EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x48419AD8 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5FED7127 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x747E2D1C EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x8530997C EQ PUSH2 0x277 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xCB0A343 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x25AB625E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x30D90A76 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9B JUMP JUMPDEST PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x22C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x25C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x291 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2EC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x31C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x96E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33F PUSH2 0x98E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x36F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x36A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x39A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AC SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH2 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x3E8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x418 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC20 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x44B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x467 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x483 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 PUSH2 0x4BF DUP7 DUP4 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 EXP DUP2 PUSH1 0xFF AND MUL DUP4 ADD SWAP3 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4AB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4F5 DUP6 DUP6 DUP6 PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 PUSH1 0x1 DUP4 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x547 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP7 DUP7 SWAP1 POP DUP2 LT ISZERO PUSH2 0x5F6 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x550 JUMP JUMPDEST POP PUSH1 0x1 DUP7 DUP7 SWAP1 POP EQ ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x610 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP PUSH2 0x777 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x62E JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x642 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST JUMPDEST PUSH1 0x1 DUP4 GT ISZERO PUSH2 0x75C JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP5 DUP2 PUSH2 0x68C JUMPI INVALID JUMPDEST DIV DUP2 LT ISZERO PUSH2 0x6F2 JUMPI PUSH2 0x6CD DUP3 PUSH1 0x2 DUP4 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 PUSH1 0x2 DUP6 MUL ADD DUP2 MLOAD DUP2 LT PUSH2 0x6C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x682 JUMP JUMPDEST POP PUSH1 0x2 DUP4 DUP2 PUSH2 0x6FD JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x70C JUMPI INVALID JUMPDEST MOD EQ DUP1 ISZERO PUSH2 0x71B JUMPI POP PUSH1 0x1 DUP4 EQ ISZERO JUMPDEST ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x72D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST PUSH2 0x66D JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x769 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x78A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7D8 DUP9 DUP6 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x7F7 JUMPI PUSH2 0x7F0 DUP6 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP PUSH2 0x804 JUMP JUMPDEST PUSH2 0x801 DUP3 DUP7 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x7AA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x86D DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x88C JUMPI PUSH2 0x885 DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x899 JUMP JUMPDEST PUSH2 0x896 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x840 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x911 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x927 DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x946 JUMPI PUSH2 0x93F DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x953 JUMP JUMPDEST PUSH2 0x950 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8FA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x97C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SWAP1 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x111111111111111111111111111111111111111111111111111111111111111 PUSH1 0x0 SHL DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SHL DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA1B DUP6 DUP6 DUP6 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA4F PUSH2 0xA4A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAA4 JUMPI DUP2 PUSH2 0xA8A DUP9 DUP3 PUSH2 0xAF8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB07 DUP2 PUSH2 0x1091 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB31 PUSH2 0xB2C DUP3 PUSH2 0x101E JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB58 DUP4 DUP3 DUP5 PUSH2 0x1082 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB70 DUP2 PUSH2 0x10A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0xAAE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP5 DUP3 DUP6 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC05 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xC16 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xC55 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xC66 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8F DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCBF DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE8 DUP8 DUP3 DUP9 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xCF9 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD22 DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD51 DUP7 DUP3 DUP8 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD62 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCD DUP5 DUP3 DUP6 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE11 DUP7 DUP3 DUP8 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE22 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE75 DUP5 DUP3 DUP6 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE9F DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEB0 DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xEC3 DUP2 PUSH2 0x1055 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xED2 DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE4 DUP4 DUP6 PUSH2 0x104A JUMP JUMPDEST SWAP4 POP PUSH2 0xEF1 DUP4 DUP6 DUP5 PUSH2 0x1082 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF06 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xF15 DUP2 PUSH2 0x1075 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF28 DUP3 DUP5 DUP7 PUSH2 0xED8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF49 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF64 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF7F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xF8C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFA8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFC3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xF0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x109A DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP2 EQ PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B1 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP2 EQ PUSH2 0x10BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xAE SAR 0xC6 0xAE 0x5E 0xC7 0xBF 0xAF POP PUSH12 0x88A91D4893DE50138FB2F16B DUP6 NUMBER DUP14 0xB6 0xCC 0x24 0xBB KECCAK256 GAS PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x85C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x6BCA9940CE8811680DF317574A81533CEF PUSH14 0xE3318F2C8C9AAFCAF8BE78C67364 PUSH20 0x6F6C634300050F00326080604052348015610010 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA5B CODESIZE SUB DUP1 PUSH2 0xA5B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x81A DUP1 PUSH2 0x241 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E499BCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x2E6 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x7BC7AA6E EQ PUSH2 0x16A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x356 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x541 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x172 PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x747 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x282 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20776173206E6F7420726567697374657265640000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x5 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88870639 PUSH1 0x5 SLOAD DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20616C726561647920726567697374657265642E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7637D2 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x28 0xF 0xEF 0xEE PUSH29 0x68A2493585D1F5FF77D09973186D9544111B21FDB7B3E64964100E6473 PUSH16 0x6C634300050F0032436F756C64206E6F PUSH21 0x207265676973746572206D65726B6C65207574696C PUSH20 0x2074726565000000000000000000000000000000 ", + "sourceMap": "678:2048:5:-;;;702:87;8:9:-1;5:2;;;30:1;27;20:12;5:2;702:87:5;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;702:87:5;;;;;;;;;;;;;;;;753:29;769:12;753:15;;;:29;;:::i;:::-;;702:87;678:2048;;795:1929;878:7;901:17;930:16;901:46;;957:15;983:13;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;983:13:5;957:40;;1028:8;:21;;;1050:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1050:27:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1050:27:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1050:27:5;;;;;;;;;;;;;;;;1079:7;1028:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1028:59:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1028:59:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1028:59:5;;;;;;;;;;;;;;;;1007:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1160:14;1185:12;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1185:12:5;1160:38;;1229:8;:21;;;1251:12;:19;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1251:21:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1251:21:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1251:21:5;;;;;;;;;;;;;;;;1274:6;1229:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1229:52:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1229:52:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1229:52:5;;;;;;;;;;;;;;;;1208:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1340:21;1390:16;1372:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1372:35:5;1340:68;;1439:8;:21;;;1461:12;:27;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1461:29:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1461:29:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1461:29:5;;;;;;;;;;;;;;;;1492:13;1439:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1439:67:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1439:67:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1439:67:5;;;;;;;;;;;;;;;;1418:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:16;1573:23;;;;;;795:1929;;;:::o;678:2048::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 261 + }, + { + "length": 20, + "start": 711 + }, + { + "length": 20, + "start": 1245 + }, + { + "length": 20, + "start": 1728 + }, + { + "length": 20, + "start": 9361 + } + ] + } + }, + "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b5d80b9414610030575b600080fd5b6100726004803603602081101561004657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100b4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008082905060006040516100c89061067d565b604051809103906000f0801580156100e4573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156101ec57600080fd5b505af1158015610200573d6000803e3d6000fd5b505050506040513d602081101561021657600080fd5b810190808051906020019092919050505061027c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612de76024913960400191505060405180910390fd5b600060405161028a9061068a565b604051809103906000f0801580156102a6573d6000803e3d6000fd5b5090508273ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030957600080fd5b505af415801561031d573d6000803e3d6000fd5b505050506040513d602081101561033357600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b810190808051906020019092919050505061045b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f43616e6e6f74207265676973746572206c6f676765720000000000000000000081525060200191505060405180910390fd5b60008560405161046a90610697565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801580156104bc573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff1663c8b41b8373__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051f57600080fd5b505af4158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b8101908080519060200190929190505050836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b8101908080519060200190929190505050610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f7420726567697374657220746f6b656e207265676973747279000081525060200191505060405180910390fd5b85945050505050919050565b61146b806106a583390190565b61087c80611b1083390190565b610a5b8061238c8339019056fe60806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565a265627a7a7231582042d855c280d57aa151771622eba292f22dbd41ac9cffbdfd6c159e67cef798d464736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB5D80B94 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP1 PUSH2 0x67D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0xE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x200 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2DE7 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH2 0x28A SWAP1 PUSH2 0x68A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x31D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x45B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F74207265676973746572206C6F6767657200000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x40 MLOAD PUSH2 0x46A SWAP1 PUSH2 0x697 JUMP JUMPDEST DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x4BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC8B41B83 PUSH20 0x0 PUSH4 0x8A5B1D7A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x533 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x671 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E6E6F7420726567697374657220746F6B656E2072656769737472790000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 SWAP5 POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x146B DUP1 PUSH2 0x6A5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x87C DUP1 PUSH2 0x1B10 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0xA5B DUP1 PUSH2 0x238C DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SHL PUSH1 0x2 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x99 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x27C JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xD4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xEC SWAP3 SWAP2 SWAP1 PUSH3 0x1EB JUMP JUMPDEST POP PUSH3 0x100 PUSH1 0x1 SLOAD PUSH3 0x106 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x359 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x11A SWAP2 SWAP1 PUSH3 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP1 DUP2 SLOAD DUP2 LT PUSH3 0x13E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1E7 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH3 0x16D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH3 0x189 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1A7 SWAP3 SWAP2 SWAP1 PUSH3 0x2CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1CB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH3 0x153 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x22A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x229 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x20C JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x239 SWAP2 SWAP1 PUSH3 0x23D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x262 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25E JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x244 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x276 DUP2 PUSH3 0x33F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x29F DUP5 DUP3 DUP6 ADD PUSH3 0x265 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2B3 DUP2 PUSH3 0x314 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x2C4 DUP2 PUSH3 0x32B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x2E1 PUSH1 0x0 DUP4 ADD DUP6 PUSH3 0x2A8 JUMP JUMPDEST PUSH3 0x2F0 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x2A8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x30E PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x2B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x338 DUP3 PUSH3 0x31E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x34A DUP2 PUSH3 0x31E JUMP JUMPDEST DUP2 EQ PUSH3 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1102 DUP1 PUSH3 0x369 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F6485FB GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDB0787CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB0787CB EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDF7C7263 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xE5F8E87B EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xE913E47F EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0xF8B557B7 EQ PUSH2 0x403 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x8F6485FB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x99AE9309 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x9B24B3B0 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x337 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x40FF34EF GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x40FF34EF EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x48419AD8 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5FED7127 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x747E2D1C EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x8530997C EQ PUSH2 0x277 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xCB0A343 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x25AB625E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x30D90A76 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9B JUMP JUMPDEST PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x22C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x25C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x291 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2EC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x31C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x96E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33F PUSH2 0x98E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x36F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x36A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x39A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AC SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH2 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x3E8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x418 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC20 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x44B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x467 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x483 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 PUSH2 0x4BF DUP7 DUP4 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 EXP DUP2 PUSH1 0xFF AND MUL DUP4 ADD SWAP3 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4AB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4F5 DUP6 DUP6 DUP6 PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 PUSH1 0x1 DUP4 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x547 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP7 DUP7 SWAP1 POP DUP2 LT ISZERO PUSH2 0x5F6 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x550 JUMP JUMPDEST POP PUSH1 0x1 DUP7 DUP7 SWAP1 POP EQ ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x610 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP PUSH2 0x777 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x62E JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x642 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST JUMPDEST PUSH1 0x1 DUP4 GT ISZERO PUSH2 0x75C JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP5 DUP2 PUSH2 0x68C JUMPI INVALID JUMPDEST DIV DUP2 LT ISZERO PUSH2 0x6F2 JUMPI PUSH2 0x6CD DUP3 PUSH1 0x2 DUP4 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 PUSH1 0x2 DUP6 MUL ADD DUP2 MLOAD DUP2 LT PUSH2 0x6C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x682 JUMP JUMPDEST POP PUSH1 0x2 DUP4 DUP2 PUSH2 0x6FD JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x70C JUMPI INVALID JUMPDEST MOD EQ DUP1 ISZERO PUSH2 0x71B JUMPI POP PUSH1 0x1 DUP4 EQ ISZERO JUMPDEST ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x72D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST PUSH2 0x66D JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x769 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x78A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7D8 DUP9 DUP6 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x7F7 JUMPI PUSH2 0x7F0 DUP6 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP PUSH2 0x804 JUMP JUMPDEST PUSH2 0x801 DUP3 DUP7 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x7AA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x86D DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x88C JUMPI PUSH2 0x885 DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x899 JUMP JUMPDEST PUSH2 0x896 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x840 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x911 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x927 DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x946 JUMPI PUSH2 0x93F DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x953 JUMP JUMPDEST PUSH2 0x950 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8FA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x97C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SWAP1 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x111111111111111111111111111111111111111111111111111111111111111 PUSH1 0x0 SHL DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SHL DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA1B DUP6 DUP6 DUP6 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA4F PUSH2 0xA4A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAA4 JUMPI DUP2 PUSH2 0xA8A DUP9 DUP3 PUSH2 0xAF8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB07 DUP2 PUSH2 0x1091 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB31 PUSH2 0xB2C DUP3 PUSH2 0x101E JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB58 DUP4 DUP3 DUP5 PUSH2 0x1082 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB70 DUP2 PUSH2 0x10A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0xAAE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP5 DUP3 DUP6 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC05 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xC16 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xC55 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xC66 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8F DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCBF DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE8 DUP8 DUP3 DUP9 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xCF9 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD22 DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD51 DUP7 DUP3 DUP8 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD62 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCD DUP5 DUP3 DUP6 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE11 DUP7 DUP3 DUP8 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE22 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE75 DUP5 DUP3 DUP6 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE9F DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEB0 DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xEC3 DUP2 PUSH2 0x1055 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xED2 DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE4 DUP4 DUP6 PUSH2 0x104A JUMP JUMPDEST SWAP4 POP PUSH2 0xEF1 DUP4 DUP6 DUP5 PUSH2 0x1082 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF06 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xF15 DUP2 PUSH2 0x1075 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF28 DUP3 DUP5 DUP7 PUSH2 0xED8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF49 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF64 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF7F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xF8C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFA8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFC3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xF0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x109A DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP2 EQ PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B1 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP2 EQ PUSH2 0x10BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xAE SAR 0xC6 0xAE 0x5E 0xC7 0xBF 0xAF POP PUSH12 0x88A91D4893DE50138FB2F16B DUP6 NUMBER DUP14 0xB6 0xCC 0x24 0xBB KECCAK256 GAS PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x85C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x6BCA9940CE8811680DF317574A81533CEF PUSH14 0xE3318F2C8C9AAFCAF8BE78C67364 PUSH20 0x6F6C634300050F00326080604052348015610010 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA5B CODESIZE SUB DUP1 PUSH2 0xA5B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x81A DUP1 PUSH2 0x241 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E499BCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x2E6 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x7BC7AA6E EQ PUSH2 0x16A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x356 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x541 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x172 PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x747 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x282 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20776173206E6F7420726567697374657265640000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x5 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88870639 PUSH1 0x5 SLOAD DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20616C726561647920726567697374657265642E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7637D2 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x28 0xF 0xEF 0xEE PUSH29 0x68A2493585D1F5FF77D09973186D9544111B21FDB7B3E64964100E6473 PUSH16 0x6C634300050F0032436F756C64206E6F PUSH21 0x207265676973746572206D65726B6C65207574696C PUSH20 0x2074726565A265627A7A7231582042D855C280D5 PUSH27 0xA151771622EBA292F22DBD41AC9CFFBDFD6C159E67CEF798D46473 PUSH16 0x6C634300050F00320000000000000000 ", + "sourceMap": "678:2048:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;678:2048:5;;;;;;;;;;;;;;;;;;;795:1929;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;795:1929:5;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;878:7;901:17;930:16;901:46;;957:15;983:13;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;983:13:5;957:40;;1028:8;:21;;;1050:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1050:27:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1050:27:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1050:27:5;;;;;;;;;;;;;;;;1079:7;1028:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1028:59:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1028:59:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1028:59:5;;;;;;;;;;;;;;;;1007:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1160:14;1185:12;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1185:12:5;1160:38;;1229:8;:21;;;1251:12;:19;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1251:21:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1251:21:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1251:21:5;;;;;;;;;;;;;;;;1274:6;1229:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1229:52:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1229:52:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1229:52:5;;;;;;;;;;;;;;;;1208:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1340:21;1390:16;1372:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1372:35:5;1340:68;;1439:8;:21;;;1461:12;:27;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1461:29:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1461:29:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1461:29:5;;;;;;;;;;;;;;;;1492:13;1439:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1439:67:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1439:67:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1439:67:5;;;;;;;;;;;;;;;;1418:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:16;1573:23;;;;;;795:1929;;;:::o;678:2048::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o" + }, + "methodIdentifiers": { + "deployContracts(address)": "b5d80b94" + } + } + } + }, + "contracts/DepositManager.sol": { + "DepositManager": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "Coordinator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accountsTree", + "outputs": [ + { + "internalType": "contract IncrementalTree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balancesTree", + "outputs": [ + { + "internalType": "contract Tree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_pubkey", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_pubkey", + "type": "bytes" + } + ], + "name": "depositFor", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "depositSubtreeHeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_subTreeDepth", + "type": "uint256" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof", + "name": "_zero_account_mp", + "type": "tuple" + } + ], + "name": "finaliseDeposits", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "logger", + "outputs": [ + { + "internalType": "contract Logger", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "merkleUtils", + "outputs": [ + { + "internalType": "contract MerkleTreeUtils", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pendingDeposits", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "queueNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenContract", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenRegistry", + "outputs": [ + { + "internalType": "contract ITokenRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 184 + }, + { + "length": 20, + "start": 551 + }, + { + "length": 20, + "start": 919 + }, + { + "length": 20, + "start": 1287 + }, + { + "length": 20, + "start": 1655 + }, + { + "length": 20, + "start": 6379 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 4209 + }, + { + "length": 20, + "start": 5014 + }, + { + "length": 20, + "start": 5312 + } + ] + } + }, + "object": "60806040523480156200001157600080fd5b5060405162002ce538038062002ce58339818101604052620000379190810190620007dc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000fb57600080fd5b505af415801562000110573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000136919081019062000808565b6040518263ffffffff1660e01b815260040162000154919062000845565b60206040518083038186803b1580156200016d57600080fd5b505afa15801562000182573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001a89190810190620007dc565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026a57600080fd5b505af41580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002a5919081019062000808565b6040518263ffffffff1660e01b8152600401620002c3919062000845565b60206040518083038186803b158015620002dc57600080fd5b505afa158015620002f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003179190810190620007dc565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003da57600080fd5b505af4158015620003ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000415919081019062000808565b6040518263ffffffff1660e01b815260040162000433919062000845565b60206040518083038186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004879190810190620007dc565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63ca4a98f26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054a57600080fd5b505af41580156200055f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000585919081019062000808565b6040518263ffffffff1660e01b8152600401620005a3919062000845565b60206040518083038186803b158015620005bc57600080fd5b505afa158015620005d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620005f79190810190620007dc565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63626835f56040518163ffffffff1660e01b815260040160206040518083038186803b158015620006ba57600080fd5b505af4158015620006cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620006f5919081019062000808565b6040518263ffffffff1660e01b815260040162000713919062000845565b60206040518083038186803b1580156200072c57600080fd5b505afa15801562000741573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620007679190810190620007dc565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620008d4565b600081519050620007bf81620008a0565b92915050565b600081519050620007d681620008ba565b92915050565b600060208284031215620007ef57600080fd5b6000620007ff84828501620007ae565b91505092915050565b6000602082840312156200081b57600080fd5b60006200082b84828501620007c5565b91505092915050565b6200083f8162000876565b82525050565b60006020820190506200085c600083018462000834565b92915050565b60006200086f8262000880565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620008ab8162000862565b8114620008b757600080fd5b50565b620008c58162000876565b8114620008d157600080fd5b50565b61240180620008e46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d23c4c71161008c578063ae2926d411610066578063ae2926d41461023b578063b2692d7714610259578063f24ccbfe14610277578063f35213fc14610295576100ea565b80639d23c4c7146101d1578063a7932794146101ef578063aa0b7db71461021f576100ea565b80632fa6779a116100c85780632fa6779a1461015957806347b0f08e146101775780634eb7221a1461019557806355a373d6146101b3576100ea565b80631450e6ec146100ef5780631f8eb3e81461011f5780632882dd981461013b575b600080fd5b610109600480360361010491908101906117b3565b6102b3565b6040516101169190611cd8565b60405180910390f35b61013960048036036101349190810190611694565b61072b565b005b6101436110b6565b6040516101509190611fd0565b60405180910390f35b6101616110bc565b60405161016e9190611fd0565b60405180910390f35b61017f6110c2565b60405161018c9190611ea2565b60405180910390f35b61019d6110e7565b6040516101aa9190611ebd565b60405180910390f35b6101bb61110d565b6040516101c89190611e36565b60405180910390f35b6101d9611133565b6040516101e69190611e51565b60405180910390f35b61020960048036036102049190810190611761565b611159565b6040516102169190611cd8565b60405180910390f35b61023960048036036102349190810190611807565b61117a565b005b6102436111a8565b6040516102509190611e6c565b60405180910390f35b6102616111ce565b60405161026e9190611ed8565b60405180910390f35b61027f6111f4565b60405161028c9190611e87565b60405180910390f35b61029d61121a565b6040516102aa9190611c86565b60405180910390f35b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0856040518263ffffffff1660e01b81526004016103109190611fd0565b60206040518083038186803b15801561032857600080fd5b505afa15801561033c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103609190810190611738565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8b557b7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043f9190810190611738565b8386600001516000015187602001516040518563ffffffff1660e01b815260040161046d9493929190611d53565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104bd919081019061170f565b6104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390611f13565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c0de520600360008154811061054857fe5b906000526020600020015485600001516000015186602001516040518463ffffffff1660e01b815260040161057f93929190611d9f565b600060405180830381600087803b15801561059957600080fd5b505af11580156105ad573d6000803e3d6000fd5b505050506105bb6000611240565b60055460020a600454036004819055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061066d9190810190611738565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b94be66860036000815481106106bb57fe5b9060005260206000200154866000015160000151846040518463ffffffff1660e01b81526004016106ee93929190611ddd565b600060405180830381600087803b15801561070857600080fd5b505af115801561071c573d6000803e3d6000fd5b50505050809250505092915050565b60001515600a60149054906101000a900460ff1615151461074857fe5b6000831161078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290611f33565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e826040518263ffffffff1660e01b81526004016107c29190611e14565b60206040518083038186803b1580156107da57600080fd5b505af41580156107ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610812919081019061166b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087690611ef3565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea846040518263ffffffff1660e01b81526004016108dc9190611fd0565b60206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092c919081019061166b565b905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016109ce93929190611ca1565b602060405180830381600087803b1580156109e857600080fd5b505af11580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a20919081019061170f565b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690611f73565b60405180910390fd5b610a6761133c565b8281600001819052506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c891b0873__$a6b8846b3184b62d6aec39d1f36e30dab3$__6326b3285d856040518263ffffffff1660e01b8152600401610ae79190611f93565b60206040518083038186803b158015610aff57600080fd5b505af4158015610b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b379190810190611738565b6040518263ffffffff1660e01b8152600401610b539190611cd8565b602060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba5919081019061178a565b9050610baf61134f565b8681604001818152505085816020018181525050600081606001818152505081816000018181525050600073__$a6b8846b3184b62d6aec39d1f36e30dab3$__630d68f924836040518263ffffffff1660e01b8152600401610c119190611fb5565b60206040518083038186803b158015610c2957600080fd5b505af4158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c619190810190611738565b90506003819080600181540180825580915050906001820390600052602060002001600090919290919091505550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356901d5a848b8b8b868c6040518763ffffffff1660e01b8152600401610cf496959493929190611feb565b600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506004600081548092919060010191905055506000809050600060045490505b600060028281610d5157fe5b061415610ff35760606002604051908082528060200260200182016040528015610d8a5781602001602082028038833980820191505090505b509050600360026003805490500381548110610da257fe5b906000526020600020015481600081518110610dba57fe5b602002602001018181525050600360016003805490500381548110610ddb57fe5b906000526020600020015481600181518110610df357fe5b6020026020010181815250506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb82600081518110610e4957fe5b602002602001015183600181518110610e5e57fe5b60200260200101516040518363ffffffff1660e01b8152600401610e83929190611cf3565b60206040518083038186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed39190810190611738565b600360026003805490500381548110610ee857fe5b9060005260206000200181905550610f07600160038054905003611240565b60028281610f1157fe5b0491508280600101935050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbd63fb782600081518110610f6757fe5b602002602001015183600181518110610f7c57fe5b60200260200101516003600081548110610f9257fe5b90600052602060002001546040518463ffffffff1660e01b8152600401610fbb93929190611d1c565b600060405180830381600087803b158015610fd557600080fd5b505af1158015610fe9573d6000803e3d6000fd5b5050505050610d45565b60055482111561100557816005819055505b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63554056e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561104957600080fd5b505af415801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611081919081019061186e565b60ff1660055414156110a9576001600a60146101000a81548160ff0219169083151502179055505b5050505050505050505050565b60055481565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061116657fe5b906000526020600020016000915090505481565b60001515600a60149054906101000a900460ff1615151461119757fe5b6111a33384848461072b565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003805490508110611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90611f53565b60405180910390fd5b60008114156112ea5760008090505b6001600380549050038110156112e457600381815481106112b357fe5b906000526020600020016000905560038054809190600190036112d69190611377565b508080600101915050611296565b50611339565b6001600380549050038114156113385760036001600380549050038154811061130f57fe5b906000526020600020016000905560038054809190600190036113329190611377565b50611339565b5b50565b6040518060200160405280606081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b81548183558181111561139e5781836000526020600020918201910161139d91906113a3565b5b505050565b6113c591905b808211156113c15760008160009055506001016113a9565b5090565b90565b6000813590506113d78161234b565b92915050565b6000815190506113ec8161234b565b92915050565b600082601f83011261140357600080fd5b813561141661141182612080565b612053565b9150818183526020840193506020810190508385602084028201111561143b57600080fd5b60005b8381101561146b5781611451888261148a565b84526020840193506020830192505060018101905061143e565b5050505092915050565b60008151905061148481612362565b92915050565b60008135905061149981612379565b92915050565b6000815190506114ae81612379565b92915050565b600082601f8301126114c557600080fd5b81356114d86114d3826120a8565b612053565b915080825260208301602083018583830111156114f457600080fd5b6114ff8382846122f8565b50505092915050565b600060a0828403121561151a57600080fd5b6115246040612053565b905060006115348482850161162c565b6000830152506020611548848285016115b8565b60208301525092915050565b600060c0828403121561156657600080fd5b6115706040612053565b9050600061158084828501611508565b60008301525060a082013567ffffffffffffffff8111156115a057600080fd5b6115ac848285016113f2565b60208301525092915050565b6000608082840312156115ca57600080fd5b6115d46080612053565b905060006115e48482850161162c565b60008301525060206115f88482850161162c565b602083015250604061160c8482850161162c565b60408301525060606116208482850161162c565b60608301525092915050565b60008135905061163b81612390565b92915050565b60008151905061165081612390565b92915050565b600081519050611665816123a7565b92915050565b60006020828403121561167d57600080fd5b600061168b848285016113dd565b91505092915050565b600080600080608085870312156116aa57600080fd5b60006116b8878288016113c8565b94505060206116c98782880161162c565b93505060406116da8782880161162c565b925050606085013567ffffffffffffffff8111156116f757600080fd5b611703878288016114b4565b91505092959194509250565b60006020828403121561172157600080fd5b600061172f84828501611475565b91505092915050565b60006020828403121561174a57600080fd5b60006117588482850161149f565b91505092915050565b60006020828403121561177357600080fd5b60006117818482850161162c565b91505092915050565b60006020828403121561179c57600080fd5b60006117aa84828501611641565b91505092915050565b600080604083850312156117c657600080fd5b60006117d48582860161162c565b925050602083013567ffffffffffffffff8111156117f157600080fd5b6117fd85828601611554565b9150509250929050565b60008060006060848603121561181c57600080fd5b600061182a8682870161162c565b935050602061183b8682870161162c565b925050604084013567ffffffffffffffff81111561185857600080fd5b611864868287016114b4565b9150509250925092565b60006020828403121561188057600080fd5b600061188e84828501611656565b91505092915050565b60006118a3838361192b565b60208301905092915050565b6118b8816121c6565b82525050565b6118c781612167565b82525050565b60006118d8826120e4565b6118e28185612112565b93506118ed836120d4565b8060005b8381101561191e5781516119058882611897565b975061191083612105565b9250506001810190506118f1565b5085935050505092915050565b61193481612185565b82525050565b61194381612185565b82525050565b6000611954826120fa565b61195e8185612123565b935061196e818560208601612307565b6119778161233a565b840191505092915050565b600061198d826120fa565b6119978185612134565b93506119a7818560208601612307565b6119b08161233a565b840191505092915050565b60006119c6826120ef565b6119d08185612145565b93506119e0818560208601612307565b6119e98161233a565b840191505092915050565b6119fd816121d8565b82525050565b611a0c816121fc565b82525050565b611a1b81612220565b82525050565b611a2a81612244565b82525050565b611a3981612268565b82525050565b611a488161228c565b82525050565b611a57816122b0565b82525050565b6000611a6a602283612156565b91507f7075626c6963206b657920616e64206164647265737320646f6e2774206d617460008301527f63680000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ad0600d83612156565b91507f70726f6f6620696e76616c6964000000000000000000000000000000000000006000830152602082019050919050565b6000611b10602483612156565b91507f746f6b656e206465706f736974206d757374206265206772656174657220746860008301527f616e2030000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b76601c83612156565b91507f617272617920696e646578206973206f7574206f6620626f756e6473000000006000830152602082019050919050565b6000611bb6601b83612156565b91507f746f6b656e207472616e73666572206e6f7420617070726f76656400000000006000830152602082019050919050565b60006020830160008301518482036000860152611c0682826119bb565b9150508091505092915050565b608082016000820151611c296000850182611c77565b506020820151611c3c6020850182611c77565b506040820151611c4f6040850182611c77565b506060820151611c626060850182611c77565b50505050565b611c71816121af565b82525050565b611c80816121af565b82525050565b6000602082019050611c9b60008301846118be565b92915050565b6000606082019050611cb660008301866118af565b611cc360208301856118be565b611cd06040830184611c68565b949350505050565b6000602082019050611ced600083018461193a565b92915050565b6000604082019050611d08600083018561193a565b611d15602083018461193a565b9392505050565b6000606082019050611d31600083018661193a565b611d3e602083018561193a565b611d4b604083018461193a565b949350505050565b6000608082019050611d68600083018761193a565b611d75602083018661193a565b611d826040830185611c68565b8181036060830152611d9481846118cd565b905095945050505050565b6000606082019050611db4600083018661193a565b611dc16020830185611c68565b8181036040830152611dd381846118cd565b9050949350505050565b6000606082019050611df2600083018661193a565b611dff6020830185611c68565b611e0c604083018461193a565b949350505050565b60006020820190508181036000830152611e2e8184611982565b905092915050565b6000602082019050611e4b60008301846119f4565b92915050565b6000602082019050611e666000830184611a03565b92915050565b6000602082019050611e816000830184611a12565b92915050565b6000602082019050611e9c6000830184611a21565b92915050565b6000602082019050611eb76000830184611a30565b92915050565b6000602082019050611ed26000830184611a3f565b92915050565b6000602082019050611eed6000830184611a4e565b92915050565b60006020820190508181036000830152611f0c81611a5d565b9050919050565b60006020820190508181036000830152611f2c81611ac3565b9050919050565b60006020820190508181036000830152611f4c81611b03565b9050919050565b60006020820190508181036000830152611f6c81611b69565b9050919050565b60006020820190508181036000830152611f8c81611ba9565b9050919050565b60006020820190508181036000830152611fad8184611be9565b905092915050565b6000608082019050611fca6000830184611c13565b92915050565b6000602082019050611fe56000830184611c68565b92915050565b600060c0820190506120006000830189611c68565b61200d60208301886118be565b61201a6040830187611c68565b6120276060830186611c68565b612034608083018561193a565b81810360a08301526120468184611949565b9050979650505050505050565b6000604051905081810181811067ffffffffffffffff8211171561207657600080fd5b8060405250919050565b600067ffffffffffffffff82111561209757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120bf57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006121728261218f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121d1826122d4565b9050919050565b60006121e3826121ea565b9050919050565b60006121f58261218f565b9050919050565b60006122078261220e565b9050919050565b60006122198261218f565b9050919050565b600061222b82612232565b9050919050565b600061223d8261218f565b9050919050565b600061224f82612256565b9050919050565b60006122618261218f565b9050919050565b60006122738261227a565b9050919050565b60006122858261218f565b9050919050565b60006122978261229e565b9050919050565b60006122a98261218f565b9050919050565b60006122bb826122c2565b9050919050565b60006122cd8261218f565b9050919050565b60006122df826122e6565b9050919050565b60006122f18261218f565b9050919050565b82818337600083830152505050565b60005b8381101561232557808201518184015260208101905061230a565b83811115612334576000848401525b50505050565b6000601f19601f8301169050919050565b61235481612167565b811461235f57600080fd5b50565b61236b81612179565b811461237657600080fd5b50565b61238281612185565b811461238d57600080fd5b50565b612399816121af565b81146123a457600080fd5b50565b6123b0816121b9565b81146123bb57600080fd5b5056fea365627a7a723158204d9bb45771d4c1f2b21645aa21603bc672bb8648120a0273cd8e0a2cf23a08536c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2CE5 CODESIZE SUB DUP1 PUSH3 0x2CE5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH3 0x37 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x7DC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x110 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x136 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x154 SWAP2 SWAP1 PUSH3 0x845 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x16D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x182 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x1A8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x8A5B1D7A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x27F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x2A5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2C3 SWAP2 SWAP1 PUSH3 0x845 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x317 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x3EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x415 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x433 SWAP2 SWAP1 PUSH3 0x845 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x461 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x487 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0xCA4A98F2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x55F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x585 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x5A3 SWAP2 SWAP1 PUSH3 0x845 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x5F7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x626835F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x6CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x6F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x808 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x713 SWAP2 SWAP1 PUSH3 0x845 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x741 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x767 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x7DC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH3 0x8D4 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x7BF DUP2 PUSH3 0x8A0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x7D6 DUP2 PUSH3 0x8BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x7EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x7FF DUP5 DUP3 DUP6 ADD PUSH3 0x7AE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x81B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x82B DUP5 DUP3 DUP6 ADD PUSH3 0x7C5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x83F DUP2 PUSH3 0x876 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x85C PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x834 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x86F DUP3 PUSH3 0x880 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x8AB DUP2 PUSH3 0x862 JUMP JUMPDEST DUP2 EQ PUSH3 0x8B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x8C5 DUP2 PUSH3 0x876 JUMP JUMPDEST DUP2 EQ PUSH3 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2401 DUP1 PUSH3 0x8E4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D23C4C7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xAE2926D4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAE2926D4 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xB2692D77 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x295 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x9D23C4C7 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xA7932794 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0xAA0B7DB7 EQ PUSH2 0x21F JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x2FA6779A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x2FA6779A EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x47B0F08E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x55A373D6 EQ PUSH2 0x1B3 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1450E6EC EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1F8EB3E8 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x2882DD98 EQ PUSH2 0x13B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x109 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x104 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x17B3 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x116 SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x134 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1694 JUMP JUMPDEST PUSH2 0x72B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x10B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x150 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH2 0x10BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17F PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x10E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x1EBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BB PUSH2 0x110D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x1E36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D9 PUSH2 0x1133 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP2 SWAP1 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x209 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x204 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1761 JUMP JUMPDEST PUSH2 0x1159 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x216 SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x239 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x234 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x117A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x243 PUSH2 0x11A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x250 SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x1ED8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27F PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28C SWAP2 SWAP1 PUSH2 0x1E87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29D PUSH2 0x121A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AA SWAP2 SWAP1 PUSH2 0x1C86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9B24B3B0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x310 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x360 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF8B557B7 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5CA1E165 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x43F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST DUP4 DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D53 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x4BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F3 SWAP1 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C0DE520 PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x548 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x57F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x5BB PUSH1 0x0 PUSH2 0x1240 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x2 EXP PUSH1 0x4 SLOAD SUB PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5CA1E165 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x649 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x66D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB94BE668 PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x6BB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6EE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x71C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0xA PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x748 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x78B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x782 SWAP1 PUSH2 0x1F33 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0x0 PUSH4 0xE8A4C04E DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7C2 SWAP2 SWAP1 PUSH2 0x1E14 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x7EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x812 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x166B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x87F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x876 SWAP1 PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9A0BA2EA DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8DC SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x908 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x92C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x166B JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP8 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9CE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1CA1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA20 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x170F JUMP JUMPDEST PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA56 SWAP1 PUSH2 0x1F73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA67 PUSH2 0x133C JUMP JUMPDEST DUP3 DUP2 PUSH1 0x0 ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C891B08 PUSH20 0x0 PUSH4 0x26B3285D DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x1F93 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB37 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB53 SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBA5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x178A JUMP JUMPDEST SWAP1 POP PUSH2 0xBAF PUSH2 0x134F JUMP JUMPDEST DUP7 DUP2 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 PUSH20 0x0 PUSH4 0xD68F924 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC11 SWAP2 SWAP1 PUSH2 0x1FB5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xC3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC61 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x56901D5A DUP5 DUP12 DUP12 DUP12 DUP7 DUP13 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCF4 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1FEB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD22 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x4 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 PUSH1 0x4 SLOAD SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DUP2 PUSH2 0xD51 JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0xFF3 JUMPI PUSH1 0x60 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD8A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0x2 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xDA2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x3 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xDDB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xDF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE49 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xE5E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE83 SWAP3 SWAP2 SWAP1 PUSH2 0x1CF3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xED3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xEE8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH2 0xF07 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB PUSH2 0x1240 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP2 PUSH2 0xF11 JUMPI INVALID JUMPDEST DIV SWAP2 POP DUP3 DUP1 PUSH1 0x1 ADD SWAP4 POP POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBD63FB7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF67 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xF7C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0xF92 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP3 GT ISZERO PUSH2 0x1005 JUMPI DUP2 PUSH1 0x5 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH20 0x0 PUSH4 0x554056E4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x105D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1081 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x186E JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x5 SLOAD EQ ISZERO PUSH2 0x10A9 JUMPI PUSH1 0x1 PUSH1 0xA PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1166 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0xA PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x1197 JUMPI INVALID JUMPDEST PUSH2 0x11A3 CALLER DUP5 DUP5 DUP5 PUSH2 0x72B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD SWAP1 POP DUP2 LT PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127E SWAP1 PUSH2 0x1F53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x12EA JUMPI PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 LT ISZERO PUSH2 0x12E4 JUMPI PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12B3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD DUP1 SWAP2 SWAP1 PUSH1 0x1 SWAP1 SUB PUSH2 0x12D6 SWAP2 SWAP1 PUSH2 0x1377 JUMP JUMPDEST POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1296 JUMP JUMPDEST POP PUSH2 0x1339 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 EQ ISZERO PUSH2 0x1338 JUMPI PUSH1 0x3 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x130F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD DUP1 SWAP2 SWAP1 PUSH1 0x1 SWAP1 SUB PUSH2 0x1332 SWAP2 SWAP1 PUSH2 0x1377 JUMP JUMPDEST POP PUSH2 0x1339 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x139E JUMPI DUP2 DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x139D SWAP2 SWAP1 PUSH2 0x13A3 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x13C5 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x13C1 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x13A9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x13D7 DUP2 PUSH2 0x234B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x13EC DUP2 PUSH2 0x234B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1416 PUSH2 0x1411 DUP3 PUSH2 0x2080 JUMP JUMPDEST PUSH2 0x2053 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x143B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x146B JUMPI DUP2 PUSH2 0x1451 DUP9 DUP3 PUSH2 0x148A JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x143E JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1484 DUP2 PUSH2 0x2362 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1499 DUP2 PUSH2 0x2379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x14AE DUP2 PUSH2 0x2379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D8 PUSH2 0x14D3 DUP3 PUSH2 0x20A8 JUMP JUMPDEST PUSH2 0x2053 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14FF DUP4 DUP3 DUP5 PUSH2 0x22F8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x151A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1524 PUSH1 0x40 PUSH2 0x2053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1534 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x1548 DUP5 DUP3 DUP6 ADD PUSH2 0x15B8 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1570 PUSH1 0x40 PUSH2 0x2053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1580 DUP5 DUP3 DUP6 ADD PUSH2 0x1508 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x13F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15D4 PUSH1 0x80 PUSH2 0x2053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x15F8 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x160C DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x1620 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x163B DUP2 PUSH2 0x2390 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1650 DUP2 PUSH2 0x2390 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1665 DUP2 PUSH2 0x23A7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x167D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x168B DUP5 DUP3 DUP6 ADD PUSH2 0x13DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x16AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16B8 DUP8 DUP3 DUP9 ADD PUSH2 0x13C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x16C9 DUP8 DUP3 DUP9 ADD PUSH2 0x162C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x16DA DUP8 DUP3 DUP9 ADD PUSH2 0x162C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1703 DUP8 DUP3 DUP9 ADD PUSH2 0x14B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x172F DUP5 DUP3 DUP6 ADD PUSH2 0x1475 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x174A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1758 DUP5 DUP3 DUP6 ADD PUSH2 0x149F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1781 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x179C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17AA DUP5 DUP3 DUP6 ADD PUSH2 0x1641 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17D4 DUP6 DUP3 DUP7 ADD PUSH2 0x162C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17FD DUP6 DUP3 DUP7 ADD PUSH2 0x1554 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x181C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x182A DUP7 DUP3 DUP8 ADD PUSH2 0x162C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x183B DUP7 DUP3 DUP8 ADD PUSH2 0x162C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1858 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1864 DUP7 DUP3 DUP8 ADD PUSH2 0x14B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x188E DUP5 DUP3 DUP6 ADD PUSH2 0x1656 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A3 DUP4 DUP4 PUSH2 0x192B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x18B8 DUP2 PUSH2 0x21C6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x18C7 DUP2 PUSH2 0x2167 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18D8 DUP3 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x18E2 DUP2 DUP6 PUSH2 0x2112 JUMP JUMPDEST SWAP4 POP PUSH2 0x18ED DUP4 PUSH2 0x20D4 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x191E JUMPI DUP2 MLOAD PUSH2 0x1905 DUP9 DUP3 PUSH2 0x1897 JUMP JUMPDEST SWAP8 POP PUSH2 0x1910 DUP4 PUSH2 0x2105 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x18F1 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1934 DUP2 PUSH2 0x2185 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1943 DUP2 PUSH2 0x2185 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1954 DUP3 PUSH2 0x20FA JUMP JUMPDEST PUSH2 0x195E DUP2 DUP6 PUSH2 0x2123 JUMP JUMPDEST SWAP4 POP PUSH2 0x196E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x1977 DUP2 PUSH2 0x233A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x198D DUP3 PUSH2 0x20FA JUMP JUMPDEST PUSH2 0x1997 DUP2 DUP6 PUSH2 0x2134 JUMP JUMPDEST SWAP4 POP PUSH2 0x19A7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x19B0 DUP2 PUSH2 0x233A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C6 DUP3 PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x19D0 DUP2 DUP6 PUSH2 0x2145 JUMP JUMPDEST SWAP4 POP PUSH2 0x19E0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x19E9 DUP2 PUSH2 0x233A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19FD DUP2 PUSH2 0x21D8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A0C DUP2 PUSH2 0x21FC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A1B DUP2 PUSH2 0x2220 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A2A DUP2 PUSH2 0x2244 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A39 DUP2 PUSH2 0x2268 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A48 DUP2 PUSH2 0x228C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A57 DUP2 PUSH2 0x22B0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A6A PUSH1 0x22 DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x7075626C6963206B657920616E64206164647265737320646F6E2774206D6174 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6368000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD0 PUSH1 0xD DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x70726F6F6620696E76616C696400000000000000000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B10 PUSH1 0x24 DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x746F6B656E206465706F736974206D7573742062652067726561746572207468 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x616E203000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B76 PUSH1 0x1C DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x617272617920696E646578206973206F7574206F6620626F756E647300000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB6 PUSH1 0x1B DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x746F6B656E207472616E73666572206E6F7420617070726F7665640000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x1C06 DUP3 DUP3 PUSH2 0x19BB JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x1C29 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1C3C PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1C4F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1C62 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1C71 DUP2 PUSH2 0x21AF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1C80 DUP2 PUSH2 0x21AF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C9B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x18BE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1CB6 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x1CC3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x18BE JUMP JUMPDEST PUSH2 0x1CD0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1C68 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1CED PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1D08 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D15 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1D31 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D3E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D4B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1D68 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D75 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D82 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1C68 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1D94 DUP2 DUP5 PUSH2 0x18CD JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1DB4 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1DC1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1C68 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1DD3 DUP2 DUP5 PUSH2 0x18CD JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1DF2 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1DFF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x1E0C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E2E DUP2 DUP5 PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E4B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x19F4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E66 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A03 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E81 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A12 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E9C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A21 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1EB7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A30 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1ED2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A3F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1EED PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A4E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F0C DUP2 PUSH2 0x1A5D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F2C DUP2 PUSH2 0x1AC3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F4C DUP2 PUSH2 0x1B03 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F6C DUP2 PUSH2 0x1B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F8C DUP2 PUSH2 0x1BA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FAD DUP2 DUP5 PUSH2 0x1BE9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1FCA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1FE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x2000 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x200D PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x18BE JUMP JUMPDEST PUSH2 0x201A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x2027 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x2034 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x193A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x2046 DUP2 DUP5 PUSH2 0x1949 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2076 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x20BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2172 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21D1 DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21E3 DUP3 PUSH2 0x21EA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21F5 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2207 DUP3 PUSH2 0x220E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2219 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x222B DUP3 PUSH2 0x2232 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223D DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x224F DUP3 PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2261 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2273 DUP3 PUSH2 0x227A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2285 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2297 DUP3 PUSH2 0x229E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A9 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22BB DUP3 PUSH2 0x22C2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22CD DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22DF DUP3 PUSH2 0x22E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22F1 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2325 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x230A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2334 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2354 DUP2 PUSH2 0x2167 JUMP JUMPDEST DUP2 EQ PUSH2 0x235F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x236B DUP2 PUSH2 0x2179 JUMP JUMPDEST DUP2 EQ PUSH2 0x2376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2382 DUP2 PUSH2 0x2185 JUMP JUMPDEST DUP2 EQ PUSH2 0x238D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2399 DUP2 PUSH2 0x21AF JUMP JUMPDEST DUP2 EQ PUSH2 0x23A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x23B0 DUP2 PUSH2 0x21B9 JUMP JUMPDEST DUP2 EQ PUSH2 0x23BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x4D SWAP12 0xB4 JUMPI PUSH18 0xD4C1F2B21645AA21603BC672BB8648120A02 PUSH20 0xCD8E0A2CF23A08536C6578706572696D656E7461 PUSH13 0xF564736F6C634300050F004000 ", + "sourceMap": "585:7661:6:-;;;1122:664;8:9:-1;5:2;;;30:1;27;20:12;5:2;1122:664:6;;;;;;;;;;;;;;;;;;;;;;;;1198:13;1174:12;;:38;;;;;;;;;;;;;;;;;;1257:12;;;;;;;;;;;:31;;;1289:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1289:27:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1289:27:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1289:27:6;;;;;;;;;1257:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1257:60:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1257:60:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1257:60:6;;;;;;;;;1222:11;;:105;;;;;;;;;;;;;;;;;;1381:12;;;;;;;;;;;:31;;;1413:12;:27;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1413:29:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1413:29:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1413:29:6;;;;;;;;;1381:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1381:62:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1381:62:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1381:62:6;;;;;;;;;1337:13;;:116;;;;;;;;;;;;;;;;;;1479:12;;;;;;;;;;;:31;;;1511:12;:19;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1511:21:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1511:21:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1511:21:6;;;;;;;;;1479:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1479:54:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1479:54:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1479:54:6;;;;;;;;;1463:6;;:71;;;;;;;;;;;;;;;;;;1588:12;;;;;;;;;;;:31;;;1620:12;:26;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1620:28:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1620:28:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1620:28:6;;;;;;;;;1588:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1588:61:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1588:61:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1588:61:6;;;;;;;;;1544:12;;:115;;;;;;;;;;;;;;;;;;1708:12;;;;;;;;;;;:31;;;1740:12;:26;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1740:28:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1740:28:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1740:28:6;;;;;;;;;1708:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1708:61:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1708:61:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1708:61:6;;;;;;;;;1669:12;;:110;;;;;;;;;;;;;;;;;;1122:664;585:7661;;5:134:-1;;89:6;83:13;74:22;;101:33;128:5;101:33;;;68:71;;;;;146:134;;230:6;224:13;215:22;;242:33;269:5;242:33;;;209:71;;;;;287:263;;402:2;390:9;381:7;377:23;373:32;370:2;;;418:1;415;408:12;370:2;453:1;470:64;526:7;517:6;506:9;502:22;470:64;;;460:74;;432:108;364:186;;;;;557:263;;672:2;660:9;651:7;647:23;643:32;640:2;;;688:1;685;678:12;640:2;723:1;740:64;796:7;787:6;776:9;772:22;740:64;;;730:74;;702:108;634:186;;;;;827:113;910:24;928:5;910:24;;;905:3;898:37;892:48;;;947:213;;1065:2;1054:9;1050:18;1042:26;;1079:71;1147:1;1136:9;1132:17;1123:6;1079:71;;;1036:124;;;;;1167:91;;1229:24;1247:5;1229:24;;;1218:35;;1212:46;;;;1265:72;;1327:5;1316:16;;1310:27;;;;1344:121;;1417:42;1410:5;1406:54;1395:65;;1389:76;;;;1472:117;1541:24;1559:5;1541:24;;;1534:5;1531:35;1521:2;;1580:1;1577;1570:12;1521:2;1515:74;;1596:117;1665:24;1683:5;1665:24;;;1658:5;1655:35;1645:2;;1704:1;1701;1694:12;1645:2;1639:74;;585:7661:6;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 4103 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 1933 + }, + { + "length": 20, + "start": 2738 + }, + { + "length": 20, + "start": 3036 + } + ] + } + }, + "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d23c4c71161008c578063ae2926d411610066578063ae2926d41461023b578063b2692d7714610259578063f24ccbfe14610277578063f35213fc14610295576100ea565b80639d23c4c7146101d1578063a7932794146101ef578063aa0b7db71461021f576100ea565b80632fa6779a116100c85780632fa6779a1461015957806347b0f08e146101775780634eb7221a1461019557806355a373d6146101b3576100ea565b80631450e6ec146100ef5780631f8eb3e81461011f5780632882dd981461013b575b600080fd5b610109600480360361010491908101906117b3565b6102b3565b6040516101169190611cd8565b60405180910390f35b61013960048036036101349190810190611694565b61072b565b005b6101436110b6565b6040516101509190611fd0565b60405180910390f35b6101616110bc565b60405161016e9190611fd0565b60405180910390f35b61017f6110c2565b60405161018c9190611ea2565b60405180910390f35b61019d6110e7565b6040516101aa9190611ebd565b60405180910390f35b6101bb61110d565b6040516101c89190611e36565b60405180910390f35b6101d9611133565b6040516101e69190611e51565b60405180910390f35b61020960048036036102049190810190611761565b611159565b6040516102169190611cd8565b60405180910390f35b61023960048036036102349190810190611807565b61117a565b005b6102436111a8565b6040516102509190611e6c565b60405180910390f35b6102616111ce565b60405161026e9190611ed8565b60405180910390f35b61027f6111f4565b60405161028c9190611e87565b60405180910390f35b61029d61121a565b6040516102aa9190611c86565b60405180910390f35b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0856040518263ffffffff1660e01b81526004016103109190611fd0565b60206040518083038186803b15801561032857600080fd5b505afa15801561033c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103609190810190611738565b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8b557b7600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043f9190810190611738565b8386600001516000015187602001516040518563ffffffff1660e01b815260040161046d9493929190611d53565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104bd919081019061170f565b6104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390611f13565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c0de520600360008154811061054857fe5b906000526020600020015485600001516000015186602001516040518463ffffffff1660e01b815260040161057f93929190611d9f565b600060405180830381600087803b15801561059957600080fd5b505af11580156105ad573d6000803e3d6000fd5b505050506105bb6000611240565b60055460020a600454036004819055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b815260040160206040518083038186803b15801561063557600080fd5b505afa158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061066d9190810190611738565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b94be66860036000815481106106bb57fe5b9060005260206000200154866000015160000151846040518463ffffffff1660e01b81526004016106ee93929190611ddd565b600060405180830381600087803b15801561070857600080fd5b505af115801561071c573d6000803e3d6000fd5b50505050809250505092915050565b60001515600a60149054906101000a900460ff1615151461074857fe5b6000831161078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290611f33565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e826040518263ffffffff1660e01b81526004016107c29190611e14565b60206040518083038186803b1580156107da57600080fd5b505af41580156107ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610812919081019061166b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087690611ef3565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea846040518263ffffffff1660e01b81526004016108dc9190611fd0565b60206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092c919081019061166b565b905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016109ce93929190611ca1565b602060405180830381600087803b1580156109e857600080fd5b505af11580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a20919081019061170f565b610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690611f73565b60405180910390fd5b610a6761133c565b8281600001819052506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c891b0873__$a6b8846b3184b62d6aec39d1f36e30dab3$__6326b3285d856040518263ffffffff1660e01b8152600401610ae79190611f93565b60206040518083038186803b158015610aff57600080fd5b505af4158015610b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b379190810190611738565b6040518263ffffffff1660e01b8152600401610b539190611cd8565b602060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba5919081019061178a565b9050610baf61134f565b8681604001818152505085816020018181525050600081606001818152505081816000018181525050600073__$a6b8846b3184b62d6aec39d1f36e30dab3$__630d68f924836040518263ffffffff1660e01b8152600401610c119190611fb5565b60206040518083038186803b158015610c2957600080fd5b505af4158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c619190810190611738565b90506003819080600181540180825580915050906001820390600052602060002001600090919290919091505550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356901d5a848b8b8b868c6040518763ffffffff1660e01b8152600401610cf496959493929190611feb565b600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506004600081548092919060010191905055506000809050600060045490505b600060028281610d5157fe5b061415610ff35760606002604051908082528060200260200182016040528015610d8a5781602001602082028038833980820191505090505b509050600360026003805490500381548110610da257fe5b906000526020600020015481600081518110610dba57fe5b602002602001018181525050600360016003805490500381548110610ddb57fe5b906000526020600020015481600181518110610df357fe5b6020026020010181815250506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb82600081518110610e4957fe5b602002602001015183600181518110610e5e57fe5b60200260200101516040518363ffffffff1660e01b8152600401610e83929190611cf3565b60206040518083038186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed39190810190611738565b600360026003805490500381548110610ee857fe5b9060005260206000200181905550610f07600160038054905003611240565b60028281610f1157fe5b0491508280600101935050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbd63fb782600081518110610f6757fe5b602002602001015183600181518110610f7c57fe5b60200260200101516003600081548110610f9257fe5b90600052602060002001546040518463ffffffff1660e01b8152600401610fbb93929190611d1c565b600060405180830381600087803b158015610fd557600080fd5b505af1158015610fe9573d6000803e3d6000fd5b5050505050610d45565b60055482111561100557816005819055505b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63554056e46040518163ffffffff1660e01b815260040160206040518083038186803b15801561104957600080fd5b505af415801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611081919081019061186e565b60ff1660055414156110a9576001600a60146101000a81548160ff0219169083151502179055505b5050505050505050505050565b60055481565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061116657fe5b906000526020600020016000915090505481565b60001515600a60149054906101000a900460ff1615151461119757fe5b6111a33384848461072b565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003805490508110611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e90611f53565b60405180910390fd5b60008114156112ea5760008090505b6001600380549050038110156112e457600381815481106112b357fe5b906000526020600020016000905560038054809190600190036112d69190611377565b508080600101915050611296565b50611339565b6001600380549050038114156113385760036001600380549050038154811061130f57fe5b906000526020600020016000905560038054809190600190036113329190611377565b50611339565b5b50565b6040518060200160405280606081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b81548183558181111561139e5781836000526020600020918201910161139d91906113a3565b5b505050565b6113c591905b808211156113c15760008160009055506001016113a9565b5090565b90565b6000813590506113d78161234b565b92915050565b6000815190506113ec8161234b565b92915050565b600082601f83011261140357600080fd5b813561141661141182612080565b612053565b9150818183526020840193506020810190508385602084028201111561143b57600080fd5b60005b8381101561146b5781611451888261148a565b84526020840193506020830192505060018101905061143e565b5050505092915050565b60008151905061148481612362565b92915050565b60008135905061149981612379565b92915050565b6000815190506114ae81612379565b92915050565b600082601f8301126114c557600080fd5b81356114d86114d3826120a8565b612053565b915080825260208301602083018583830111156114f457600080fd5b6114ff8382846122f8565b50505092915050565b600060a0828403121561151a57600080fd5b6115246040612053565b905060006115348482850161162c565b6000830152506020611548848285016115b8565b60208301525092915050565b600060c0828403121561156657600080fd5b6115706040612053565b9050600061158084828501611508565b60008301525060a082013567ffffffffffffffff8111156115a057600080fd5b6115ac848285016113f2565b60208301525092915050565b6000608082840312156115ca57600080fd5b6115d46080612053565b905060006115e48482850161162c565b60008301525060206115f88482850161162c565b602083015250604061160c8482850161162c565b60408301525060606116208482850161162c565b60608301525092915050565b60008135905061163b81612390565b92915050565b60008151905061165081612390565b92915050565b600081519050611665816123a7565b92915050565b60006020828403121561167d57600080fd5b600061168b848285016113dd565b91505092915050565b600080600080608085870312156116aa57600080fd5b60006116b8878288016113c8565b94505060206116c98782880161162c565b93505060406116da8782880161162c565b925050606085013567ffffffffffffffff8111156116f757600080fd5b611703878288016114b4565b91505092959194509250565b60006020828403121561172157600080fd5b600061172f84828501611475565b91505092915050565b60006020828403121561174a57600080fd5b60006117588482850161149f565b91505092915050565b60006020828403121561177357600080fd5b60006117818482850161162c565b91505092915050565b60006020828403121561179c57600080fd5b60006117aa84828501611641565b91505092915050565b600080604083850312156117c657600080fd5b60006117d48582860161162c565b925050602083013567ffffffffffffffff8111156117f157600080fd5b6117fd85828601611554565b9150509250929050565b60008060006060848603121561181c57600080fd5b600061182a8682870161162c565b935050602061183b8682870161162c565b925050604084013567ffffffffffffffff81111561185857600080fd5b611864868287016114b4565b9150509250925092565b60006020828403121561188057600080fd5b600061188e84828501611656565b91505092915050565b60006118a3838361192b565b60208301905092915050565b6118b8816121c6565b82525050565b6118c781612167565b82525050565b60006118d8826120e4565b6118e28185612112565b93506118ed836120d4565b8060005b8381101561191e5781516119058882611897565b975061191083612105565b9250506001810190506118f1565b5085935050505092915050565b61193481612185565b82525050565b61194381612185565b82525050565b6000611954826120fa565b61195e8185612123565b935061196e818560208601612307565b6119778161233a565b840191505092915050565b600061198d826120fa565b6119978185612134565b93506119a7818560208601612307565b6119b08161233a565b840191505092915050565b60006119c6826120ef565b6119d08185612145565b93506119e0818560208601612307565b6119e98161233a565b840191505092915050565b6119fd816121d8565b82525050565b611a0c816121fc565b82525050565b611a1b81612220565b82525050565b611a2a81612244565b82525050565b611a3981612268565b82525050565b611a488161228c565b82525050565b611a57816122b0565b82525050565b6000611a6a602283612156565b91507f7075626c6963206b657920616e64206164647265737320646f6e2774206d617460008301527f63680000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ad0600d83612156565b91507f70726f6f6620696e76616c6964000000000000000000000000000000000000006000830152602082019050919050565b6000611b10602483612156565b91507f746f6b656e206465706f736974206d757374206265206772656174657220746860008301527f616e2030000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b76601c83612156565b91507f617272617920696e646578206973206f7574206f6620626f756e6473000000006000830152602082019050919050565b6000611bb6601b83612156565b91507f746f6b656e207472616e73666572206e6f7420617070726f76656400000000006000830152602082019050919050565b60006020830160008301518482036000860152611c0682826119bb565b9150508091505092915050565b608082016000820151611c296000850182611c77565b506020820151611c3c6020850182611c77565b506040820151611c4f6040850182611c77565b506060820151611c626060850182611c77565b50505050565b611c71816121af565b82525050565b611c80816121af565b82525050565b6000602082019050611c9b60008301846118be565b92915050565b6000606082019050611cb660008301866118af565b611cc360208301856118be565b611cd06040830184611c68565b949350505050565b6000602082019050611ced600083018461193a565b92915050565b6000604082019050611d08600083018561193a565b611d15602083018461193a565b9392505050565b6000606082019050611d31600083018661193a565b611d3e602083018561193a565b611d4b604083018461193a565b949350505050565b6000608082019050611d68600083018761193a565b611d75602083018661193a565b611d826040830185611c68565b8181036060830152611d9481846118cd565b905095945050505050565b6000606082019050611db4600083018661193a565b611dc16020830185611c68565b8181036040830152611dd381846118cd565b9050949350505050565b6000606082019050611df2600083018661193a565b611dff6020830185611c68565b611e0c604083018461193a565b949350505050565b60006020820190508181036000830152611e2e8184611982565b905092915050565b6000602082019050611e4b60008301846119f4565b92915050565b6000602082019050611e666000830184611a03565b92915050565b6000602082019050611e816000830184611a12565b92915050565b6000602082019050611e9c6000830184611a21565b92915050565b6000602082019050611eb76000830184611a30565b92915050565b6000602082019050611ed26000830184611a3f565b92915050565b6000602082019050611eed6000830184611a4e565b92915050565b60006020820190508181036000830152611f0c81611a5d565b9050919050565b60006020820190508181036000830152611f2c81611ac3565b9050919050565b60006020820190508181036000830152611f4c81611b03565b9050919050565b60006020820190508181036000830152611f6c81611b69565b9050919050565b60006020820190508181036000830152611f8c81611ba9565b9050919050565b60006020820190508181036000830152611fad8184611be9565b905092915050565b6000608082019050611fca6000830184611c13565b92915050565b6000602082019050611fe56000830184611c68565b92915050565b600060c0820190506120006000830189611c68565b61200d60208301886118be565b61201a6040830187611c68565b6120276060830186611c68565b612034608083018561193a565b81810360a08301526120468184611949565b9050979650505050505050565b6000604051905081810181811067ffffffffffffffff8211171561207657600080fd5b8060405250919050565b600067ffffffffffffffff82111561209757600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156120bf57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006121728261218f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006121d1826122d4565b9050919050565b60006121e3826121ea565b9050919050565b60006121f58261218f565b9050919050565b60006122078261220e565b9050919050565b60006122198261218f565b9050919050565b600061222b82612232565b9050919050565b600061223d8261218f565b9050919050565b600061224f82612256565b9050919050565b60006122618261218f565b9050919050565b60006122738261227a565b9050919050565b60006122858261218f565b9050919050565b60006122978261229e565b9050919050565b60006122a98261218f565b9050919050565b60006122bb826122c2565b9050919050565b60006122cd8261218f565b9050919050565b60006122df826122e6565b9050919050565b60006122f18261218f565b9050919050565b82818337600083830152505050565b60005b8381101561232557808201518184015260208101905061230a565b83811115612334576000848401525b50505050565b6000601f19601f8301169050919050565b61235481612167565b811461235f57600080fd5b50565b61236b81612179565b811461237657600080fd5b50565b61238281612185565b811461238d57600080fd5b50565b612399816121af565b81146123a457600080fd5b50565b6123b0816121b9565b81146123bb57600080fd5b5056fea365627a7a723158204d9bb45771d4c1f2b21645aa21603bc672bb8648120a0273cd8e0a2cf23a08536c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9D23C4C7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xAE2926D4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xAE2926D4 EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0xB2692D77 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x295 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x9D23C4C7 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xA7932794 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0xAA0B7DB7 EQ PUSH2 0x21F JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x2FA6779A GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x2FA6779A EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x47B0F08E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x55A373D6 EQ PUSH2 0x1B3 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1450E6EC EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x1F8EB3E8 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x2882DD98 EQ PUSH2 0x13B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x109 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x104 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x17B3 JUMP JUMPDEST PUSH2 0x2B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x116 SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x134 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1694 JUMP JUMPDEST PUSH2 0x72B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x10B6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x150 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x161 PUSH2 0x10BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16E SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17F PUSH2 0x10C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x10E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0x1EBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BB PUSH2 0x110D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C8 SWAP2 SWAP1 PUSH2 0x1E36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D9 PUSH2 0x1133 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP2 SWAP1 PUSH2 0x1E51 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x209 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x204 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1761 JUMP JUMPDEST PUSH2 0x1159 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x216 SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x239 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x234 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1807 JUMP JUMPDEST PUSH2 0x117A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x243 PUSH2 0x11A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x250 SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0x1ED8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27F PUSH2 0x11F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28C SWAP2 SWAP1 PUSH2 0x1E87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29D PUSH2 0x121A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AA SWAP2 SWAP1 PUSH2 0x1C86 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9B24B3B0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x310 SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x328 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x360 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF8B557B7 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5CA1E165 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x43F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST DUP4 DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x46D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D53 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x499 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x4BD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x4FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F3 SWAP1 PUSH2 0x1F13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C0DE520 PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x548 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x57F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D9F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x599 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x5BB PUSH1 0x0 PUSH2 0x1240 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x2 EXP PUSH1 0x4 SLOAD SUB PUSH1 0x4 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5CA1E165 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x649 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x66D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB94BE668 PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x6BB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP7 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6EE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x71C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0xA PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x748 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x78B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x782 SWAP1 PUSH2 0x1F33 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0x0 PUSH4 0xE8A4C04E DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7C2 SWAP2 SWAP1 PUSH2 0x1E14 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x7EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x812 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x166B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x87F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x876 SWAP1 PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9A0BA2EA DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8DC SWAP2 SWAP1 PUSH2 0x1FD0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x908 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x92C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x166B JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP8 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9CE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1CA1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9FC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xA20 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x170F JUMP JUMPDEST PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA56 SWAP1 PUSH2 0x1F73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA67 PUSH2 0x133C JUMP JUMPDEST DUP3 DUP2 PUSH1 0x0 ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9C891B08 PUSH20 0x0 PUSH4 0x26B3285D DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x1F93 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB13 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB37 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB53 SWAP2 SWAP1 PUSH2 0x1CD8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBA5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x178A JUMP JUMPDEST SWAP1 POP PUSH2 0xBAF PUSH2 0x134F JUMP JUMPDEST DUP7 DUP2 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP6 DUP2 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 PUSH20 0x0 PUSH4 0xD68F924 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC11 SWAP2 SWAP1 PUSH2 0x1FB5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xC3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC61 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x56901D5A DUP5 DUP12 DUP12 DUP12 DUP7 DUP13 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCF4 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1FEB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD0E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD22 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x4 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 PUSH1 0x4 SLOAD SWAP1 POP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DUP2 PUSH2 0xD51 JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0xFF3 JUMPI PUSH1 0x60 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD8A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0x2 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xDA2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xDBA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x3 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xDDB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xDF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE49 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xE5E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE83 SWAP3 SWAP2 SWAP1 PUSH2 0x1CF3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEAF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xED3 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1738 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0xEE8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH2 0xF07 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB PUSH2 0x1240 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP2 PUSH2 0xF11 JUMPI INVALID JUMPDEST DIV SWAP2 POP DUP3 DUP1 PUSH1 0x1 ADD SWAP4 POP POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDBD63FB7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF67 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xF7C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0xF92 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1D1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0xD45 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP3 GT ISZERO PUSH2 0x1005 JUMPI DUP2 PUSH1 0x5 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH20 0x0 PUSH4 0x554056E4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x105D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1081 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x186E JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x5 SLOAD EQ ISZERO PUSH2 0x10A9 JUMPI PUSH1 0x1 PUSH1 0xA PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1166 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0xA PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x1197 JUMPI INVALID JUMPDEST PUSH2 0x11A3 CALLER DUP5 DUP5 DUP5 PUSH2 0x72B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD SWAP1 POP DUP2 LT PUSH2 0x1287 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x127E SWAP1 PUSH2 0x1F53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x12EA JUMPI PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 LT ISZERO PUSH2 0x12E4 JUMPI PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12B3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD DUP1 SWAP2 SWAP1 PUSH1 0x1 SWAP1 SUB PUSH2 0x12D6 SWAP2 SWAP1 PUSH2 0x1377 JUMP JUMPDEST POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1296 JUMP JUMPDEST POP PUSH2 0x1339 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 EQ ISZERO PUSH2 0x1338 JUMPI PUSH1 0x3 PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP SUB DUP2 SLOAD DUP2 LT PUSH2 0x130F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD DUP1 SWAP2 SWAP1 PUSH1 0x1 SWAP1 SUB PUSH2 0x1332 SWAP2 SWAP1 PUSH2 0x1377 JUMP JUMPDEST POP PUSH2 0x1339 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x139E JUMPI DUP2 DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x139D SWAP2 SWAP1 PUSH2 0x13A3 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x13C5 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x13C1 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x13A9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x13D7 DUP2 PUSH2 0x234B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x13EC DUP2 PUSH2 0x234B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1416 PUSH2 0x1411 DUP3 PUSH2 0x2080 JUMP JUMPDEST PUSH2 0x2053 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x143B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x146B JUMPI DUP2 PUSH2 0x1451 DUP9 DUP3 PUSH2 0x148A JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x143E JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1484 DUP2 PUSH2 0x2362 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1499 DUP2 PUSH2 0x2379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x14AE DUP2 PUSH2 0x2379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x14D8 PUSH2 0x14D3 DUP3 PUSH2 0x20A8 JUMP JUMPDEST PUSH2 0x2053 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14FF DUP4 DUP3 DUP5 PUSH2 0x22F8 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x151A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1524 PUSH1 0x40 PUSH2 0x2053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1534 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x1548 DUP5 DUP3 DUP6 ADD PUSH2 0x15B8 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1570 PUSH1 0x40 PUSH2 0x2053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1580 DUP5 DUP3 DUP6 ADD PUSH2 0x1508 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15AC DUP5 DUP3 DUP6 ADD PUSH2 0x13F2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15D4 PUSH1 0x80 PUSH2 0x2053 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15E4 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x15F8 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x160C DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x1620 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x163B DUP2 PUSH2 0x2390 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1650 DUP2 PUSH2 0x2390 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1665 DUP2 PUSH2 0x23A7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x167D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x168B DUP5 DUP3 DUP6 ADD PUSH2 0x13DD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x16AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16B8 DUP8 DUP3 DUP9 ADD PUSH2 0x13C8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x16C9 DUP8 DUP3 DUP9 ADD PUSH2 0x162C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x16DA DUP8 DUP3 DUP9 ADD PUSH2 0x162C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1703 DUP8 DUP3 DUP9 ADD PUSH2 0x14B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1721 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x172F DUP5 DUP3 DUP6 ADD PUSH2 0x1475 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x174A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1758 DUP5 DUP3 DUP6 ADD PUSH2 0x149F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1781 DUP5 DUP3 DUP6 ADD PUSH2 0x162C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x179C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17AA DUP5 DUP3 DUP6 ADD PUSH2 0x1641 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x17D4 DUP6 DUP3 DUP7 ADD PUSH2 0x162C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x17F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17FD DUP6 DUP3 DUP7 ADD PUSH2 0x1554 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x181C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x182A DUP7 DUP3 DUP8 ADD PUSH2 0x162C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x183B DUP7 DUP3 DUP8 ADD PUSH2 0x162C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1858 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1864 DUP7 DUP3 DUP8 ADD PUSH2 0x14B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1880 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x188E DUP5 DUP3 DUP6 ADD PUSH2 0x1656 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A3 DUP4 DUP4 PUSH2 0x192B JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x18B8 DUP2 PUSH2 0x21C6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x18C7 DUP2 PUSH2 0x2167 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18D8 DUP3 PUSH2 0x20E4 JUMP JUMPDEST PUSH2 0x18E2 DUP2 DUP6 PUSH2 0x2112 JUMP JUMPDEST SWAP4 POP PUSH2 0x18ED DUP4 PUSH2 0x20D4 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x191E JUMPI DUP2 MLOAD PUSH2 0x1905 DUP9 DUP3 PUSH2 0x1897 JUMP JUMPDEST SWAP8 POP PUSH2 0x1910 DUP4 PUSH2 0x2105 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x18F1 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1934 DUP2 PUSH2 0x2185 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1943 DUP2 PUSH2 0x2185 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1954 DUP3 PUSH2 0x20FA JUMP JUMPDEST PUSH2 0x195E DUP2 DUP6 PUSH2 0x2123 JUMP JUMPDEST SWAP4 POP PUSH2 0x196E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x1977 DUP2 PUSH2 0x233A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x198D DUP3 PUSH2 0x20FA JUMP JUMPDEST PUSH2 0x1997 DUP2 DUP6 PUSH2 0x2134 JUMP JUMPDEST SWAP4 POP PUSH2 0x19A7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x19B0 DUP2 PUSH2 0x233A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19C6 DUP3 PUSH2 0x20EF JUMP JUMPDEST PUSH2 0x19D0 DUP2 DUP6 PUSH2 0x2145 JUMP JUMPDEST SWAP4 POP PUSH2 0x19E0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2307 JUMP JUMPDEST PUSH2 0x19E9 DUP2 PUSH2 0x233A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19FD DUP2 PUSH2 0x21D8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A0C DUP2 PUSH2 0x21FC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A1B DUP2 PUSH2 0x2220 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A2A DUP2 PUSH2 0x2244 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A39 DUP2 PUSH2 0x2268 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A48 DUP2 PUSH2 0x228C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A57 DUP2 PUSH2 0x22B0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A6A PUSH1 0x22 DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x7075626C6963206B657920616E64206164647265737320646F6E2774206D6174 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6368000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AD0 PUSH1 0xD DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x70726F6F6620696E76616C696400000000000000000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B10 PUSH1 0x24 DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x746F6B656E206465706F736974206D7573742062652067726561746572207468 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x616E203000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B76 PUSH1 0x1C DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x617272617920696E646578206973206F7574206F6620626F756E647300000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB6 PUSH1 0x1B DUP4 PUSH2 0x2156 JUMP JUMPDEST SWAP2 POP PUSH32 0x746F6B656E207472616E73666572206E6F7420617070726F7665640000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x1C06 DUP3 DUP3 PUSH2 0x19BB JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x1C29 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x1C3C PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x1C4F PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1C62 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x1C77 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1C71 DUP2 PUSH2 0x21AF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1C80 DUP2 PUSH2 0x21AF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C9B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x18BE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1CB6 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x1CC3 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x18BE JUMP JUMPDEST PUSH2 0x1CD0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1C68 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1CED PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1D08 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D15 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1D31 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D3E PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D4B PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1D68 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D75 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1D82 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1C68 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1D94 DUP2 DUP5 PUSH2 0x18CD JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1DB4 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1DC1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1C68 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1DD3 DUP2 DUP5 PUSH2 0x18CD JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1DF2 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x193A JUMP JUMPDEST PUSH2 0x1DFF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x1E0C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x193A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E2E DUP2 DUP5 PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E4B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x19F4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E66 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A03 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E81 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A12 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E9C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A21 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1EB7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A30 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1ED2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A3F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1EED PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A4E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F0C DUP2 PUSH2 0x1A5D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F2C DUP2 PUSH2 0x1AC3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F4C DUP2 PUSH2 0x1B03 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F6C DUP2 PUSH2 0x1B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F8C DUP2 PUSH2 0x1BA9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FAD DUP2 DUP5 PUSH2 0x1BE9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1FCA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1FE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C68 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x2000 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x200D PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x18BE JUMP JUMPDEST PUSH2 0x201A PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x2027 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1C68 JUMP JUMPDEST PUSH2 0x2034 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x193A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x2046 DUP2 DUP5 PUSH2 0x1949 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2076 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x20BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2172 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21D1 DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21E3 DUP3 PUSH2 0x21EA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21F5 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2207 DUP3 PUSH2 0x220E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2219 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x222B DUP3 PUSH2 0x2232 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223D DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x224F DUP3 PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2261 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2273 DUP3 PUSH2 0x227A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2285 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2297 DUP3 PUSH2 0x229E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22A9 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22BB DUP3 PUSH2 0x22C2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22CD DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22DF DUP3 PUSH2 0x22E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22F1 DUP3 PUSH2 0x218F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2325 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x230A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2334 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2354 DUP2 PUSH2 0x2167 JUMP JUMPDEST DUP2 EQ PUSH2 0x235F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x236B DUP2 PUSH2 0x2179 JUMP JUMPDEST DUP2 EQ PUSH2 0x2376 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2382 DUP2 PUSH2 0x2185 JUMP JUMPDEST DUP2 EQ PUSH2 0x238D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2399 DUP2 PUSH2 0x21AF JUMP JUMPDEST DUP2 EQ PUSH2 0x23A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x23B0 DUP2 PUSH2 0x21B9 JUMP JUMPDEST DUP2 EQ PUSH2 0x23BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x4D SWAP12 0xB4 JUMPI PUSH18 0xD4C1F2B21645AA21603BC672BB8648120A02 PUSH20 0xCD8E0A2CF23A08536C6578706572696D656E7461 PUSH13 0xF564736F6C634300050F004000 ", + "sourceMap": "585:7661:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;585:7661:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5904:1509;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2477:2997;;;;;;;;;;;;;;;;:::i;:::-;;787:35;;;:::i;:::-;;;;;;;;;;;;;;;;755:26;;;:::i;:::-;;;;;;;;;;;;;;;;615;;;:::i;:::-;;;;;;;;;;;;;;;;647:28;;;:::i;:::-;;;;;;;;;;;;;;;;929:27;;;:::i;:::-;;;;;;;;;;;;;;;;888:35;;;:::i;:::-;;;;;;;;;;;;;;;;717:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2002:200;;;;;;;;;;;;;;;;:::i;:::-;;962:35;;;:::i;:::-;;;;;;;;;;;;;;;;681:30;;;:::i;:::-;;;;;;;;;;;;;;;;862:20;;;:::i;:::-;;;;;;;;;;;;;;;;829:26;;;:::i;:::-;;;;;;;;;;;;;;;;5904:1509;6041:7;6060:24;6087:11;;;;;;;;;;;:19;;;6107:13;6087:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6087:34:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6087:34:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6087:34:6;;;;;;;;;6060:61;;6269:11;;;;;;;;;;;:22;;;6309:12;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6309:22:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6309:22:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6309:22:6;;;;;;;;;6349:16;6383;:26;;;:40;;;6441:16;:25;;;6269:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6269:211:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6269:211:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6269:211:6;;;;;;;;;6248:271;;;;;;;;;;;;;;;;;;;;;;6754:12;;;;;;;;;;;:22;;;6790:15;6806:1;6790:18;;;;;;;;;;;;;;;;6822:16;:26;;;:40;;;6876:16;:25;;;6754:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6754:157:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6754:157:6;;;;6965:16;6979:1;6965:13;:16::i;:::-;7084:20;;7081:1;:23;7067:11;;:37;7053:11;:51;;;;7114:15;7132:12;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7132:22:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7132:22:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7132:22:6;;;;;;;;;7114:40;;7191:6;;;;;;;;;;;:26;;;7231:15;7247:1;7231:18;;;;;;;;;;;;;;;;7263:16;:26;;;:40;;;7317:7;7191:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7191:143:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7191:143:6;;;;7399:7;7392:14;;;;5904:1509;;;;:::o;2477:2997::-;1092:5;1080:17;;:8;;;;;;;;;;;:17;;;1073:25;;;;2721:1;2711:7;:11;2703:60;;;;;;;;;;;;;;;;;;;;;;2868:11;:28;2897:7;2868:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2868:37:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2868:37:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2868:37:6;;;;;;;;;2852:53;;:12;:53;;;2831:134;;;;;;;;;;;;;;;;;;;;;;3011:28;3042:13;;;;;;;;;;;:30;;;3086:10;3042:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3042:64:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3042:64:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3042:64:6;;;;;;;;;3011:95;;3139:20;3116:13;;:44;;;;;;;;;;;;;;;;;;3245:13;;;;;;;;;;;:26;;;3272:10;3292:4;3299:7;3245:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3245:62:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3245:62:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3245:62:6;;;;;;;;;3224:136;;;;;;;;;;;;;;;;;;;;;;3405:31;;:::i;:::-;3466:7;3446:10;:17;;:27;;;;3538:13;3554:12;;;;;;;;;;;:23;;;3591:11;:25;3617:10;3591:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3591:37:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3591:37:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3591:37:6;;;;;;;;;3554:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3554:84:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3554:84:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3554:84:6;;;;;;;;;3538:100;;3681:35;;:::i;:::-;3747:7;3726:10;:18;;:28;;;;;3787:10;3764;:20;;:33;;;;;3826:1;3807:10;:16;;:20;;;;;3853:5;3837:10;:13;;:21;;;;;3901:19;3923:11;:27;3951:10;3923:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3923:39:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3923:39:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3923:39:6;;;;;;;;;3901:61;;4002:15;4023:11;4002:33;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4002:33:6;;;;;;;;;;;;;;;;;;;;;;4071:6;;;;;;;;;;;:23;;;4108:5;4127:12;4153:7;4174:10;4198:11;4223:7;4071:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4071:169:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4071:169:6;;;;4251:11;;:13;;;;;;;;;;;;;4274:31;4308:1;4274:35;;4319:11;4333;;4319:25;;4354:822;4372:1;4367;4361:3;:7;;;;;;:12;4354:822;;;4389:25;4431:1;4417:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4417:16:6;;;;4389:44;;4461:15;4502:1;4477:15;:22;;;;:26;4461:43;;;;;;;;;;;;;;;;4447:8;4456:1;4447:11;;;;;;;;;;;;;:57;;;;;4532:15;4573:1;4548:15;:22;;;;:26;4532:43;;;;;;;;;;;;;;;;4518:8;4527:1;4518:11;;;;;;;;;;;;;:57;;;;;4636:11;;;;;;;;;;;:21;;;4675:8;4684:1;4675:11;;;;;;;;;;;;;;4704:8;4713:1;4704:11;;;;;;;;;;;;;;4636:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4636:93:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4636:93:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4636:93:6;;;;;;;;;4590:15;4631:1;4606:15;:22;;;;:26;4590:43;;;;;;;;;;;;;;;:139;;;;4807:41;4846:1;4821:15;:22;;;;:26;4807:13;:41::i;:::-;4874:1;4868:3;:7;;;;;;4862:13;;4944:25;;;;;;;5030:6;;;;;;;;;;;:27;;;5075:8;5084:1;5075:11;;;;;;;;;;;;;;5104:8;5113:1;5104:11;;;;;;;;;;;;;;5133:15;5149:1;5133:18;;;;;;;;;;;;;;;;5030:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5030:135:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5030:135:6;;;;4354:822;;;;5215:20;;5189:23;:46;5185:123;;;5274:23;5251:20;:46;;;;5185:123;5345:12;:32;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5345:34:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5345:34:6;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5345:34:6;;;;;;;;;5321:58;;:20;;:58;5317:151;;;5453:4;5442:8;;:15;;;;;;;;;;;;;;;;;;5317:151;1108:1;;;;;;;2477:2997;;;;:::o;787:35::-;;;;:::o;755:26::-;;;;:::o;615:::-;;;;;;;;;;;;;:::o;647:28::-;;;;;;;;;;;;;:::o;929:27::-;;;;;;;;;;;;;:::o;888:35::-;;;;;;;;;;;;;:::o;717:32::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2002:200::-;1092:5;1080:17;;:8;;;;;;;;;;;:17;;;1073:25;;;;2143:52;2154:10;2166:7;2175:10;2187:7;2143:10;:52::i;:::-;2002:200;;;:::o;962:35::-;;;;;;;;;;;;;:::o;681:30::-;;;;;;;;;;;;;:::o;862:20::-;;;;;;;;;;;;;:::o;829:26::-;;;;;;;;;;;;;:::o;7619:625::-;7707:15;:22;;;;7698:6;:31;7677:106;;;;;;;;;;;;;;;;;;;;;;7848:1;7838:6;:11;7834:219;;;7870:9;7882:1;7870:13;;7865:158;7914:1;7889:15;:22;;;;:26;7885:1;:30;7865:158;;;7947:15;7963:1;7947:18;;;;;;;;;;;;;;;7940:25;;;7984:15;:24;;;;;;;;;;;;:::i;:::-;;7917:3;;;;;;;7865:158;;;;8036:7;;7834:219;8102:1;8077:15;:22;;;;:26;8067:6;:36;8063:175;;;8126:15;8167:1;8142:15;:22;;;;:26;8126:43;;;;;;;;;;;;;;;8119:50;;;8183:15;:24;;;;;;;;;;;;:::i;:::-;;8221:7;;8063:175;7619:625;;:::o;585:7661::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;301:699;;414:3;407:4;399:6;395:17;391:27;381:2;;432:1;429;422:12;381:2;469:6;456:20;491:76;506:60;559:6;506:60;;;491:76;;;482:85;;584:5;609:6;602:5;595:21;639:4;631:6;627:17;617:27;;661:4;656:3;652:14;645:21;;714:6;761:3;753:4;745:6;741:17;736:3;732:27;729:36;726:2;;;778:1;775;768:12;726:2;803:1;788:206;813:6;810:1;807:13;788:206;;;871:3;893:37;926:3;914:10;893:37;;;888:3;881:50;954:4;949:3;945:14;938:21;;982:4;977:3;973:14;966:21;;845:149;835:1;832;828:9;823:14;;788:206;;;792:14;374:626;;;;;;;;1008:128;;1089:6;1083:13;1074:22;;1101:30;1125:5;1101:30;;;1068:68;;;;;1143:130;;1223:6;1210:20;1201:29;;1235:33;1262:5;1235:33;;;1195:78;;;;;1280:134;;1364:6;1358:13;1349:22;;1376:33;1403:5;1376:33;;;1343:71;;;;;1422:440;;1523:3;1516:4;1508:6;1504:17;1500:27;1490:2;;1541:1;1538;1531:12;1490:2;1578:6;1565:20;1600:64;1615:48;1656:6;1615:48;;;1600:64;;;1591:73;;1684:6;1677:5;1670:21;1720:4;1712:6;1708:17;1753:4;1746:5;1742:16;1788:3;1779:6;1774:3;1770:16;1767:25;1764:2;;;1805:1;1802;1795:12;1764:2;1815:41;1849:6;1844:3;1839;1815:41;;;1483:379;;;;;;;;1911:514;;2035:4;2023:9;2018:3;2014:19;2010:30;2007:2;;;2053:1;2050;2043:12;2007:2;2071:20;2086:4;2071:20;;;2062:29;;2150:1;2182:49;2227:3;2218:6;2207:9;2203:22;2182:49;;;2175:4;2168:5;2164:16;2157:75;2101:142;2296:2;2329:74;2399:3;2390:6;2379:9;2375:22;2329:74;;;2322:4;2315:5;2311:16;2304:100;2253:162;2001:424;;;;;2470:630;;2595:4;2583:9;2578:3;2574:19;2570:30;2567:2;;;2613:1;2610;2603:12;2567:2;2631:20;2646:4;2631:20;;;2622:29;;2706:1;2738:84;2818:3;2809:6;2798:9;2794:22;2738:84;;;2731:4;2724:5;2720:16;2713:110;2661:173;2916:3;2905:9;2901:19;2888:33;2941:18;2933:6;2930:30;2927:2;;;2973:1;2970;2963:12;2927:2;3008:70;3074:3;3065:6;3054:9;3050:22;3008:70;;;3001:4;2994:5;2990:16;2983:96;2844:246;2561:539;;;;;3138:762;;3252:4;3240:9;3235:3;3231:19;3227:30;3224:2;;;3270:1;3267;3260:12;3224:2;3288:20;3303:4;3288:20;;;3279:29;;3356:1;3388:49;3433:3;3424:6;3413:9;3409:22;3388:49;;;3381:4;3374:5;3370:16;3363:75;3318:131;3504:2;3537:49;3582:3;3573:6;3562:9;3558:22;3537:49;;;3530:4;3523:5;3519:16;3512:75;3459:139;3651:2;3684:49;3729:3;3720:6;3709:9;3705:22;3684:49;;;3677:4;3670:5;3666:16;3659:75;3608:137;3796:2;3829:49;3874:3;3865:6;3854:9;3850:22;3829:49;;;3822:4;3815:5;3811:16;3804:75;3755:135;3218:682;;;;;3907:130;;3987:6;3974:20;3965:29;;3999:33;4026:5;3999:33;;;3959:78;;;;;4044:134;;4128:6;4122:13;4113:22;;4140:33;4167:5;4140:33;;;4107:71;;;;;4185:130;;4267:6;4261:13;4252:22;;4279:31;4304:5;4279:31;;;4246:69;;;;;4322:263;;4437:2;4425:9;4416:7;4412:23;4408:32;4405:2;;;4453:1;4450;4443:12;4405:2;4488:1;4505:64;4561:7;4552:6;4541:9;4537:22;4505:64;;;4495:74;;4467:108;4399:186;;;;;4592:721;;;;;4756:3;4744:9;4735:7;4731:23;4727:33;4724:2;;;4773:1;4770;4763:12;4724:2;4808:1;4825:53;4870:7;4861:6;4850:9;4846:22;4825:53;;;4815:63;;4787:97;4915:2;4933:53;4978:7;4969:6;4958:9;4954:22;4933:53;;;4923:63;;4894:98;5023:2;5041:53;5086:7;5077:6;5066:9;5062:22;5041:53;;;5031:63;;5002:98;5159:2;5148:9;5144:18;5131:32;5183:18;5175:6;5172:30;5169:2;;;5215:1;5212;5205:12;5169:2;5235:62;5289:7;5280:6;5269:9;5265:22;5235:62;;;5225:72;;5110:193;4718:595;;;;;;;;5320:257;;5432:2;5420:9;5411:7;5407:23;5403:32;5400:2;;;5448:1;5445;5438:12;5400:2;5483:1;5500:61;5553:7;5544:6;5533:9;5529:22;5500:61;;;5490:71;;5462:105;5394:183;;;;;5584:263;;5699:2;5687:9;5678:7;5674:23;5670:32;5667:2;;;5715:1;5712;5705:12;5667:2;5750:1;5767:64;5823:7;5814:6;5803:9;5799:22;5767:64;;;5757:74;;5729:108;5661:186;;;;;5854:241;;5958:2;5946:9;5937:7;5933:23;5929:32;5926:2;;;5974:1;5971;5964:12;5926:2;6009:1;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;;;6016:63;;5988:97;5920:175;;;;;6102:263;;6217:2;6205:9;6196:7;6192:23;6188:32;6185:2;;;6233:1;6230;6223:12;6185:2;6268:1;6285:64;6341:7;6332:6;6321:9;6317:22;6285:64;;;6275:74;;6247:108;6179:186;;;;;6372:524;;;6529:2;6517:9;6508:7;6504:23;6500:32;6497:2;;;6545:1;6542;6535:12;6497:2;6580:1;6597:53;6642:7;6633:6;6622:9;6618:22;6597:53;;;6587:63;;6559:97;6715:2;6704:9;6700:18;6687:32;6739:18;6731:6;6728:30;6725:2;;;6771:1;6768;6761:12;6725:2;6791:89;6872:7;6863:6;6852:9;6848:22;6791:89;;;6781:99;;6666:220;6491:405;;;;;;6903:595;;;;7050:2;7038:9;7029:7;7025:23;7021:32;7018:2;;;7066:1;7063;7056:12;7018:2;7101:1;7118:53;7163:7;7154:6;7143:9;7139:22;7118:53;;;7108:63;;7080:97;7208:2;7226:53;7271:7;7262:6;7251:9;7247:22;7226:53;;;7216:63;;7187:98;7344:2;7333:9;7329:18;7316:32;7368:18;7360:6;7357:30;7354:2;;;7400:1;7397;7390:12;7354:2;7420:62;7474:7;7465:6;7454:9;7450:22;7420:62;;;7410:72;;7295:193;7012:486;;;;;;7505:259;;7618:2;7606:9;7597:7;7593:23;7589:32;7586:2;;;7634:1;7631;7624:12;7586:2;7669:1;7686:62;7740:7;7731:6;7720:9;7716:22;7686:62;;;7676:72;;7648:106;7580:184;;;;;7772:173;;7859:46;7901:3;7893:6;7859:46;;;7934:4;7929:3;7925:14;7911:28;;7852:93;;;;;7953:142;8044:45;8083:5;8044:45;;;8039:3;8032:58;8026:69;;;8102:113;8185:24;8203:5;8185:24;;;8180:3;8173:37;8167:48;;;8253:674;;8394:50;8438:5;8394:50;;;8457:86;8536:6;8531:3;8457:86;;;8450:93;;8564:52;8610:5;8564:52;;;8636:7;8664:1;8649:256;8674:6;8671:1;8668:13;8649:256;;;8741:6;8735:13;8762:63;8821:3;8806:13;8762:63;;;8755:70;;8842:56;8891:6;8842:56;;;8832:66;;8706:199;8696:1;8693;8689:9;8684:14;;8649:256;;;8653:14;8918:3;8911:10;;8373:554;;;;;;;;8935:103;9008:24;9026:5;9008:24;;;9003:3;8996:37;8990:48;;;9045:113;9128:24;9146:5;9128:24;;;9123:3;9116:37;9110:48;;;9165:343;;9275:38;9307:5;9275:38;;;9325:70;9388:6;9383:3;9325:70;;;9318:77;;9400:52;9445:6;9440:3;9433:4;9426:5;9422:16;9400:52;;;9473:29;9495:6;9473:29;;;9468:3;9464:39;9457:46;;9255:253;;;;;;9515:359;;9633:38;9665:5;9633:38;;;9683:78;9754:6;9749:3;9683:78;;;9676:85;;9766:52;9811:6;9806:3;9799:4;9792:5;9788:16;9766:52;;;9839:29;9861:6;9839:29;;;9834:3;9830:39;9823:46;;9613:261;;;;;;9881:331;;9985:34;10013:5;9985:34;;;10031:68;10092:6;10087:3;10031:68;;;10024:75;;10104:52;10149:6;10144:3;10137:4;10130:5;10126:16;10104:52;;;10177:29;10199:6;10177:29;;;10172:3;10168:39;10161:46;;9965:247;;;;;;10219:156;10317:52;10363:5;10317:52;;;10312:3;10305:65;10299:76;;;10382:172;10488:60;10542:5;10488:60;;;10483:3;10476:73;10470:84;;;10561:174;10668:61;10723:5;10668:61;;;10663:3;10656:74;10650:85;;;10742:156;10840:52;10886:5;10840:52;;;10835:3;10828:65;10822:76;;;10905:174;11012:61;11067:5;11012:61;;;11007:3;11000:74;10994:85;;;11086:168;11190:58;11242:5;11190:58;;;11185:3;11178:71;11172:82;;;11261:152;11357:50;11401:5;11357:50;;;11352:3;11345:63;11339:74;;;11421:371;;11581:67;11645:2;11640:3;11581:67;;;11574:74;;11681:34;11677:1;11672:3;11668:11;11661:55;11750:4;11745:2;11740:3;11736:12;11729:26;11783:2;11778:3;11774:12;11767:19;;11567:225;;;;11801:313;;11961:67;12025:2;12020:3;11961:67;;;11954:74;;12061:15;12057:1;12052:3;12048:11;12041:36;12105:2;12100:3;12096:12;12089:19;;11947:167;;;;12123:373;;12283:67;12347:2;12342:3;12283:67;;;12276:74;;12383:34;12379:1;12374:3;12370:11;12363:55;12452:6;12447:2;12442:3;12438:12;12431:28;12487:2;12482:3;12478:12;12471:19;;12269:227;;;;12505:328;;12665:67;12729:2;12724:3;12665:67;;;12658:74;;12765:30;12761:1;12756:3;12752:11;12745:51;12824:2;12819:3;12815:12;12808:19;;12651:182;;;;12842:327;;13002:67;13066:2;13061:3;13002:67;;;12995:74;;13102:29;13098:1;13093:3;13089:11;13082:50;13160:2;13155:3;13151:12;13144:19;;12988:181;;;;13228:429;;13387:4;13382:3;13378:14;13472:4;13465:5;13461:16;13455:23;13524:3;13518:4;13514:14;13507:4;13502:3;13498:14;13491:38;13544:75;13614:4;13600:12;13544:75;;;13536:83;;13407:224;13648:4;13641:11;;13360:297;;;;;;13723:839;13882:4;13877:3;13873:14;13963:4;13956:5;13952:16;13946:23;13975:71;14040:4;14035:3;14031:14;14017:12;13975:71;;;13902:150;14130:4;14123:5;14119:16;14113:23;14142:71;14207:4;14202:3;14198:14;14184:12;14142:71;;;14062:157;14295:4;14288:5;14284:16;14278:23;14307:71;14372:4;14367:3;14363:14;14349:12;14307:71;;;14229:155;14458:4;14451:5;14447:16;14441:23;14470:71;14535:4;14530:3;14526:14;14512:12;14470:71;;;14394:153;13855:707;;;;14569:113;14652:24;14670:5;14652:24;;;14647:3;14640:37;14634:48;;;14689:111;14770:24;14788:5;14770:24;;;14765:3;14758:37;14752:48;;;14807:213;;14925:2;14914:9;14910:18;14902:26;;14939:71;15007:1;14996:9;14992:17;14983:6;14939:71;;;14896:124;;;;;15027:451;;15209:2;15198:9;15194:18;15186:26;;15223:79;15299:1;15288:9;15284:17;15275:6;15223:79;;;15313:72;15381:2;15370:9;15366:18;15357:6;15313:72;;;15396;15464:2;15453:9;15449:18;15440:6;15396:72;;;15180:298;;;;;;;15485:213;;15603:2;15592:9;15588:18;15580:26;;15617:71;15685:1;15674:9;15670:17;15661:6;15617:71;;;15574:124;;;;;15705:324;;15851:2;15840:9;15836:18;15828:26;;15865:71;15933:1;15922:9;15918:17;15909:6;15865:71;;;15947:72;16015:2;16004:9;16000:18;15991:6;15947:72;;;15822:207;;;;;;16036:435;;16210:2;16199:9;16195:18;16187:26;;16224:71;16292:1;16281:9;16277:17;16268:6;16224:71;;;16306:72;16374:2;16363:9;16359:18;16350:6;16306:72;;;16389;16457:2;16446:9;16442:18;16433:6;16389:72;;;16181:290;;;;;;;16478:687;;16726:3;16715:9;16711:19;16703:27;;16741:71;16809:1;16798:9;16794:17;16785:6;16741:71;;;16823:72;16891:2;16880:9;16876:18;16867:6;16823:72;;;16906;16974:2;16963:9;16959:18;16950:6;16906:72;;;17026:9;17020:4;17016:20;17011:2;17000:9;16996:18;16989:48;17051:104;17150:4;17141:6;17051:104;;;17043:112;;16697:468;;;;;;;;17172:575;;17392:2;17381:9;17377:18;17369:26;;17406:71;17474:1;17463:9;17459:17;17450:6;17406:71;;;17488:72;17556:2;17545:9;17541:18;17532:6;17488:72;;;17608:9;17602:4;17598:20;17593:2;17582:9;17578:18;17571:48;17633:104;17732:4;17723:6;17633:104;;;17625:112;;17363:384;;;;;;;17754:435;;17928:2;17917:9;17913:18;17905:26;;17942:71;18010:1;17999:9;17995:17;17986:6;17942:71;;;18024:72;18092:2;18081:9;18077:18;18068:6;18024:72;;;18107;18175:2;18164:9;18160:18;18151:6;18107:72;;;17899:290;;;;;;;18196:313;;18340:2;18329:9;18325:18;18317:26;;18390:9;18384:4;18380:20;18376:1;18365:9;18361:17;18354:47;18415:84;18494:4;18485:6;18415:84;;;18407:92;;18311:198;;;;;18516:243;;18649:2;18638:9;18634:18;18626:26;;18663:86;18746:1;18735:9;18731:17;18722:6;18663:86;;;18620:139;;;;;18766:259;;18907:2;18896:9;18892:18;18884:26;;18921:94;19012:1;19001:9;18997:17;18988:6;18921:94;;;18878:147;;;;;19032:261;;19174:2;19163:9;19159:18;19151:26;;19188:95;19280:1;19269:9;19265:17;19256:6;19188:95;;;19145:148;;;;;19300:243;;19433:2;19422:9;19418:18;19410:26;;19447:86;19530:1;19519:9;19515:17;19506:6;19447:86;;;19404:139;;;;;19550:261;;19692:2;19681:9;19677:18;19669:26;;19706:95;19798:1;19787:9;19783:17;19774:6;19706:95;;;19663:148;;;;;19818:255;;19957:2;19946:9;19942:18;19934:26;;19971:92;20060:1;20049:9;20045:17;20036:6;19971:92;;;19928:145;;;;;20080:239;;20211:2;20200:9;20196:18;20188:26;;20225:84;20306:1;20295:9;20291:17;20282:6;20225:84;;;20182:137;;;;;20326:407;;20517:2;20506:9;20502:18;20494:26;;20567:9;20561:4;20557:20;20553:1;20542:9;20538:17;20531:47;20592:131;20718:4;20592:131;;;20584:139;;20488:245;;;;20740:407;;20931:2;20920:9;20916:18;20908:26;;20981:9;20975:4;20971:20;20967:1;20956:9;20952:17;20945:47;21006:131;21132:4;21006:131;;;20998:139;;20902:245;;;;21154:407;;21345:2;21334:9;21330:18;21322:26;;21395:9;21389:4;21385:20;21381:1;21370:9;21366:17;21359:47;21420:131;21546:4;21420:131;;;21412:139;;21316:245;;;;21568:407;;21759:2;21748:9;21744:18;21736:26;;21809:9;21803:4;21799:20;21795:1;21784:9;21780:17;21773:47;21834:131;21960:4;21834:131;;;21826:139;;21730:245;;;;21982:407;;22173:2;22162:9;22158:18;22150:26;;22223:9;22217:4;22213:20;22209:1;22198:9;22194:17;22187:47;22248:131;22374:4;22248:131;;;22240:139;;22144:245;;;;22396:377;;22572:2;22561:9;22557:18;22549:26;;22622:9;22616:4;22612:20;22608:1;22597:9;22593:17;22586:47;22647:116;22758:4;22749:6;22647:116;;;22639:124;;22543:230;;;;;22780:346;;22964:3;22953:9;22949:19;22941:27;;22979:137;23113:1;23102:9;23098:17;23089:6;22979:137;;;22935:191;;;;;23133:213;;23251:2;23240:9;23236:18;23228:26;;23265:71;23333:1;23322:9;23318:17;23309:6;23265:71;;;23222:124;;;;;23353:855;;23629:3;23618:9;23614:19;23606:27;;23644:71;23712:1;23701:9;23697:17;23688:6;23644:71;;;23726:72;23794:2;23783:9;23779:18;23770:6;23726:72;;;23809;23877:2;23866:9;23862:18;23853:6;23809:72;;;23892;23960:2;23949:9;23945:18;23936:6;23892:72;;;23975:73;24043:3;24032:9;24028:19;24019:6;23975:73;;;24097:9;24091:4;24087:20;24081:3;24070:9;24066:19;24059:49;24122:76;24193:4;24184:6;24122:76;;;24114:84;;23600:608;;;;;;;;;;24215:256;;24277:2;24271:9;24261:19;;24315:4;24307:6;24303:17;24414:6;24402:10;24399:22;24378:18;24366:10;24363:34;24360:62;24357:2;;;24435:1;24432;24425:12;24357:2;24455:10;24451:2;24444:22;24255:216;;;;;24478:300;;24633:18;24625:6;24622:30;24619:2;;;24665:1;24662;24655:12;24619:2;24700:4;24692:6;24688:17;24680:25;;24763:4;24757;24753:15;24745:23;;24556:222;;;;24785:321;;24928:18;24920:6;24917:30;24914:2;;;24960:1;24957;24950:12;24914:2;25027:4;25023:9;25016:4;25008:6;25004:17;25000:33;24992:41;;25091:4;25085;25081:15;25073:23;;24851:255;;;;25113:147;;25195:3;25187:11;;25233:4;25228:3;25224:14;25216:22;;25181:79;;;;25267:133;;25372:5;25366:12;25356:22;;25337:63;;;;25407:117;;25496:5;25490:12;25480:22;;25461:63;;;;25531:121;;25624:5;25618:12;25608:22;;25589:63;;;;25659:104;;25753:4;25748:3;25744:14;25736:22;;25730:33;;;;25771:178;;25901:6;25896:3;25889:19;25938:4;25933:3;25929:14;25914:29;;25882:67;;;;;25958:162;;26072:6;26067:3;26060:19;26109:4;26104:3;26100:14;26085:29;;26053:67;;;;;26129:170;;26251:6;26246:3;26239:19;26288:4;26283:3;26279:14;26264:29;;26232:67;;;;;26308:160;;26420:6;26415:3;26408:19;26457:4;26452:3;26448:14;26433:29;;26401:67;;;;;26477:163;;26592:6;26587:3;26580:19;26629:4;26624:3;26620:14;26605:29;;26573:67;;;;;26648:91;;26710:24;26728:5;26710:24;;;26699:35;;26693:46;;;;26746:85;;26819:5;26812:13;26805:21;26794:32;;26788:43;;;;26838:72;;26900:5;26889:16;;26883:27;;;;26917:121;;26990:42;26983:5;26979:54;26968:65;;26962:76;;;;27045:72;;27107:5;27096:16;;27090:27;;;;27124:81;;27195:4;27188:5;27184:16;27173:27;;27167:38;;;;27212:129;;27299:37;27330:5;27299:37;;;27286:50;;27280:61;;;;27348:151;;27442:52;27488:5;27442:52;;;27429:65;;27423:76;;;;27506:123;;27600:24;27618:5;27600:24;;;27587:37;;27581:48;;;;27636:167;;27738:60;27792:5;27738:60;;;27725:73;;27719:84;;;;27810:131;;27912:24;27930:5;27912:24;;;27899:37;;27893:48;;;;27948:169;;28051:61;28106:5;28051:61;;;28038:74;;28032:85;;;;28124:132;;28227:24;28245:5;28227:24;;;28214:37;;28208:48;;;;28263:151;;28357:52;28403:5;28357:52;;;28344:65;;28338:76;;;;28421:123;;28515:24;28533:5;28515:24;;;28502:37;;28496:48;;;;28551:169;;28654:61;28709:5;28654:61;;;28641:74;;28635:85;;;;28727:132;;28830:24;28848:5;28830:24;;;28817:37;;28811:48;;;;28866:163;;28966:58;29018:5;28966:58;;;28953:71;;28947:82;;;;29036:129;;29136:24;29154:5;29136:24;;;29123:37;;29117:48;;;;29172:147;;29264:50;29308:5;29264:50;;;29251:63;;29245:74;;;;29326:121;;29418:24;29436:5;29418:24;;;29405:37;;29399:48;;;;29454:121;;29533:37;29564:5;29533:37;;;29520:50;;29514:61;;;;29582:108;;29661:24;29679:5;29661:24;;;29648:37;;29642:48;;;;29698:145;29779:6;29774:3;29769;29756:30;29835:1;29826:6;29821:3;29817:16;29810:27;29749:94;;;;29852:268;29917:1;29924:101;29938:6;29935:1;29932:13;29924:101;;;30014:1;30009:3;30005:11;29999:18;29995:1;29990:3;29986:11;29979:39;29960:2;29957:1;29953:10;29948:15;;29924:101;;;30040:6;30037:1;30034:13;30031:2;;;30105:1;30096:6;30091:3;30087:16;30080:27;30031:2;29901:219;;;;;30128:97;;30216:2;30212:7;30207:2;30200:5;30196:14;30192:28;30182:38;;30176:49;;;;30233:117;30302:24;30320:5;30302:24;;;30295:5;30292:35;30282:2;;30341:1;30338;30331:12;30282:2;30276:74;;30357:111;30423:21;30438:5;30423:21;;;30416:5;30413:32;30403:2;;30459:1;30456;30449:12;30403:2;30397:71;;30475:117;30544:24;30562:5;30544:24;;;30537:5;30534:35;30524:2;;30583:1;30580;30573:12;30524:2;30518:74;;30599:117;30668:24;30686:5;30668:24;;;30661:5;30658:35;30648:2;;30707:1;30704;30697:12;30648:2;30642:74;;30723:113;30790:22;30806:5;30790:22;;;30783:5;30780:33;30770:2;;30827:1;30824;30817:12;30770:2;30764:72;" + }, + "methodIdentifiers": { + "Coordinator()": "f35213fc", + "accountsTree()": "ae2926d4", + "balancesTree()": "b2692d77", + "deposit(uint256,uint256,bytes)": "aa0b7db7", + "depositFor(address,uint256,uint256,bytes)": "1f8eb3e8", + "depositSubtreeHeight()": "2882dd98", + "finaliseDeposits(uint256,((uint256,(uint256,uint256,uint256,uint256)),bytes32[]))": "1450e6ec", + "logger()": "f24ccbfe", + "merkleUtils()": "47b0f08e", + "nameRegistry()": "4eb7221a", + "pendingDeposits(uint256)": "a7932794", + "queueNumber()": "2fa6779a", + "tokenContract()": "55a373d6", + "tokenRegistry()": "9d23c4c7" + } + } + } + }, + "contracts/IncrementalTree.sol": { + "IncrementalTree": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + } + ], + "name": "appendLeaf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getTreeRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "merkleUtils", + "outputs": [ + { + "internalType": "contract MerkleTreeUtils", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nextLeafIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_height", + "type": "uint256" + } + ], + "name": "setMerkleRootAndHeight", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tree", + "outputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 6 + }, + { + "length": 20, + "start": 410 + } + ] + } + }, + "object": "608060405273__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561004857600080fd5b505af415801561005c573d6000803e3d6000fd5b505050506040513d602081101561007257600080fd5b810190808051906020019092919050505060ff16600055600060065534801561009a57600080fd5b50604051610b1f380380610b1f833981810160405260208110156100bd57600080fd5b81019080805190602001909291905050506000546040519080825280602002602001820160405280156100ff5781602001602082028038833980820191505090505b5060036002019080519060200190610118929190610530565b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101dc57600080fd5b505af41580156101f0573d6000803e3d6000fd5b505050506040513d602081101561020657600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561024b57600080fd5b505afa15801561025f573d6000803e3d6000fd5b505050506040513d602081101561027557600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061041a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cb0a3436040518163ffffffff1660e01b815260040160206040518083038186803b15801561033157600080fd5b505afa158015610345573d6000803e3d6000fd5b505050506040513d602081101561035b57600080fd5b8101908080519060200190929190505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5f8e87b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103d457600080fd5b505afa1580156103e8573d6000803e3d6000fd5b505050506040513d60208110156103fe57600080fd5b810190808051906020019092919050505061051860201b60201c565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b060006040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b810190808051906020019092919050505090506000600190505b6000548160ff161015610510578160036002018260ff16815481106104f557fe5b906000526020600020018190555080806001019150506104d4565b5050506105a2565b81600360000181905550806003600101819055505050565b82805482825590600052602060002090810192821561056c579160200282015b8281111561056b578251825591602001919060010190610550565b5b509050610579919061057d565b5090565b61059f91905b8082111561059b576000816000905550600101610583565b5090565b90565b61056e806105b16000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c22b6d91161005b5780635c22b6d91461013457806389c09d381461016c5780639c891b081461018a578063fd54b228146101cc5761007d565b80630be4f4221461008257806347b0f08e146100a05780634eb7221a146100ea575b600080fd5b61008a6101f1565b6040518082815260200191505060405180910390f35b6100a86101f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f261021d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016a6004803603604081101561014a57600080fd5b810190808035906020019092919080359060200190929190505050610243565b005b61017461025b565b6040518082815260200191505060405180910390f35b6101b6600480360360208110156101a057600080fd5b8101908080359060200190929190505050610268565b6040518082815260200191505060405180910390f35b6101d4610504565b604051808381526020018281526020019250505060405180910390f35b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600360000181905550806003600101819055505050565b6000600360000154905090565b6000806006549050600060036001015490508060020a82106102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b600084905060008060008090505b6003600101548160ff1610156104d3576000600287816102ff57fe5b0614156103e357839250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561037f57600080fd5b505afa158015610393573d6000803e3d6000fd5b505050506040513d60208110156103a957600080fd5b810190808051906020019092919050505091508360036002018260ff16815481106103d057fe5b9060005260206000200181905550610407565b60036002018160ff16815481106103f657fe5b906000526020600020015492508391505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb84846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561048257600080fd5b505afa158015610496573d6000803e3d6000fd5b505050506040513d60208110156104ac57600080fd5b81019080805190602001909291905050509350600186901c955080806001019150506102e3565b5082600360000181905550600060065490506001600660008282540192505081905550809650505050505050919050565b6003806000015490806001015490508256fe496e6372656d656e74616c4d65726b6c65547265653a20747265652069732066756c6ca265627a7a723158205eac861e8dcd7d196ae39f8e7955134cb9914246d343f5bdc67b19e4e7fb081964736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0xFF AND PUSH1 0x0 SSTORE PUSH1 0x0 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB1F CODESIZE SUB DUP1 PUSH2 0xB1F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xFF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x3 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x118 SWAP3 SWAP2 SWAP1 PUSH2 0x530 JUMP JUMPDEST POP DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1F0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x41A PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCB0A343 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x345 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE5F8E87B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x518 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9B24B3B0 PUSH1 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x0 SLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x510 JUMPI DUP2 PUSH1 0x3 PUSH1 0x2 ADD DUP3 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x4F5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4D4 JUMP JUMPDEST POP POP POP PUSH2 0x5A2 JUMP JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x56C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x56B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x550 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x579 SWAP2 SWAP1 PUSH2 0x57D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x59F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x59B JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x583 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x56E DUP1 PUSH2 0x5B1 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C22B6D9 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x5C22B6D9 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x89C09D38 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x9C891B08 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0xFD54B228 EQ PUSH2 0x1CC JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xBE4F422 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x47B0F08E EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x1F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH2 0x21D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x243 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x174 PUSH2 0x25B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x268 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D4 PUSH2 0x504 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x2 EXP DUP3 LT PUSH2 0x2D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x3 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP8 DUP2 PUSH2 0x2FF JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x3E3 JUMPI DUP4 SWAP3 POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9B24B3B0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x393 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP2 POP DUP4 PUSH1 0x3 PUSH1 0x2 ADD DUP3 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x3D0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x407 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 ADD DUP2 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x3F6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP3 POP DUP4 SWAP2 POP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP4 POP PUSH1 0x1 DUP7 SWAP1 SHR SWAP6 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2E3 JUMP JUMPDEST POP DUP3 PUSH1 0x3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x6 SLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP INVALID 0x49 PUSH15 0x6372656D656E74616C4D65726B6C65 SLOAD PUSH19 0x65653A20747265652069732066756C6CA26562 PUSH27 0x7A723158205EAC861E8DCD7D196AE39F8E7955134CB9914246D343 CREATE2 0xBD 0xC6 PUSH28 0x19E4E7FB081964736F6C634300050F00320000000000000000000000 ", + "sourceMap": "209:2687:7:-;;;256:12;:22;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;256:24:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;256:24:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;256:24:7;;;;;;;;;;;;;;;;240:40;;;;834:1;803:32;;842:532;8:9:-1;5:2;;;30:1;27;20:12;5:2;842:532:7;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;842:532:7;;;;;;;;;;;;;;;;930:5;;916:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;916:20:7;;;;894:4;:19;;:42;;;;;;;;;;;;:::i;:::-;;970:13;946:12;;:38;;;;;;;;;;;;;;;;;;1029:12;;;;;;;;;;;:31;;;1061:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1061:27:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1061:27:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1061:27:7;;;;;;;;;;;;;;;;1029:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1029:60:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1029:60:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1029:60:7;;;;;;;;;;;;;;;;994:11;;:105;;;;;;;;;;;;;;;;;;1109:114;1145:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1145:25:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1145:25:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1145:25:7;;;;;;;;;;;;;;;;1184:11;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1184:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1184:29:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1184:29:7;;;;;;;;;;;;;;;;1109:22;;;:114;;:::i;:::-;1233:12;1248:11;;;;;;;;;;;:19;;;1268:1;1248:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1248:22:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1248:22:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1248:22:7;;;;;;;;;;;;;;;;1233:37;;1285:7;1295:1;1285:11;;1280:88;1302:5;;1298:1;:9;;;1280:88;;;1353:4;1328;:19;;1348:1;1328:22;;;;;;;;;;;;;;;;;:29;;;;1309:3;;;;;;;1280:88;;;;842:532;;209:2687;;2664:136;2757:5;2745:4;:9;;:17;;;;2786:7;2772:4;:11;;:21;;;;2664:136;;:::o;209:2687::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80635c22b6d91161005b5780635c22b6d91461013457806389c09d381461016c5780639c891b081461018a578063fd54b228146101cc5761007d565b80630be4f4221461008257806347b0f08e146100a05780634eb7221a146100ea575b600080fd5b61008a6101f1565b6040518082815260200191505060405180910390f35b6100a86101f7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f261021d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016a6004803603604081101561014a57600080fd5b810190808035906020019092919080359060200190929190505050610243565b005b61017461025b565b6040518082815260200191505060405180910390f35b6101b6600480360360208110156101a057600080fd5b8101908080359060200190929190505050610268565b6040518082815260200191505060405180910390f35b6101d4610504565b604051808381526020018281526020019250505060405180910390f35b60065481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600360000181905550806003600101819055505050565b6000600360000154905090565b6000806006549050600060036001015490508060020a82106102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806105176023913960400191505060405180910390fd5b600084905060008060008090505b6003600101548160ff1610156104d3576000600287816102ff57fe5b0614156103e357839250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b24b3b0826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561037f57600080fd5b505afa158015610393573d6000803e3d6000fd5b505050506040513d60208110156103a957600080fd5b810190808051906020019092919050505091508360036002018260ff16815481106103d057fe5b9060005260206000200181905550610407565b60036002018160ff16815481106103f657fe5b906000526020600020015492508391505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb84846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561048257600080fd5b505afa158015610496573d6000803e3d6000fd5b505050506040513d60208110156104ac57600080fd5b81019080805190602001909291905050509350600186901c955080806001019150506102e3565b5082600360000181905550600060065490506001600660008282540192505081905550809650505050505050919050565b6003806000015490806001015490508256fe496e6372656d656e74616c4d65726b6c65547265653a20747265652069732066756c6ca265627a7a723158205eac861e8dcd7d196ae39f8e7955134cb9914246d343f5bdc67b19e4e7fb081964736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C22B6D9 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x5C22B6D9 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x89C09D38 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x9C891B08 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0xFD54B228 EQ PUSH2 0x1CC JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0xBE4F422 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x47B0F08E EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0xEA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x1F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF2 PUSH2 0x21D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x243 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x174 PUSH2 0x25B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x268 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D4 PUSH2 0x504 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP2 PUSH1 0x3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x6 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x2 EXP DUP3 LT PUSH2 0x2D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x3 PUSH1 0x1 ADD SLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x4D3 JUMPI PUSH1 0x0 PUSH1 0x2 DUP8 DUP2 PUSH2 0x2FF JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x3E3 JUMPI DUP4 SWAP3 POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9B24B3B0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x393 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP2 POP DUP4 PUSH1 0x3 PUSH1 0x2 ADD DUP3 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x3D0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x407 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x2 ADD DUP2 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x3F6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP3 POP DUP4 SWAP2 POP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP5 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP4 POP PUSH1 0x1 DUP7 SWAP1 SHR SWAP6 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2E3 JUMP JUMPDEST POP DUP3 PUSH1 0x3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x6 SLOAD SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP INVALID 0x49 PUSH15 0x6372656D656E74616C4D65726B6C65 SLOAD PUSH19 0x65653A20747265652069732066756C6CA26562 PUSH27 0x7A723158205EAC861E8DCD7D196AE39F8E7955134CB9914246D343 CREATE2 0xBD 0xC6 PUSH28 0x19E4E7FB081964736F6C634300050F00320000000000000000000000 ", + "sourceMap": "209:2687:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;209:2687:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;803:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;320:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;286:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2664:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2664:136:7;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2806:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1513:973;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1513:973:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;353:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;803:32;;;;:::o;320:26::-;;;;;;;;;;;;;:::o;286:28::-;;;;;;;;;;;;;:::o;2664:136::-;2757:5;2745:4;:9;;:17;;;;2786:7;2772:4;:11;;:21;;;;2664:136;;:::o;2806:88::-;2852:7;2878:4;:9;;;2871:16;;2806:88;:::o;1513:973::-;1564:7;1583:20;1606:13;;1583:36;;1630:13;1654:4;:11;;;1630:36;;1724:5;1720:1;1712:17;1697:12;:32;1676:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1800:24;1827:5;1800:32;;1842:12;1864:13;1892:7;1902:1;1892:11;;1887:463;1909:4;:11;;;1905:1;:15;;;1887:463;;;1965:1;1960;1945:12;:16;;;;;;:21;1941:300;;;1993:16;1986:23;;2035:11;;;;;;;;;;;:19;;;2055:1;2035:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2035:22:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2035:22:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2035:22:7;;;;;;;;;;;;;;;;2027:30;;2100:16;2075:4;:19;;2095:1;2075:22;;;;;;;;;;;;;;;;;:41;;;;1941:300;;;2162:4;:19;;2182:1;2162:22;;;;;;;;;;;;;;;;;;2155:29;;2210:16;2202:24;;1941:300;2273:11;;;;;;;;;;;:21;;;2295:4;2301:5;2273:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2273:34:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2273:34:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2273:34:7;;;;;;;;;;;;;;;;2254:53;;2338:1;2321:18;;;;;1922:3;;;;;;;1887:463;;;;2371:16;2359:4;:9;;:28;;;;2397:9;2420:13;;2416:17;;2460:1;2443:13;;:18;;;;;;;;;;;2478:1;2471:8;;;;;;;;1513:973;;;:::o;353:22::-;;;;;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "appendLeaf(bytes32)": "9c891b08", + "getTreeRoot()": "89c09d38", + "merkleUtils()": "47b0f08e", + "nameRegistry()": "4eb7221a", + "nextLeafIndex()": "0be4f422", + "setMerkleRootAndHeight(bytes32,uint256)": "5c22b6d9", + "tree()": "fd54b228" + } + } + } + }, + "contracts/Logger.sol": { + "Logger": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakeSlashed", + "type": "uint256" + } + ], + "name": "BatchRollback", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "left", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "right", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "DepositLeafMerged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "AccountID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "token", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "accountHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "name": "DepositQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "depositSubTreeRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pathToSubTree", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newBalanceRoot", + "type": "bytes32" + } + ], + "name": "DepositsFinalised", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txroot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "updatedRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NewBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "RegisteredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "RegistrationRequest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "totalBatchesSlashed", + "type": "uint256" + } + ], + "name": "RollbackFinalisation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "committed", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "StakeWithdraw", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "stakeSlashed", + "type": "uint256" + } + ], + "name": "logBatchRollback", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "depositSubTreeRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "pathToSubTree", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "newBalanceRoot", + "type": "bytes32" + } + ], + "name": "logDepositFinalised", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "left", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "right", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "logDepositLeafMerged", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "accountID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "token", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "accountHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "name": "logDepositQueued", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "txroot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "updatedRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "logNewBatch", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "logRegisteredToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "logRegistrationRequest", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "totalBatchesSlashed", + "type": "uint256" + } + ], + "name": "logRollbackFinalisation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "committed", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "logStakeWithdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x85C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x6BCA9940CE8811680DF317574A81533CEF PUSH14 0xE3318F2C8C9AAFCAF8BE78C67364 PUSH20 0x6F6C634300050F00320000000000000000000000 ", + "sourceMap": "27:3040:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:3040:8;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a72315820706bca9940ce8811680df317574a81533cef6de3318f2c8c9aafcaf8be78c67364736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH17 0x6BCA9940CE8811680DF317574A81533CEF PUSH14 0xE3318F2C8C9AAFCAF8BE78C67364 PUSH20 0x6F6C634300050F00320000000000000000000000 ", + "sourceMap": "27:3040:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:3040:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:118;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1722:118:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;2032:377;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2032:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2032:377:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2032:377:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2032:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2032:377:8;;;;;;;;;;;;;;;:::i;:::-;;1509:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1509:152:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1301:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1301:132:8;;;;;;;;;;;;;;;;;:::i;:::-;;901:332;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;901:332:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2788:277;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2788:277:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;258:206;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;258:206:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;549:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;549:180:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2491:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2491:156:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1722:118;1799:34;1819:13;1799:34;;;;;;;;;;;;;;;;;;;;;;1722:118;:::o;2032:377::-;2247:155;2274:9;2297:11;2322:6;2342:5;2361:11;2386:6;2247:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2247:155:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2032:377;;;;;;:::o;1509:152::-;1613:41;1629:9;1640:13;1613:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:152;;:::o;1301:132::-;1385:41;1406:19;1385:41;;;;;;;;;;;;;;;;;;1301:132;:::o;901:332::-;1089:137;1116:8;1138:9;1161;1184:6;1204:12;1089:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;901:332;;;;;:::o;2788:277::-;2944:114;2975:18;3007:13;3034:14;2944:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:277;;;:::o;258:206::-;410:47;419:9;430:6;438:11;451:5;410:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;258:206;;;;:::o;549:180::-;680:42;694:9;705:6;713:8;680:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;549:180;;;:::o;2491:156::-;2601:39;2619:4;2625:5;2632:7;2601:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:156;;;:::o" + }, + "methodIdentifiers": { + "logBatchRollback(uint256,address,bytes32,bytes32,uint256)": "b4ba86b3", + "logDepositFinalised(bytes32,uint256,bytes32)": "b94be668", + "logDepositLeafMerged(bytes32,bytes32,bytes32)": "dbd63fb7", + "logDepositQueued(uint256,address,uint256,uint256,bytes32,bytes)": "56901d5a", + "logNewBatch(address,bytes32,bytes32,uint256)": "cea4592f", + "logRegisteredToken(uint256,address)": "88870639", + "logRegistrationRequest(address)": "4c7637d2", + "logRollbackFinalisation(uint256)": "aeedf0c7", + "logStakeWithdraw(address,uint256,uint256)": "d54404ae" + } + } + } + }, + "contracts/MerkleTreeUtils.sol": { + "MerkleTreeUtils": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_DEPTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZERO_BYTES32", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "computeInclusionProofRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "computeInclusionProofRootWithLeaf", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "defaultHashes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + } + ], + "name": "getLeftSiblingKey", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getMaxTreeDepth", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes[]", + "name": "_dataBlocks", + "type": "bytes[]" + } + ], + "name": "getMerkleRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "_intVal", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getNthBitFromRight", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_left", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_right", + "type": "bytes32" + } + ], + "name": "getParent", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + } + ], + "name": "getRightSiblingKey", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getZeroRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "keecakHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "path", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "name": "pathToIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "updateLeafWithSiblings", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "verify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "verifyLeaf", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 27 + } + ] + } + }, + "object": "60806040526000801b6002553480156200001857600080fd5b5073__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200005e57600080fd5b505af415801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200009991908101906200027c565b60ff16600181905550600154604051908082528060200260200182016040528015620000d45781602001602082028038833980820191505090505b5060009080519060200190620000ec929190620001eb565b50620001006001546200010660201b60201c565b62000359565b60006040516020016200011a9190620002f7565b60405160208183030381529060405280519060200120600080815481106200013e57fe5b90600052602060002001819055506000600190505b81811015620001e757600060018203815481106200016d57fe5b9060005260206000200154600060018303815481106200018957fe5b9060005260206000200154604051602001620001a7929190620002ca565b6040516020818303038152906040528051906020012060008281548110620001cb57fe5b9060005260206000200181905550808060010191505062000153565b5050565b8280548282559060005260206000209081019282156200022a579160200282015b82811115620002295782518255916020019190600101906200020c565b5b5090506200023991906200023d565b5090565b6200026291905b808211156200025e57600081600090555060010162000244565b5090565b90565b60008151905062000276816200033f565b92915050565b6000602082840312156200028f57600080fd5b60006200029f8482850162000265565b91505092915050565b620002b38162000314565b82525050565b620002c4816200032b565b82525050565b6000604082019050620002e16000830185620002a8565b620002f06020830184620002a8565b9392505050565b60006020820190506200030e6000830184620002b9565b92915050565b6000819050919050565b600060ff82169050919050565b600062000338826200031e565b9050919050565b6200034a816200031e565b81146200035657600080fd5b50565b61110280620003696000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SHL PUSH1 0x2 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x99 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0x27C JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP2 SWAP1 SSTORE POP PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xD4 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xEC SWAP3 SWAP2 SWAP1 PUSH3 0x1EB JUMP JUMPDEST POP PUSH3 0x100 PUSH1 0x1 SLOAD PUSH3 0x106 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x359 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x11A SWAP2 SWAP1 PUSH3 0x2F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP1 DUP2 SLOAD DUP2 LT PUSH3 0x13E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 SWAP1 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x1E7 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH3 0x16D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH3 0x189 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1A7 SWAP3 SWAP2 SWAP1 PUSH3 0x2CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1CB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH3 0x153 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x22A JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x229 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x20C JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x239 SWAP2 SWAP1 PUSH3 0x23D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x262 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25E JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x244 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x276 DUP2 PUSH3 0x33F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x29F DUP5 DUP3 DUP6 ADD PUSH3 0x265 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x2B3 DUP2 PUSH3 0x314 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH3 0x2C4 DUP2 PUSH3 0x32B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x2E1 PUSH1 0x0 DUP4 ADD DUP6 PUSH3 0x2A8 JUMP JUMPDEST PUSH3 0x2F0 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x2A8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x30E PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x2B9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x338 DUP3 PUSH3 0x31E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x34A DUP2 PUSH3 0x31E JUMP JUMPDEST DUP2 EQ PUSH3 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1102 DUP1 PUSH3 0x369 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F6485FB GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDB0787CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB0787CB EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDF7C7263 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xE5F8E87B EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xE913E47F EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0xF8B557B7 EQ PUSH2 0x403 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x8F6485FB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x99AE9309 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x9B24B3B0 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x337 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x40FF34EF GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x40FF34EF EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x48419AD8 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5FED7127 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x747E2D1C EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x8530997C EQ PUSH2 0x277 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xCB0A343 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x25AB625E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x30D90A76 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9B JUMP JUMPDEST PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x22C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x25C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x291 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2EC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x31C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x96E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33F PUSH2 0x98E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x36F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x36A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x39A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AC SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH2 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x3E8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x418 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC20 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x44B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x467 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x483 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 PUSH2 0x4BF DUP7 DUP4 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 EXP DUP2 PUSH1 0xFF AND MUL DUP4 ADD SWAP3 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4AB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4F5 DUP6 DUP6 DUP6 PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 PUSH1 0x1 DUP4 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x547 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP7 DUP7 SWAP1 POP DUP2 LT ISZERO PUSH2 0x5F6 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x550 JUMP JUMPDEST POP PUSH1 0x1 DUP7 DUP7 SWAP1 POP EQ ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x610 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP PUSH2 0x777 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x62E JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x642 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST JUMPDEST PUSH1 0x1 DUP4 GT ISZERO PUSH2 0x75C JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP5 DUP2 PUSH2 0x68C JUMPI INVALID JUMPDEST DIV DUP2 LT ISZERO PUSH2 0x6F2 JUMPI PUSH2 0x6CD DUP3 PUSH1 0x2 DUP4 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 PUSH1 0x2 DUP6 MUL ADD DUP2 MLOAD DUP2 LT PUSH2 0x6C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x682 JUMP JUMPDEST POP PUSH1 0x2 DUP4 DUP2 PUSH2 0x6FD JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x70C JUMPI INVALID JUMPDEST MOD EQ DUP1 ISZERO PUSH2 0x71B JUMPI POP PUSH1 0x1 DUP4 EQ ISZERO JUMPDEST ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x72D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST PUSH2 0x66D JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x769 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x78A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7D8 DUP9 DUP6 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x7F7 JUMPI PUSH2 0x7F0 DUP6 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP PUSH2 0x804 JUMP JUMPDEST PUSH2 0x801 DUP3 DUP7 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x7AA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x86D DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x88C JUMPI PUSH2 0x885 DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x899 JUMP JUMPDEST PUSH2 0x896 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x840 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x911 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x927 DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x946 JUMPI PUSH2 0x93F DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x953 JUMP JUMPDEST PUSH2 0x950 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8FA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x97C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SWAP1 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x111111111111111111111111111111111111111111111111111111111111111 PUSH1 0x0 SHL DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SHL DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA1B DUP6 DUP6 DUP6 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA4F PUSH2 0xA4A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAA4 JUMPI DUP2 PUSH2 0xA8A DUP9 DUP3 PUSH2 0xAF8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB07 DUP2 PUSH2 0x1091 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB31 PUSH2 0xB2C DUP3 PUSH2 0x101E JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB58 DUP4 DUP3 DUP5 PUSH2 0x1082 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB70 DUP2 PUSH2 0x10A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0xAAE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP5 DUP3 DUP6 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC05 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xC16 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xC55 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xC66 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8F DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCBF DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE8 DUP8 DUP3 DUP9 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xCF9 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD22 DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD51 DUP7 DUP3 DUP8 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD62 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCD DUP5 DUP3 DUP6 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE11 DUP7 DUP3 DUP8 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE22 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE75 DUP5 DUP3 DUP6 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE9F DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEB0 DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xEC3 DUP2 PUSH2 0x1055 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xED2 DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE4 DUP4 DUP6 PUSH2 0x104A JUMP JUMPDEST SWAP4 POP PUSH2 0xEF1 DUP4 DUP6 DUP5 PUSH2 0x1082 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF06 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xF15 DUP2 PUSH2 0x1075 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF28 DUP3 DUP5 DUP7 PUSH2 0xED8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF49 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF64 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF7F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xF8C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFA8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFC3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xF0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x109A DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP2 EQ PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B1 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP2 EQ PUSH2 0x10BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xAE SAR 0xC6 0xAE 0x5E 0xC7 0xBF 0xAF POP PUSH12 0x88A91D4893DE50138FB2F16B DUP6 NUMBER DUP14 0xB6 0xCC 0x24 0xBB KECCAK256 GAS PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH ", + "sourceMap": "115:10299:9:-;;;327:66;297:96;;;;523:207;8:9:-1;5:2;;;30:1;27;20:12;5:2;523:207:9;566:12;:22;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:24:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;566:24:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;566:24:9;;;;;;;;;554:36;;:9;:36;;;;630:9;;616:24;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;616:24:9;;;;600:13;:40;;;;;;;;;;;;:::i;:::-;;696:27;713:9;;696:16;;;:27;;:::i;:::-;115:10299;;805:335;946:1;935:13;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;935:13:9;;;925:24;;;;;;906:13;920:1;906:16;;;;;;;;;;;;;;;:43;;;;964:9;976:1;964:13;;959:175;983:5;979:1;:9;959:175;;;1066:13;1084:1;1080;:5;1066:20;;;;;;;;;;;;;;;;1088:13;1106:1;1102;:5;1088:20;;;;;;;;;;;;;;;;1055:54;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1055:54:9;;;1028:95;;;;;;1009:13;1023:1;1009:16;;;;;;;;;;;;;;;:114;;;;990:3;;;;;;;959:175;;;;805:335;:::o;115:10299::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;87:6;81:13;72:22;;99:31;124:5;99:31;;;66:69;;;;;142:259;;255:2;243:9;234:7;230:23;226:32;223:2;;;271:1;268;261:12;223:2;306:1;323:62;377:7;368:6;357:9;353:22;323:62;;;313:72;;285:106;217:184;;;;;408:113;491:24;509:5;491:24;;;486:3;479:37;473:48;;;528:138;617:43;654:5;617:43;;;612:3;605:56;599:67;;;673:324;;819:2;808:9;804:18;796:26;;833:71;901:1;890:9;886:17;877:6;833:71;;;915:72;983:2;972:9;968:18;959:6;915:72;;;790:207;;;;;;1004:225;;1128:2;1117:9;1113:18;1105:26;;1142:77;1216:1;1205:9;1201:17;1192:6;1142:77;;;1099:130;;;;;1236:72;;1298:5;1287:16;;1281:27;;;;1315:81;;1386:4;1379:5;1375:16;1364:27;;1358:38;;;;1403:112;;1488:22;1504:5;1488:22;;;1475:35;;1469:46;;;;1522:113;1589:22;1605:5;1589:22;;;1582:5;1579:33;1569:2;;1626:1;1623;1616:12;1569:2;1563:72;;115:10299:9;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106101165760003560e01c80638f6485fb116100a2578063db0787cb11610071578063db0787cb14610355578063df7c726314610385578063e5f8e87b146103b5578063e913e47f146103d3578063f8b557b71461040357610116565b80638f6485fb146102a757806399ae9309146102d75780639b24b3b014610307578063a27154ba1461033757610116565b806340ff34ef116100e957806340ff34ef146101b757806348419ad8146101e75780635fed712714610217578063747e2d1c146102475780638530997c1461027757610116565b8063069321b01461011b5780630cb0a3431461013957806325ab625e1461015757806330d90a7614610187575b600080fd5b610123610433565b6040516101309190610f4f565b60405180910390f35b610141610439565b60405161014e9190610f4f565b60405180910390f35b610171600480360361016c9190810190610e7e565b61049e565b60405161017e9190610f93565b60405180910390f35b6101a1600480360361019c9190810190610c9b565b6104e7565b6040516101ae9190610f34565b60405180910390f35b6101d160048036036101cc9190810190610b76565b610505565b6040516101de9190610f4f565b60405180910390f35b61020160048036036101fc9190810190610e55565b61077d565b60405161020e9190610f4f565b60405180910390f35b610231600480360361022c9190810190610d2e565b61079e565b60405161023e9190610f4f565b60405180910390f35b610261600480360361025c9190810190610d95565b610823565b60405161026e9190610f4f565b60405180910390f35b610291600480360361028c9190810190610d2e565b610834565b60405161029e9190610f4f565b60405180910390f35b6102c160048036036102bc9190810190610be4565b6108b4565b6040516102ce9190610f4f565b60405180910390f35b6102f160048036036102ec9190810190610dd6565b6108e7565b6040516102fe9190610f4f565b60405180910390f35b610321600480360361031c9190810190610e55565b61096e565b60405161032e9190610f4f565b60405180910390f35b61033f61098e565b60405161034c9190610f93565b60405180910390f35b61036f600480360361036a9190810190610e7e565b610994565b60405161037c9190610fae565b60405180910390f35b61039f600480360361039a9190810190610bbb565b6109a5565b6040516103ac9190610f4f565b60405180910390f35b6103bd6109d4565b6040516103ca9190610f93565b60405180910390f35b6103ed60048036036103e89190810190610bbb565b6109de565b6040516103fa9190610f4f565b60405180910390f35b61041d60048036036104189190810190610c20565b610a0d565b60405161042a9190610f34565b60405180910390f35b60025481565b60008060018054038154811061044b57fe5b9060005260206000200154600060018054038154811061046757fe5b9060005260206000200154604051602001610483929190610f6a565b60405160208183030381529060405280519060200120905090565b6000806000905060008090505b838110156104dc5760006104bf8683610994565b90508160020a8160ff1602830192505080806001019150506104ab565b508091505092915050565b6000806104f58585856108e7565b9050858114915050949350505050565b60008083839050905060008090506060600183016040519080825280602002602001820160405280156105475781602001602082028038833980820191505090505b50905060008090505b868690508110156105f65786868281811061056757fe5b905060200281018035600160200383360303811261058457600080fd5b8083019250508135905060208201915067ffffffffffffffff8111156105a957600080fd5b6001810236038213156105bb57600080fd5b6040516105c9929190610f1b565b60405180910390208282815181106105dd57fe5b6020026020010181815250508080600101915050610550565b506001868690501415610622578060008151811061061057fe5b60200260200101519350505050610777565b60016002848161062e57fe5b06141561066c576000828154811061064257fe5b906000526020600020015481848151811061065957fe5b6020026020010181815250506001830192505b5b600183111561075c5760018201915060008090505b6002848161068c57fe5b048110156106f2576106cd8260028302815181106106a657fe5b60200260200101518360016002850201815181106106c057fe5b60200260200101516108b4565b8282815181106106d957fe5b6020026020010181815250508080600101915050610682565b50600283816106fd57fe5b04925060016002848161070c57fe5b0614801561071b575060018314155b15610757576000828154811061072d57fe5b906000526020600020015481848151811061074457fe5b6020026020010181815250506001830192505b61066d565b8060008151811061076957fe5b602002602001015193505050505b92915050565b6000818154811061078a57fe5b906000526020600020016000915090505481565b60008084905060008090505b8351811015610817576000808583815181106107c257fe5b6020026020010151905060006107d88885610994565b905060008160ff1614156107f7576107f085836108b4565b9250610804565b61080182866108b4565b92505b82945050505080806001019150506107aa565b50809150509392505050565b600081805190602001209050919050565b60008084905060008090505b83518110156108a857600084828151811061085757fe5b60200260200101519050600061086d8784610994565b905060008160ff16141561088c5761088584836108b4565b9350610899565b61089682856108b4565b93505b50508080600101915050610840565b50809150509392505050565b600082826040516020016108c9929190610f6a565b60405160208183030381529060405280519060200120905092915050565b6000808480519060200120905060008090505b835181101561096257600084828151811061091157fe5b6020026020010151905060006109278784610994565b905060008160ff1614156109465761093f84836108b4565b9350610953565b61095082856108b4565b93505b505080806001019150506108fa565b50809150509392505050565b600080828154811061097c57fe5b90600052602060002001549050919050565b60015481565b600060018284901c16905092915050565b60007f011111111111111111111111111111111111111111111111111111111111111160001b82169050919050565b6000600154905090565b60007f100000000000000000000000000000000000000000000000000000000000000060001b82179050919050565b600080610a1b858585610834565b9050858114915050949350505050565b600082601f830112610a3c57600080fd5b8135610a4f610a4a82610ff6565b610fc9565b91508181835260208401935060208101905083856020840282011115610a7457600080fd5b60005b83811015610aa45781610a8a8882610af8565b845260208401935060208301925050600181019050610a77565b5050505092915050565b60008083601f840112610ac057600080fd5b8235905067ffffffffffffffff811115610ad957600080fd5b602083019150836020820283011115610af157600080fd5b9250929050565b600081359050610b0781611091565b92915050565b600082601f830112610b1e57600080fd5b8135610b31610b2c8261101e565b610fc9565b91508082526020830160208301858383011115610b4d57600080fd5b610b58838284611082565b50505092915050565b600081359050610b70816110a8565b92915050565b60008060208385031215610b8957600080fd5b600083013567ffffffffffffffff811115610ba357600080fd5b610baf85828601610aae565b92509250509250929050565b600060208284031215610bcd57600080fd5b6000610bdb84828501610af8565b91505092915050565b60008060408385031215610bf757600080fd5b6000610c0585828601610af8565b9250506020610c1685828601610af8565b9150509250929050565b60008060008060808587031215610c3657600080fd5b6000610c4487828801610af8565b9450506020610c5587828801610af8565b9350506040610c6687828801610b61565b925050606085013567ffffffffffffffff811115610c8357600080fd5b610c8f87828801610a2b565b91505092959194509250565b60008060008060808587031215610cb157600080fd5b6000610cbf87828801610af8565b945050602085013567ffffffffffffffff811115610cdc57600080fd5b610ce887828801610b0d565b9350506040610cf987828801610b61565b925050606085013567ffffffffffffffff811115610d1657600080fd5b610d2287828801610a2b565b91505092959194509250565b600080600060608486031215610d4357600080fd5b6000610d5186828701610af8565b9350506020610d6286828701610b61565b925050604084013567ffffffffffffffff811115610d7f57600080fd5b610d8b86828701610a2b565b9150509250925092565b600060208284031215610da757600080fd5b600082013567ffffffffffffffff811115610dc157600080fd5b610dcd84828501610b0d565b91505092915050565b600080600060608486031215610deb57600080fd5b600084013567ffffffffffffffff811115610e0557600080fd5b610e1186828701610b0d565b9350506020610e2286828701610b61565b925050604084013567ffffffffffffffff811115610e3f57600080fd5b610e4b86828701610a2b565b9150509250925092565b600060208284031215610e6757600080fd5b6000610e7584828501610b61565b91505092915050565b60008060408385031215610e9157600080fd5b6000610e9f85828601610b61565b9250506020610eb085828601610b61565b9150509250929050565b610ec381611055565b82525050565b610ed281611061565b82525050565b6000610ee4838561104a565b9350610ef1838584611082565b82840190509392505050565b610f068161106b565b82525050565b610f1581611075565b82525050565b6000610f28828486610ed8565b91508190509392505050565b6000602082019050610f496000830184610eba565b92915050565b6000602082019050610f646000830184610ec9565b92915050565b6000604082019050610f7f6000830185610ec9565b610f8c6020830184610ec9565b9392505050565b6000602082019050610fa86000830184610efd565b92915050565b6000602082019050610fc36000830184610f0c565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610fec57600080fd5b8060405250919050565b600067ffffffffffffffff82111561100d57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561103557600080fd5b601f19601f8301169050602081019050919050565b600081905092915050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b61109a81611061565b81146110a557600080fd5b50565b6110b18161106b565b81146110bc57600080fd5b5056fea365627a7a723158205eae1dc6ae5ec7bfaf506b88a91d4893de50138fb2f16b85438db6cc24bb205a6c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x116 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8F6485FB GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xDB0787CB GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDB0787CB EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0xDF7C7263 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xE5F8E87B EQ PUSH2 0x3B5 JUMPI DUP1 PUSH4 0xE913E47F EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0xF8B557B7 EQ PUSH2 0x403 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x8F6485FB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x99AE9309 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x9B24B3B0 EQ PUSH2 0x307 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x337 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x40FF34EF GT PUSH2 0xE9 JUMPI DUP1 PUSH4 0x40FF34EF EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x48419AD8 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x5FED7127 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x747E2D1C EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0x8530997C EQ PUSH2 0x277 JUMPI PUSH2 0x116 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xCB0A343 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x25AB625E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x30D90A76 EQ PUSH2 0x187 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x123 PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x439 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x49E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC9B JUMP JUMPDEST PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x231 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x22C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x261 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x25C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD95 JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x291 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xD2E JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x29E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2BC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBE4 JUMP JUMPDEST PUSH2 0x8B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2EC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xDD6 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2FE SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x31C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x96E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32E SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33F PUSH2 0x98E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x36F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x36A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xE7E JUMP JUMPDEST PUSH2 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37C SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x39A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AC SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH2 0x9D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x3E8 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xBBB JUMP JUMPDEST PUSH2 0x9DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x418 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xC20 JUMP JUMPDEST PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0xF34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x44B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SUB DUP2 SLOAD DUP2 LT PUSH2 0x467 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x483 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 PUSH2 0x4BF DUP7 DUP4 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x2 EXP DUP2 PUSH1 0xFF AND MUL DUP4 ADD SWAP3 POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4AB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4F5 DUP6 DUP6 DUP6 PUSH2 0x8E7 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP4 SWAP1 POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x60 PUSH1 0x1 DUP4 ADD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x547 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP7 DUP7 SWAP1 POP DUP2 LT ISZERO PUSH2 0x5F6 JUMPI DUP7 DUP7 DUP3 DUP2 DUP2 LT PUSH2 0x567 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x584 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 ADD SWAP3 POP POP DUP2 CALLDATALOAD SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x5BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x550 JUMP JUMPDEST POP PUSH1 0x1 DUP7 DUP7 SWAP1 POP EQ ISZERO PUSH2 0x622 JUMPI DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x610 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP PUSH2 0x777 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x62E JUMPI INVALID JUMPDEST MOD EQ ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x642 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x659 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST JUMPDEST PUSH1 0x1 DUP4 GT ISZERO PUSH2 0x75C JUMPI PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x2 DUP5 DUP2 PUSH2 0x68C JUMPI INVALID JUMPDEST DIV DUP2 LT ISZERO PUSH2 0x6F2 JUMPI PUSH2 0x6CD DUP3 PUSH1 0x2 DUP4 MUL DUP2 MLOAD DUP2 LT PUSH2 0x6A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 PUSH1 0x2 DUP6 MUL ADD DUP2 MLOAD DUP2 LT PUSH2 0x6C0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6D9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x682 JUMP JUMPDEST POP PUSH1 0x2 DUP4 DUP2 PUSH2 0x6FD JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH1 0x1 PUSH1 0x2 DUP5 DUP2 PUSH2 0x70C JUMPI INVALID JUMPDEST MOD EQ DUP1 ISZERO PUSH2 0x71B JUMPI POP PUSH1 0x1 DUP4 EQ ISZERO JUMPDEST ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x72D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD DUP2 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x744 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 DUP4 ADD SWAP3 POP JUMPDEST PUSH2 0x66D JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x769 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x78A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x7D8 DUP9 DUP6 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x7F7 JUMPI PUSH2 0x7F0 DUP6 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP PUSH2 0x804 JUMP JUMPDEST PUSH2 0x801 DUP3 DUP7 PUSH2 0x8B4 JUMP JUMPDEST SWAP3 POP JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x7AA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x86D DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x88C JUMPI PUSH2 0x885 DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x899 JUMP JUMPDEST PUSH2 0x896 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x840 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8C9 SWAP3 SWAP2 SWAP1 PUSH2 0xF6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x911 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x927 DUP8 DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0x946 JUMPI PUSH2 0x93F DUP5 DUP4 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP PUSH2 0x953 JUMP JUMPDEST PUSH2 0x950 DUP3 DUP6 PUSH2 0x8B4 JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x8FA JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x97C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP5 SWAP1 SHR AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x111111111111111111111111111111111111111111111111111111111111111 PUSH1 0x0 SHL DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SHL DUP3 OR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA1B DUP6 DUP6 DUP6 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 EQ SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA4F PUSH2 0xA4A DUP3 PUSH2 0xFF6 JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAA4 JUMPI DUP2 PUSH2 0xA8A DUP9 DUP3 PUSH2 0xAF8 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA77 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB07 DUP2 PUSH2 0x1091 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB31 PUSH2 0xB2C DUP3 PUSH2 0x101E JUMP JUMPDEST PUSH2 0xFC9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB58 DUP4 DUP3 DUP5 PUSH2 0x1082 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB70 DUP2 PUSH2 0x10A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBAF DUP6 DUP3 DUP7 ADD PUSH2 0xAAE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBDB DUP5 DUP3 DUP6 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC05 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xC16 DUP6 DUP3 DUP7 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC44 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0xC55 DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xC66 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8F DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCBF DUP8 DUP3 DUP9 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE8 DUP8 DUP3 DUP9 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0xCF9 DUP8 DUP3 DUP9 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD22 DUP8 DUP3 DUP9 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD51 DUP7 DUP3 DUP8 ADD PUSH2 0xAF8 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xD62 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDCD DUP5 DUP3 DUP6 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE11 DUP7 DUP3 DUP8 ADD PUSH2 0xB0D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE22 DUP7 DUP3 DUP8 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE4B DUP7 DUP3 DUP8 ADD PUSH2 0xA2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE75 DUP5 DUP3 DUP6 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE9F DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEB0 DUP6 DUP3 DUP7 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xEC3 DUP2 PUSH2 0x1055 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xED2 DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE4 DUP4 DUP6 PUSH2 0x104A JUMP JUMPDEST SWAP4 POP PUSH2 0xEF1 DUP4 DUP6 DUP5 PUSH2 0x1082 JUMP JUMPDEST DUP3 DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF06 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0xF15 DUP2 PUSH2 0x1075 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF28 DUP3 DUP5 DUP7 PUSH2 0xED8 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF49 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xF64 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xF7F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0xF8C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xEC9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFA8 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xEFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFC3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xF0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xFEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH2 0x109A DUP2 PUSH2 0x1061 JUMP JUMPDEST DUP2 EQ PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x10B1 DUP2 PUSH2 0x106B JUMP JUMPDEST DUP2 EQ PUSH2 0x10BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0x5E 0xAE SAR 0xC6 0xAE 0x5E 0xC7 0xBF 0xAF POP PUSH12 0x88A91D4893DE50138FB2F16B DUP6 NUMBER DUP14 0xB6 0xCC 0x24 0xBB KECCAK256 GAS PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH ", + "sourceMap": "115:10299:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:10299:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:96;;;:::i;:::-;;;;;;;;;;;;;;;;1146:258;;;:::i;:::-;;;;;;;;;;;;;;;;10056:356;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6040:386;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1969:1473;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;231:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7507:671;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1618:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4888:746;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8367:168;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3785:765;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1506:106;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;267:24;;;:::i;:::-;;;;;;;;;;;;;;;;8869:171;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9346:198;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1410:90;;;:::i;:::-;;;;;;;;;;;;;;;;9851:199;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6833:344;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;297:96;;;;:::o;1146:258::-;1190:7;1287:13;1313:1;1301:9;;:13;1287:28;;;;;;;;;;;;;;;;1337:13;1363:1;1351:9;;:13;1337:28;;;;;;;;;;;;;;;;1255:128;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1255:128:9;;;1228:169;;;;;;1209:188;;1146:258;:::o;10056:356::-;10152:7;10175:14;10192:1;10175:18;;10208:9;10220:1;10208:13;;10203:180;10227:6;10223:1;:10;10203:180;;;10254:10;10267:27;10286:4;10292:1;10267:18;:27::i;:::-;10254:40;;10369:1;10366;:4;10358;:13;;;10348:6;:24;10339:33;;10203:180;10235:3;;;;;;;10203:180;;;;10399:6;10392:13;;;10056:356;;;;:::o;6040:386::-;6198:4;6253:22;6278:101;6317:10;6341:5;6360:9;6278:25;:101::i;:::-;6253:126;;6414:5;6396:14;:23;6389:30;;;6040:386;;;;;;:::o;1969:1473::-;2056:7;2079:23;2105:11;;:18;;2079:44;;2133:20;2156:1;2133:24;;2167:22;2224:1;2206:15;:19;2192:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;2192:34:9;;;;2167:59;;2323:9;2335:1;2323:13;;2318:110;2342:11;;:18;;2338:1;:22;2318:110;;;2402:11;;2414:1;2402:14;;;;;;;;;;;;;43:11:-1;30:25;137:1;131:4;127:12;116:8;100:14;96:29;92:48;72:18;68:73;58:2;;155:1;152;145:12;58:2;188:18;178:8;174:33;162:45;;0:210;29:8;16:22;6:32;;69:4;59:8;55:19;43:31;;93:18;85:6;82:30;79:2;;;125:1;122;115:12;79:2;183:4;175:6;171:17;155:14;151:38;141:8;137:53;134:2;;;203:1;200;193:12;134:2;2392:25:9;;;;;;;;;;;;;;;;2381:5;2387:1;2381:8;;;;;;;;;;;;;:36;;;;;2362:3;;;;;;;2318:110;;;;2463:1;2441:11;;:18;;:23;2437:69;;;2487:5;2493:1;2487:8;;;;;;;;;;;;;;2480:15;;;;;;;2437:69;2608:1;2603;2585:15;:19;;;;;;:24;2581:141;;;2650:13;2664:12;2650:27;;;;;;;;;;;;;;;;2625:5;2631:15;2625:22;;;;;;;;;;;;;:52;;;;;2710:1;2691:20;;;;2581:141;2767:573;2792:1;2774:15;:19;2767:573;;;2825:1;2809:17;;;;2901:9;2913:1;2901:13;;2896:135;2938:1;2920:15;:19;;;;;;2916:1;:23;2896:135;;;2975:41;2985:5;2995:1;2991;:5;2985:12;;;;;;;;;;;;;;2999:5;3013:1;3009;3005;:5;:9;2999:16;;;;;;;;;;;;;;2975:9;:41::i;:::-;2964:5;2970:1;2964:8;;;;;;;;;;;;;:52;;;;;2941:3;;;;;;;2896:135;;;;3080:1;3062:15;:19;;;;;;3044:37;;3180:1;3175;3157:15;:19;;;;;;:24;:48;;;;;3204:1;3185:15;:20;;3157:48;3153:177;;;3250:13;3264:12;3250:27;;;;;;;;;;;;;;;;3225:5;3231:15;3225:22;;;;;;;;;;;;;:52;;;;;3314:1;3295:20;;;;3153:177;2767:573;;;3427:5;3433:1;3427:8;;;;;;;;;;;;;;3420:15;;;;;1969:1473;;;;;:::o;231:30::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7507:671::-;7648:7;7667:20;7690:5;7667:28;;7710:9;7722:1;7710:13;;7705:438;7729:9;:16;7725:1;:20;7705:438;;;7766:14;7794:15;7812:9;7822:1;7812:12;;;;;;;;;;;;;;7794:30;;7838:28;7869;7888:5;7895:1;7869:18;:28::i;:::-;7838:59;;7941:1;7915:22;:27;;;7911:187;;;7971:32;7981:12;7995:7;7971:9;:32::i;:::-;7962:41;;7911:187;;;8051:32;8061:7;8070:12;8051:9;:32::i;:::-;8042:41;;7911:187;8126:6;8111:21;;7705:438;;;7747:3;;;;;;;7705:438;;;;8159:12;8152:19;;;7507:671;;;;;:::o;1618:108::-;1678:7;1714:4;1704:15;;;;;;1697:22;;1618:108;;;:::o;4888:746::-;5040:7;5098:20;5121:5;5098:28;;5141:9;5153:1;5141:13;;5136:387;5160:9;:16;5156:1;:20;5136:387;;;5197:15;5215:9;5225:1;5215:12;;;;;;;;;;;;;;5197:30;;5241:28;5272;5291:5;5298:1;5272:18;:28::i;:::-;5241:59;;5344:1;5318:22;:27;;;5314:199;;;5380:32;5390:12;5404:7;5380:9;:32::i;:::-;5365:47;;5314:199;;;5466:32;5476:7;5485:12;5466:9;:32::i;:::-;5451:47;;5314:199;5136:387;;5178:3;;;;;;;5136:387;;;;5615:12;5608:19;;;4888:746;;;;;:::o;8367:168::-;8462:7;8513:5;8520:6;8502:25;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8502:25:9;;;8492:36;;;;;;8485:43;;8367:168;;;;:::o;3785:765::-;3939:7;3997:20;4030:10;4020:21;;;;;;3997:44;;4057:9;4069:1;4057:13;;4052:387;4076:9;:16;4072:1;:20;4052:387;;;4113:15;4131:9;4141:1;4131:12;;;;;;;;;;;;;;4113:30;;4157:28;4188;4207:5;4214:1;4188:18;:28::i;:::-;4157:59;;4260:1;4234:22;:27;;;4230:199;;;4296:32;4306:12;4320:7;4296:9;:32::i;:::-;4281:47;;4230:199;;;4382:32;4392:7;4401:12;4382:9;:32::i;:::-;4367:47;;4230:199;4052:387;;4094:3;;;;;;;4052:387;;;;4531:12;4524:19;;;3785:765;;;;;:::o;1506:106::-;1559:7;1585:13;1599:5;1585:20;;;;;;;;;;;;;;;;1578:27;;1506:106;;;:::o;267:24::-;;;;:::o;8869:171::-;8975:5;9031:1;9021:6;9010:7;:17;;9009:23;8996:37;;8869:171;;;;:::o;9346:198::-;9411:7;9471:66;9449:88;;:7;:88;9430:107;;9346:198;;;:::o;1410:90::-;1458:7;1484:9;;1477:16;;1410:90;:::o;9851:199::-;9917:7;9977:66;9955:88;;:7;:88;9936:107;;9851:199;;;:::o;6833:344::-;6985:4;7001:22;7026:104;7073:5;7092;7111:9;7026:33;:104::i;:::-;7001:129;;7165:5;7147:14;:23;7140:30;;;6833:344;;;;;;:::o;23:707:-1:-;;140:3;133:4;125:6;121:17;117:27;107:2;;158:1;155;148:12;107:2;195:6;182:20;217:80;232:64;289:6;232:64;;;217:80;;;208:89;;314:5;339:6;332:5;325:21;369:4;361:6;357:17;347:27;;391:4;386:3;382:14;375:21;;444:6;491:3;483:4;475:6;471:17;466:3;462:27;459:36;456:2;;;508:1;505;498:12;456:2;533:1;518:206;543:6;540:1;537:13;518:206;;;601:3;623:37;656:3;644:10;623:37;;;618:3;611:50;684:4;679:3;675:14;668:21;;712:4;707:3;703:14;696:21;;575:149;565:1;562;558:9;553:14;;518:206;;;522:14;100:630;;;;;;;;754:359;;;891:3;884:4;876:6;872:17;868:27;858:2;;909:1;906;899:12;858:2;942:6;929:20;919:30;;969:18;961:6;958:30;955:2;;;1001:1;998;991:12;955:2;1035:4;1027:6;1023:17;1011:29;;1086:3;1078:4;1070:6;1066:17;1056:8;1052:32;1049:41;1046:2;;;1103:1;1100;1093:12;1046:2;851:262;;;;;;1121:130;;1201:6;1188:20;1179:29;;1213:33;1240:5;1213:33;;;1173:78;;;;;1259:440;;1360:3;1353:4;1345:6;1341:17;1337:27;1327:2;;1378:1;1375;1368:12;1327:2;1415:6;1402:20;1437:64;1452:48;1493:6;1452:48;;;1437:64;;;1428:73;;1521:6;1514:5;1507:21;1557:4;1549:6;1545:17;1590:4;1583:5;1579:16;1625:3;1616:6;1611:3;1607:16;1604:25;1601:2;;;1642:1;1639;1632:12;1601:2;1652:41;1686:6;1681:3;1676;1652:41;;;1320:379;;;;;;;;1707:130;;1787:6;1774:20;1765:29;;1799:33;1826:5;1799:33;;;1759:78;;;;;1844:411;;;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2069:1;2058:9;2054:17;2041:31;2092:18;2084:6;2081:30;2078:2;;;2124:1;2121;2114:12;2078:2;2152:87;2231:7;2222:6;2211:9;2207:22;2152:87;;;2142:97;;;;2020:225;1952:303;;;;;;2262:241;;2366:2;2354:9;2345:7;2341:23;2337:32;2334:2;;;2382:1;2379;2372:12;2334:2;2417:1;2434:53;2479:7;2470:6;2459:9;2455:22;2434:53;;;2424:63;;2396:97;2328:175;;;;;2510:366;;;2631:2;2619:9;2610:7;2606:23;2602:32;2599:2;;;2647:1;2644;2637:12;2599:2;2682:1;2699:53;2744:7;2735:6;2724:9;2720:22;2699:53;;;2689:63;;2661:97;2789:2;2807:53;2852:7;2843:6;2832:9;2828:22;2807:53;;;2797:63;;2768:98;2593:283;;;;;;2883:753;;;;;3063:3;3051:9;3042:7;3038:23;3034:33;3031:2;;;3080:1;3077;3070:12;3031:2;3115:1;3132:53;3177:7;3168:6;3157:9;3153:22;3132:53;;;3122:63;;3094:97;3222:2;3240:53;3285:7;3276:6;3265:9;3261:22;3240:53;;;3230:63;;3201:98;3330:2;3348:53;3393:7;3384:6;3373:9;3369:22;3348:53;;;3338:63;;3309:98;3466:2;3455:9;3451:18;3438:32;3490:18;3482:6;3479:30;3476:2;;;3522:1;3519;3512:12;3476:2;3542:78;3612:7;3603:6;3592:9;3588:22;3542:78;;;3532:88;;3417:209;3025:611;;;;;;;;3643:857;;;;;3832:3;3820:9;3811:7;3807:23;3803:33;3800:2;;;3849:1;3846;3839:12;3800:2;3884:1;3901:53;3946:7;3937:6;3926:9;3922:22;3901:53;;;3891:63;;3863:97;4019:2;4008:9;4004:18;3991:32;4043:18;4035:6;4032:30;4029:2;;;4075:1;4072;4065:12;4029:2;4095:62;4149:7;4140:6;4129:9;4125:22;4095:62;;;4085:72;;3970:193;4194:2;4212:53;4257:7;4248:6;4237:9;4233:22;4212:53;;;4202:63;;4173:98;4330:2;4319:9;4315:18;4302:32;4354:18;4346:6;4343:30;4340:2;;;4386:1;4383;4376:12;4340:2;4406:78;4476:7;4467:6;4456:9;4452:22;4406:78;;;4396:88;;4281:209;3794:706;;;;;;;;4507:627;;;;4670:2;4658:9;4649:7;4645:23;4641:32;4638:2;;;4686:1;4683;4676:12;4638:2;4721:1;4738:53;4783:7;4774:6;4763:9;4759:22;4738:53;;;4728:63;;4700:97;4828:2;4846:53;4891:7;4882:6;4871:9;4867:22;4846:53;;;4836:63;;4807:98;4964:2;4953:9;4949:18;4936:32;4988:18;4980:6;4977:30;4974:2;;;5020:1;5017;5010:12;4974:2;5040:78;5110:7;5101:6;5090:9;5086:22;5040:78;;;5030:88;;4915:209;4632:502;;;;;;5141:345;;5254:2;5242:9;5233:7;5229:23;5225:32;5222:2;;;5270:1;5267;5260:12;5222:2;5333:1;5322:9;5318:17;5305:31;5356:18;5348:6;5345:30;5342:2;;;5388:1;5385;5378:12;5342:2;5408:62;5462:7;5453:6;5442:9;5438:22;5408:62;;;5398:72;;5284:192;5216:270;;;;;5493:731;;;;5665:2;5653:9;5644:7;5640:23;5636:32;5633:2;;;5681:1;5678;5671:12;5633:2;5744:1;5733:9;5729:17;5716:31;5767:18;5759:6;5756:30;5753:2;;;5799:1;5796;5789:12;5753:2;5819:62;5873:7;5864:6;5853:9;5849:22;5819:62;;;5809:72;;5695:192;5918:2;5936:53;5981:7;5972:6;5961:9;5957:22;5936:53;;;5926:63;;5897:98;6054:2;6043:9;6039:18;6026:32;6078:18;6070:6;6067:30;6064:2;;;6110:1;6107;6100:12;6064:2;6130:78;6200:7;6191:6;6180:9;6176:22;6130:78;;;6120:88;;6005:209;5627:597;;;;;;6231:241;;6335:2;6323:9;6314:7;6310:23;6306:32;6303:2;;;6351:1;6348;6341:12;6303:2;6386:1;6403:53;6448:7;6439:6;6428:9;6424:22;6403:53;;;6393:63;;6365:97;6297:175;;;;;6479:366;;;6600:2;6588:9;6579:7;6575:23;6571:32;6568:2;;;6616:1;6613;6606:12;6568:2;6651:1;6668:53;6713:7;6704:6;6693:9;6689:22;6668:53;;;6658:63;;6630:97;6758:2;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;;;6766:63;;6737:98;6562:283;;;;;;6852:104;6929:21;6944:5;6929:21;;;6924:3;6917:34;6911:45;;;6963:113;7046:24;7064:5;7046:24;;;7041:3;7034:37;7028:48;;;7106:306;;7234:88;7315:6;7310:3;7234:88;;;7227:95;;7334:43;7370:6;7365:3;7358:5;7334:43;;;7399:6;7394:3;7390:16;7383:23;;7220:192;;;;;;7420:113;7503:24;7521:5;7503:24;;;7498:3;7491:37;7485:48;;;7540:107;7619:22;7635:5;7619:22;;;7614:3;7607:35;7601:46;;;7654:274;;7804:99;7899:3;7890:6;7882;7804:99;;;7797:106;;7920:3;7913:10;;7785:143;;;;;;7935:201;;8047:2;8036:9;8032:18;8024:26;;8061:65;8123:1;8112:9;8108:17;8099:6;8061:65;;;8018:118;;;;;8143:213;;8261:2;8250:9;8246:18;8238:26;;8275:71;8343:1;8332:9;8328:17;8319:6;8275:71;;;8232:124;;;;;8363:324;;8509:2;8498:9;8494:18;8486:26;;8523:71;8591:1;8580:9;8576:17;8567:6;8523:71;;;8605:72;8673:2;8662:9;8658:18;8649:6;8605:72;;;8480:207;;;;;;8694:213;;8812:2;8801:9;8797:18;8789:26;;8826:71;8894:1;8883:9;8879:17;8870:6;8826:71;;;8783:124;;;;;8914:205;;9028:2;9017:9;9013:18;9005:26;;9042:67;9106:1;9095:9;9091:17;9082:6;9042:67;;;8999:120;;;;;9126:256;;9188:2;9182:9;9172:19;;9226:4;9218:6;9214:17;9325:6;9313:10;9310:22;9289:18;9277:10;9274:34;9271:62;9268:2;;;9346:1;9343;9336:12;9268:2;9366:10;9362:2;9355:22;9166:216;;;;;9389:304;;9548:18;9540:6;9537:30;9534:2;;;9580:1;9577;9570:12;9534:2;9615:4;9607:6;9603:17;9595:25;;9678:4;9672;9668:15;9660:23;;9471:222;;;;9700:321;;9843:18;9835:6;9832:30;9829:2;;;9875:1;9872;9865:12;9829:2;9942:4;9938:9;9931:4;9923:6;9919:17;9915:33;9907:41;;10006:4;10000;9996:15;9988:23;;9766:255;;;;10029:144;;10164:3;10149:18;;10142:31;;;;;10181:85;;10254:5;10247:13;10240:21;10229:32;;10223:43;;;;10273:72;;10335:5;10324:16;;10318:27;;;;10352:72;;10414:5;10403:16;;10397:27;;;;10431:81;;10502:4;10495:5;10491:16;10480:27;;10474:38;;;;10520:145;10601:6;10596:3;10591;10578:30;10657:1;10648:6;10643:3;10639:16;10632:27;10571:94;;;;10673:117;10742:24;10760:5;10742:24;;;10735:5;10732:35;10722:2;;10781:1;10778;10771:12;10722:2;10716:74;;10797:117;10866:24;10884:5;10866:24;;;10859:5;10856:35;10846:2;;10905:1;10902;10895:12;10846:2;10840:74;" + }, + "methodIdentifiers": { + "MAX_DEPTH()": "a27154ba", + "ZERO_BYTES32()": "069321b0", + "computeInclusionProofRoot(bytes,uint256,bytes32[])": "99ae9309", + "computeInclusionProofRootWithLeaf(bytes32,uint256,bytes32[])": "8530997c", + "defaultHashes(uint256)": "48419ad8", + "getLeftSiblingKey(bytes32)": "df7c7263", + "getMaxTreeDepth()": "e5f8e87b", + "getMerkleRoot(bytes[])": "40ff34ef", + "getNthBitFromRight(uint256,uint256)": "db0787cb", + "getParent(bytes32,bytes32)": "8f6485fb", + "getRightSiblingKey(bytes32)": "e913e47f", + "getRoot(uint256)": "9b24b3b0", + "getZeroRoot()": "0cb0a343", + "keecakHash(bytes)": "747e2d1c", + "pathToIndex(uint256,uint256)": "25ab625e", + "updateLeafWithSiblings(bytes32,uint256,bytes32[])": "5fed7127", + "verify(bytes32,bytes,uint256,bytes32[])": "30d90a76", + "verifyLeaf(bytes32,bytes32,uint256,bytes32[])": "f8b557b7" + } + } + } + }, + "contracts/Migrations.sol": { + "Migrations": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102b7806100606000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820ae4fd416ede2843beb9c646fa6a5b43547428180715aa09b7e7f3d19ab4c3f2c64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2B7 DUP1 PUSH2 0x60 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x900F010 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x445DF0AC EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xFDACD576 EQ PUSH2 0xFD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x12B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x222 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFDACD576 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x27F JUMPI DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP JUMPDEST POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAE 0x4F 0xD4 AND 0xED 0xE2 DUP5 EXTCODESIZE 0xEB SWAP13 PUSH5 0x6FA6A5B435 SELFBALANCE TIMESTAMP DUP2 DUP1 PUSH18 0x5AA09B7E7F3D19AB4C3F2C64736F6C634300 SDIV 0xF STOP ORIGIN ", + "sourceMap": "35:526:10:-;;;133:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;133:56:10;172:10;164:5;;:18;;;;;;;;;;;;;;;;;;35:526;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100955780638da5cb5b146100b3578063fdacd576146100fd575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061012b565b005b61009d6101f7565b6040518082815260200191505060405180910390f35b6100bb6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101296004803603602081101561011357600080fd5b8101908080359060200190929190505050610222565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101f45760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156101da57600080fd5b505af11580156101ee573d6000803e3d6000fd5b50505050505b50565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561027f57806001819055505b5056fea265627a7a72315820ae4fd416ede2843beb9c646fa6a5b43547428180715aa09b7e7f3d19ab4c3f2c64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x900F010 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x445DF0AC EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xFDACD576 EQ PUSH2 0xFD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x12B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0x1F7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x222 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFDACD576 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x27F JUMPI DUP1 PUSH1 0x1 DUP2 SWAP1 SSTORE POP JUMPDEST POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAE 0x4F 0xD4 AND 0xED 0xE2 DUP5 EXTCODESIZE 0xEB SWAP13 PUSH5 0x6FA6A5B435 SELFBALANCE TIMESTAMP DUP2 DUP1 PUSH18 0x5AA09B7E7F3D19AB4C3F2C64736F6C634300 SDIV 0xF STOP ORIGIN ", + "sourceMap": "35:526:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35:526:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;384:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;384:175:10;;;;;;;;;;;;;;;;;;;:::i;:::-;;87:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;61:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;266:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;266:112:10;;;;;;;;;;;;;;;;;:::i;:::-;;384:175;245:5;;;;;;;;;;;231:19;;:10;:19;;;227:26;;;450:19;483:11;450:45;;505:8;:21;;;527:24;;505:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;505:47:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;505:47:10;;;;252:1;227:26;384:175;:::o;87:39::-;;;;:::o;61:20::-;;;;;;;;;;;;;:::o;266:112::-;245:5;;;;;;;;;;;231:19;;:10;:19;;;227:26;;;362:9;335:24;:36;;;;227:26;266:112;:::o" + }, + "methodIdentifiers": { + "last_completed_migration()": "445df0ac", + "owner()": "8da5cb5b", + "setCompleted(uint256)": "fdacd576", + "upgrade(address)": "0900f010" + } + } + } + }, + "contracts/NameRegistry.sol": { + "NameRegistry": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contractAddr", + "type": "address" + } + ], + "name": "RegisteredNewContract", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "getContractDetails", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "registerName", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "updateContractDetails", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5061036c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063185e996914610046578063bae3db78146100b4578063c8b41b8314610102575b600080fd5b6100726004803603602081101561005c57600080fd5b8101908080359060200190929190505050610168565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610100600480360360408110156100ca57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a7565b005b61014e6004803603604081101561011857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ab565b604051808215151515815260200191505060405180910390f35b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5050565b60006101b561030e565b6000808581526020019081526020016000206040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156103025782816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060008086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506001915050610308565b60009150505b92915050565b6040518060200160405280600073ffffffffffffffffffffffffffffffffffffffff168152509056fea265627a7a72315820513709c576970d730b0f1604a72212232728566ad315e5e1e67473dd12be43b664736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x36C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x185E9969 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBAE3DB78 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xC8B41B83 EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x100 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1A7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B5 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x302 JUMPI DUP3 DUP2 PUSH1 0x0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x1 SWAP2 POP POP PUSH2 0x308 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MLOAD CALLDATACOPY MULMOD 0xC5 PUSH23 0x970D730B0F1604A72212232728566AD315E5E1E67473DD SLT 0xBE NUMBER 0xB6 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP ORIGIN ", + "sourceMap": "27:1046:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:1046:11;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063185e996914610046578063bae3db78146100b4578063c8b41b8314610102575b600080fd5b6100726004803603602081101561005c57600080fd5b8101908080359060200190929190505050610168565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610100600480360360408110156100ca57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a7565b005b61014e6004803603604081101561011857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101ab565b604051808215151515815260200191505060405180910390f35b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5050565b60006101b561030e565b6000808581526020019081526020016000206040518060200160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614156103025782816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060008086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506001915050610308565b60009150505b92915050565b6040518060200160405280600073ffffffffffffffffffffffffffffffffffffffff168152509056fea265627a7a72315820513709c576970d730b0f1604a72212232728566ad315e5e1e67473dd12be43b664736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x185E9969 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xBAE3DB78 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xC8B41B83 EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x100 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1A7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B5 PUSH2 0x30E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x302 JUMPI DUP3 DUP2 PUSH1 0x0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x0 DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x1 SWAP2 POP POP PUSH2 0x308 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 MLOAD CALLDATACOPY MULMOD 0xC5 PUSH23 0x970D730B0F1604A72212232728566AD315E5E1E67473DD SLT 0xBE NUMBER 0xB6 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP ORIGIN ", + "sourceMap": "27:1046:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:1046:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;757:130:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;893:178;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;893:178:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;282:469;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;282:469:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;757:130;822:7;849:8;:14;858:4;849:14;;;;;;;;;;;:30;;;;;;;;;;;;841:39;;757:130;;;:::o;893:178::-;;;:::o;282:469::-;350:4;366:27;;:::i;:::-;396:8;:14;405:4;396:14;;;;;;;;;;;366:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;515:1;483:34;;:4;:20;;;:34;;;479:266;;;556:4;533;:20;;:27;;;;;;;;;;;591:4;574:8;:14;583:4;574:14;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;649:4;642:11;;;;;479:266;729:5;722:12;;;282:469;;;;;:::o;27:1046::-;;;;;;;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "getContractDetails(bytes32)": "185e9969", + "registerName(bytes32,address)": "c8b41b83", + "updateContractDetails(bytes32,address)": "bae3db78" + } + } + } + }, + "contracts/POB.sol": { + "POB": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582093e386cecefae87b1e9b7b7e171d1f6bdf40daef6a849c386bdc4afcb8562b2864736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3E DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP4 0xE3 DUP7 0xCE 0xCE STATICCALL 0xE8 PUSH28 0x1E9B7B7E171D1F6BDF40DAEF6A849C386BDC4AFCB8562B2864736F6C PUSH4 0x4300050F STOP ORIGIN ", + "sourceMap": "98:44:12:-;;;117:23;8:9:-1;5:2;;;30:1;27;20:12;5:2;117:23:12;98:44;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600080fdfea265627a7a7231582093e386cecefae87b1e9b7b7e171d1f6bdf40daef6a849c386bdc4afcb8562b2864736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP4 0xE3 DUP7 0xCE 0xCE STATICCALL 0xE8 PUSH28 0x1E9B7B7E171D1F6BDF40DAEF6A849C386BDC4AFCB8562B2864736F6C PUSH4 0x4300050F STOP ORIGIN ", + "sourceMap": "98:44:12:-;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "contracts/Rollup.sol": { + "Rollup": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [], + "name": "SlashAndRollback", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "WithdrawStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accountsTree", + "outputs": [ + { + "internalType": "contract IncrementalTree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "balancesTree", + "outputs": [ + { + "internalType": "contract Tree", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "batches", + "outputs": [ + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "accountRoot", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "stakeCommitted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "finalisesOn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_batch_id", + "type": "uint256" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction[]", + "name": "_txs", + "type": "tuple[]" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof[]", + "name": "_from_proofs", + "type": "tuple[]" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToPubkey", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "internalType": "struct Types.PDALeaf", + "name": "pubkey_leaf", + "type": "tuple" + } + ], + "internalType": "struct Types.PDAInclusionProof", + "name": "_pda", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.PDAMerkleProof[]", + "name": "_pda_proof", + "type": "tuple[]" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof[]", + "name": "_to_proofs", + "type": "tuple[]" + } + ], + "name": "disputeBatch", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "logger", + "outputs": [ + { + "internalType": "contract Logger", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "merkleUtils", + "outputs": [ + { + "internalType": "contract MerkleTreeUtils", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_balanceRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_accountsRoot", + "type": "bytes32" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction", + "name": "_tx", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToPubkey", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "internalType": "struct Types.PDALeaf", + "name": "pubkey_leaf", + "type": "tuple" + } + ], + "internalType": "struct Types.PDAInclusionProof", + "name": "_pda", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.PDAMerkleProof", + "name": "_pda_proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof", + "name": "_from_merkle_proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "pathToAccount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "internalType": "struct Types.AccountInclusionProof", + "name": "accountIP", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "siblings", + "type": "bytes32[]" + } + ], + "internalType": "struct Types.AccountMerkleProof", + "name": "_to_merkle_proof", + "type": "tuple" + } + ], + "name": "processTx", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes[]", + "name": "_txs", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "_updatedRoot", + "type": "bytes32" + } + ], + "name": "submitBatch", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenContract", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenRegistry", + "outputs": [ + { + "internalType": "contract ITokenRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ECVerify.sol": { + "ECVerify": [ + { + "length": 20, + "start": 6467 + } + ] + }, + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 6 + }, + { + "length": 20, + "start": 390 + }, + { + "length": 20, + "start": 758 + }, + { + "length": 20, + "start": 1126 + }, + { + "length": 20, + "start": 1494 + }, + { + "length": 20, + "start": 1862 + }, + { + "length": 20, + "start": 2230 + }, + { + "length": 20, + "start": 4276 + }, + { + "length": 20, + "start": 4465 + }, + { + "length": 20, + "start": 4595 + }, + { + "length": 20, + "start": 5197 + }, + { + "length": 20, + "start": 6023 + }, + { + "length": 20, + "start": 7091 + }, + { + "length": 20, + "start": 7654 + }, + { + "length": 20, + "start": 7833 + }, + { + "length": 20, + "start": 8005 + }, + { + "length": 20, + "start": 9234 + }, + { + "length": 20, + "start": 12104 + }, + { + "length": 20, + "start": 12916 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 6332 + }, + { + "length": 20, + "start": 6631 + }, + { + "length": 20, + "start": 7303 + }, + { + "length": 20, + "start": 8162 + }, + { + "length": 20, + "start": 8211 + }, + { + "length": 20, + "start": 8543 + }, + { + "length": 20, + "start": 8879 + }, + { + "length": 20, + "start": 9393 + }, + { + "length": 20, + "start": 9442 + }, + { + "length": 20, + "start": 9772 + }, + { + "length": 20, + "start": 10062 + }, + { + "length": 20, + "start": 10336 + }, + { + "length": 20, + "start": 10471 + }, + { + "length": 20, + "start": 11252 + } + ] + } + }, + "object": "608060405273__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b1580156200004957600080fd5b505af41580156200005e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000084919081019062000c54565b604051908082528060200260200182016040528015620000b957816020015b6060815260200190600190039081620000a35790505b50600a9080519060200190620000d1929190620009ed565b50348015620000df57600080fd5b5060405162005b7f38038062005b7f833981810160405262000105919081019062000bfc565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c957600080fd5b505af4158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000204919081019062000c28565b6040518263ffffffff1660e01b815260040162000222919062000c91565b60206040518083038186803b1580156200023b57600080fd5b505afa15801562000250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000276919081019062000bfc565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63626835f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033957600080fd5b505af41580156200034e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000374919081019062000c28565b6040518263ffffffff1660e01b815260040162000392919062000c91565b60206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620003e6919081019062000bfc565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a957600080fd5b505af4158015620004be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620004e4919081019062000c28565b6040518263ffffffff1660e01b815260040162000502919062000c91565b60206040518083038186803b1580156200051b57600080fd5b505afa15801562000530573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000556919081019062000bfc565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63ca4a98f26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200061957600080fd5b505af41580156200062e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000654919081019062000c28565b6040518263ffffffff1660e01b815260040162000672919062000c91565b60206040518083038186803b1580156200068b57600080fd5b505afa158015620006a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620006c6919081019062000bfc565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__63f8989c366040518163ffffffff1660e01b815260040160206040518083038186803b1580156200078957600080fd5b505af41580156200079e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620007c4919081019062000c28565b6040518263ffffffff1660e01b8152600401620007e2919062000c91565b60206040518083038186803b158015620007fb57600080fd5b505afa15801562000810573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000836919081019062000bfc565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__638a5b1d7a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008f957600080fd5b505af41580156200090e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000934919081019062000c28565b6040518263ffffffff1660e01b815260040162000952919062000c91565b60206040518083038186803b1580156200096b57600080fd5b505afa15801562000980573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620009a6919081019062000bfc565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000d44565b82805482825590600052602060002090810192821562000a41579160200282015b8281111562000a4057825182908051906020019062000a2f92919062000a54565b509160200191906001019062000a0e565b5b50905062000a50919062000b01565b5090565b82805482825590600052602060002090601f0160209004810192821562000aee5791602002820160005b8382111562000abd57835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000a7e565b801562000aec5782816101000a81549060ff021916905560010160208160000104928301926001030262000abd565b505b50905062000afd919062000b32565b5090565b62000b2f91905b8082111562000b2b576000818162000b21919062000b65565b5060010162000b08565b5090565b90565b62000b6291905b8082111562000b5e57600081816101000a81549060ff02191690555060010162000b39565b5090565b90565b50805460008255601f01602090049060005260206000209081019062000b8c919062000b8f565b50565b62000bb491905b8082111562000bb057600081600090555060010162000b96565b5090565b90565b60008151905062000bc88162000cf6565b92915050565b60008151905062000bdf8162000d10565b92915050565b60008151905062000bf68162000d2a565b92915050565b60006020828403121562000c0f57600080fd5b600062000c1f8482850162000bb7565b91505092915050565b60006020828403121562000c3b57600080fd5b600062000c4b8482850162000bce565b91505092915050565b60006020828403121562000c6757600080fd5b600062000c778482850162000be5565b91505092915050565b62000c8b8162000cc2565b82525050565b600060208201905062000ca8600083018462000c80565b92915050565b600062000cbb8262000ccc565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000d018162000cae565b811462000d0d57600080fd5b50565b62000d1b8162000cc2565b811462000d2757600080fd5b50565b62000d358162000cec565b811462000d4157600080fd5b50565b614e2b8062000d546000396000f3fe6080604052600436106100c25760003560e01c8063ae2926d41161007f578063defd34e311610059578063defd34e314610268578063df07098314610291578063f24ccbfe146102a8578063ff34585d146102d3576100c2565b8063ae2926d4146101cf578063b2692d77146101fa578063b32c4d8d14610225576100c2565b80630e981757146100c75780634643dde4146100e357806347b0f08e146101235780634eb7221a1461014e57806355a373d6146101795780639d23c4c7146101a4575b600080fd5b6100e160048036036100dc919081019061342b565b6102fc565b005b3480156100ef57600080fd5b5061010a600480360361010591908101906134d5565b6108da565b60405161011a9493929190614464565b60405180910390f35b34801561012f57600080fd5b50610138611c34565b6040516101459190614567565b60405180910390f35b34801561015a57600080fd5b50610163611c5a565b6040516101709190614582565b60405180910390f35b34801561018557600080fd5b5061018e611c80565b60405161019b91906144fb565b60405180910390f35b3480156101b057600080fd5b506101b9611ca6565b6040516101c69190614516565b60405180910390f35b3480156101db57600080fd5b506101e4611ccc565b6040516101f19190614531565b60405180910390f35b34801561020657600080fd5b5061020f611cf2565b60405161021c919061459d565b60405180910390f35b34801561023157600080fd5b5061024c60048036036102479190810190613628565b611d18565b60405161025f97969594939291906142e1565b60405180910390f35b34801561027457600080fd5b5061028f600480360361028a919081019061367a565b611d87565b005b34801561029d57600080fd5b506102a66121c0565b005b3480156102b457600080fd5b506102bd6126b1565b6040516102ca919061454c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036036102f59190810190613628565b6126d7565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461035257fe5b60006009541461035e57fe5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63faf5625f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a257600080fd5b505af41580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103da9190810190613651565b341461041b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610412906146da565b60405180910390fd5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b15801561045f57600080fd5b505af4158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104979190810190613651565b83839050505073__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e157600080fd5b505af41580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105199190810190613651565b83839050111561055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906145da565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef85856040518363ffffffff1660e01b81526004016105bd92919061429b565b602060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060f91908101906134ac565b9050610619612a2f565b6040518060e00160405280848152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389c09d386040518163ffffffff1660e01b815260040160206040518083038186803b15801561069257600080fd5b505afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ca91908101906134ac565b81526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200134815260200173__$b941c30c0f5422d8b714f571f17d94a5fd$__635d4cbd0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107739190810190613651565b4301815260200142815250905060078190806001815401808255809150509060018203906000526020600020906007020160009091929091909150600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060155505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cea4592f826040015184866001600780549050036040518563ffffffff1660e01b81526004016108a19493929190614256565b600060405180830381600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050505050505050565b600080600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768a896000015160200151600001518a60000151600001518b602001516040518563ffffffff1660e01b815260040161095994939291906143d3565b60206040518083038186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a99190810190613483565b6109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906146ba565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166325ab625e89600001516000015173__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7557600080fd5b505af4158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aad9190810190613751565b6040518363ffffffff1660e01b8152600401610aca92919061488b565b60206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1a9190810190613651565b90508860000151600001518114610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d9061475a565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63ae97e1bf8a6040518263ffffffff1660e01b8152600401610b9d919061479c565b60206040518083038186803b158015610bb557600080fd5b505af4158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bed91908101906134ac565b73__$11f233442b4eefbe29cf56a2c2d703f84d$__6377d32e9490918b608001516040518363ffffffff1660e01b8152600401610c2b929190614350565b60206040518083038186803b158015610c4357600080fd5b505af4158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b91908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e8a6000015160200151600001516040518263ffffffff1660e01b8152600401610cd491906144a9565b60206040518083038186803b158015610cec57600080fd5b505af4158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d2491908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d719061473a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea8b604001516040518263ffffffff1660e01b8152600401610df1919061481d565b60206040518083038186803b158015610e0957600080fd5b505afa158015610e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4191908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff161415610ef25773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505af4158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed991908101906134ac565b6000806000829250819150945094509450945050611c27565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768c73__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8d600001516040518263ffffffff1660e01b8152600401610f6c91906147be565b60006040518083038186803b158015610f8457600080fd5b505af4158015610f98573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610fc191908101906135be565b8a60000151600001518b602001516040518563ffffffff1660e01b8152600401610fee9493929190614380565b60206040518083038186803b15801561100657600080fd5b505afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061103e9190810190613483565b61107d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611074906146fa565b60405180910390fd5b6000896060015163ffffffff1610156111255773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505af41580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061110c91908101906134ac565b6000806000829250819150945094509450945050611c27565b886060015163ffffffff168760000151602001516040015110156111d85773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561118757600080fd5b505af415801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111bf91908101906134ac565b6000806000829250819150945094509450945050611c27565b886040015187600001516020015160200151146112845773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505af4158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126b91908101906134ac565b6000806000829250819150945094509450945050611c27565b61128c612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__631229626389600001516020015161135a8d6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8e60000151602001516040518263ffffffff1660e01b81526004016112fc91906147be565b60206040518083038186803b15801561131457600080fd5b505af4158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134c9190810190613651565b61293590919063ffffffff16565b6040518363ffffffff1660e01b81526004016113779291906147f4565b60806040518083038186803b15801561138f57600080fd5b505af41580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906135ff565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e856040518263ffffffff1660e01b815260040161144091906147d9565b60006040518083038186803b15801561145857600080fd5b505af415801561146c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061149591908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b81526004016114c893929190614426565b60206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061151891908101906134ac565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768273__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8f602001516040518263ffffffff1660e01b815260040161159491906147be565b60006040518083038186803b1580156115ac57600080fd5b505af41580156115c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506115e991908101906135be565b8b60000151600001518c602001516040518563ffffffff1660e01b81526004016116169493929190614380565b60206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116669190810190613483565b6116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906146fa565b60405180910390fd5b8a6040015188600001516020015160200151146117535773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561170057600080fd5b505af4158015611714573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173891908101906134ac565b60008060008292508191509650965096509650505050611c27565b61175b612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63122962638a60000151602001516118298f6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8f60000151602001516040518263ffffffff1660e01b81526004016117cb91906147be565b60206040518083038186803b1580156117e357600080fd5b505af41580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061181b9190810190613651565b61297f90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118469291906147f4565b60806040518083038186803b15801561185e57600080fd5b505af4158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061189691908101906135ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3b4523473__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b815260040161190d91906147d9565b60006040518083038186803b15801561192557600080fd5b505af4158015611939573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061196291908101906135be565b8b60000151600001516040518363ffffffff1660e01b81526004016119889291906144cb565b600060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b8152600401611a2f91906147d9565b60006040518083038186803b158015611a4757600080fd5b505af4158015611a5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611a8491908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b8152600401611ab793929190614426565b60206040518083038186803b158015611acf57600080fd5b505afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b0791908101906134ac565b91508173__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd856040518263ffffffff1660e01b8152600401611b4191906147d9565b60206040518083038186803b158015611b5957600080fd5b505af4158015611b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b919190810190613651565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd846040518263ffffffff1660e01b8152600401611bc891906147d9565b60206040518083038186803b158015611be057600080fd5b505af4158015611bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c189190810190613651565b60019750975097509750505050505b9650965096509692505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078181548110611d2557fe5b90600052602060002090600702016000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154905087565b600060078681548110611d9657fe5b9060005260206000209060070201600401541415611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de0906145fa565b60405180910390fd5b60078581548110611df657fe5b9060005260206000209060070201600501544310611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e409061469a565b60405180910390fd5b6009548510611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e849061471a565b60405180910390fd5b606060008090505b8551811015611f615773__$a6b8846b3184b62d6aec39d1f36e30dab3$__63dbcbdf9f878381518110611ec457fe5b60200260200101516040518263ffffffff1660e01b8152600401611ee8919061477a565b60006040518083038186803b158015611f0057600080fd5b505af4158015611f14573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611f3d91908101906135be565b828281518110611f4957fe5b60200260200101819052508080600101915050611e95565b506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef836040518263ffffffff1660e01b8152600401611fbf91906142bf565b602060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061201191908101906134ac565b90506007878154811061202057fe5b906000526020600020906007020160030154811415612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9061463a565b60405180910390fd5b600080600080600080905060008090505b8b5181101561214f5761212460078e8154811061209e57fe5b90600052602060002090600702016000015460078f815481106120bd57fe5b9060005260206000209060070201600101548e84815181106120db57fe5b60200260200101518d85815181106120ef57fe5b60200260200101518f868151811061210357fe5b60200260200101518e878151811061211757fe5b60200260200101516108da565b8096508197508298508399505050505082612142576001915061214f565b8080600101915050612085565b508015612171578b6009819055506121656121c0565b505050505050506121b9565b60078c8154811061217e57fe5b90600052602060002090600702016000015485146121b1578b6009819055506121a56121c0565b505050505050506121b9565b505050505050505b5050505050565b6000600954116121cc57fe5b600080905060008090506000809050600060016007805490500390505b60095481106124d45773__$b941c30c0f5422d8b714f571f17d94a5fd$__63106e99216040518163ffffffff1660e01b815260040160206040518083038186803b15801561223657600080fd5b505af415801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061226e9190810190613651565b5a11612279576124d4565b60095481141561228c5760006009819055505b612294612a2f565b600782815481106122a157fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050600360028260800151028161235f57fe5b048501945061237b85826080015161293590919063ffffffff16565b8401935060006007838154811061238e57fe5b906000526020600020906007020160040181905550600782815481106123b057fe5b906000526020600020906007020160008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550508280600101935050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4ba86b38383604001518460000151856060015186608001516040518663ffffffff1660e01b8152600401612493959493929190614838565b600060405180830381600087803b1580156124ad57600080fd5b505af11580156124c1573d6000803e3d6000fd5b50505050508080600190039150506121e9565b503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561251b573d6000803e3d6000fd5b50600073__$b941c30c0f5422d8b714f571f17d94a5fd$__63fccc28136040518163ffffffff1660e01b815260040160206040518083038186803b15801561256257600080fd5b505af4158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061259a9190810190613402565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156125e2573d6000803e3d6000fd5b506126106125fc600160095461293590919063ffffffff16565b60078054905061293590919063ffffffff16565b60078161261d9190612ab3565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aeedf0c7836040518263ffffffff1660e01b8152600401612679919061481d565b600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b5050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126df612a2f565b600782815481106126ec57fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128029061465a565b60405180910390fd5b8060a001514311612851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128489061467a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc82608001519081150290604051600060405180830381858888f1935050505015801561289b573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54404ae338360800151856040518463ffffffff1660e01b81526004016128ff9392919061421f565b600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b505050505050565b600061297783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129d4565b905092915050565b6000808284019050838110156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c19061461a565b60405180910390fd5b8091505092915050565b6000838311158290612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1391906145b8565b60405180910390fd5b5060008385039050809150509392505050565b6040518060e001604052806000801916815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b815481835581811115612ae057600702816007028360005260206000209182019101612adf9190612ae5565b5b505050565b612b5891905b80821115612b545760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550600701612aeb565b5090565b90565b600081519050612b6a81614d47565b92915050565b600081519050612b7f81614d5e565b92915050565b600082601f830112612b9657600080fd5b8135612ba9612ba4826148e1565b6148b4565b91508181835260208401935060208101905083856020840282011115612bce57600080fd5b60005b83811015612bfe5781612be48882612dc3565b845260208401935060208301925050600181019050612bd1565b5050505092915050565b60008083601f840112612c1a57600080fd5b8235905067ffffffffffffffff811115612c3357600080fd5b602083019150836020820283011115612c4b57600080fd5b9250929050565b600082601f830112612c6357600080fd5b8135612c76612c7182614909565b6148b4565b9150818183526020840193506020810190508360005b83811015612cbc5781358601612ca28882612ee1565b845260208401935060208301925050600181019050612c8c565b5050505092915050565b600082601f830112612cd757600080fd5b8135612cea612ce582614931565b6148b4565b9150818183526020840193506020810190508360005b83811015612d305781358601612d16888261305d565b845260208401935060208301925050600181019050612d00565b5050505092915050565b600082601f830112612d4b57600080fd5b8135612d5e612d5982614959565b6148b4565b9150818183526020840193506020810190508360005b83811015612da45781358601612d8a8882613155565b845260208401935060208301925050600181019050612d74565b5050505092915050565b600081519050612dbd81614d75565b92915050565b600081359050612dd281614d8c565b92915050565b600081519050612de781614d8c565b92915050565b600082601f830112612dfe57600080fd5b8135612e11612e0c82614981565b6148b4565b91508082526020830160208301858383011115612e2d57600080fd5b612e38838284614cf4565b50505092915050565b600082601f830112612e5257600080fd5b8151612e65612e60826149ad565b6148b4565b91508082526020830160208301858383011115612e8157600080fd5b612e8c838284614d03565b50505092915050565b600060a08284031215612ea757600080fd5b612eb160406148b4565b90506000612ec184828501613385565b6000830152506020612ed58482850161329d565b60208301525092915050565b600060c08284031215612ef357600080fd5b612efd60406148b4565b90506000612f0d84828501612e95565b60008301525060a082013567ffffffffffffffff811115612f2d57600080fd5b612f3984828501612b85565b60208301525092915050565b600060c08284031215612f5757600080fd5b612f6160406148b4565b90506000612f7184828501612e95565b60008301525060a082013567ffffffffffffffff811115612f9157600080fd5b612f9d84828501612b85565b60208301525092915050565b600060408284031215612fbb57600080fd5b612fc560406148b4565b90506000612fd584828501613385565b600083015250602082013567ffffffffffffffff811115612ff557600080fd5b6130018482850161300d565b60208301525092915050565b60006020828403121561301f57600080fd5b61302960206148b4565b9050600082013567ffffffffffffffff81111561304557600080fd5b61305184828501612ded565b60008301525092915050565b60006040828403121561306f57600080fd5b61307960406148b4565b9050600082013567ffffffffffffffff81111561309557600080fd5b6130a184828501612fa9565b600083015250602082013567ffffffffffffffff8111156130c157600080fd5b6130cd84828501612b85565b60208301525092915050565b6000604082840312156130eb57600080fd5b6130f560406148b4565b9050600082013567ffffffffffffffff81111561311157600080fd5b61311d84828501612fa9565b600083015250602082013567ffffffffffffffff81111561313d57600080fd5b61314984828501612b85565b60208301525092915050565b6000610160828403121561316857600080fd5b61317260a06148b4565b905060006131828482850161329d565b60008301525060806131968482850161329d565b6020830152506101006131ab84828501613385565b6040830152506101206131c0848285016133af565b60608301525061014082013567ffffffffffffffff8111156131e157600080fd5b6131ed84828501612ded565b60808301525092915050565b6000610160828403121561320c57600080fd5b61321660a06148b4565b905060006132268482850161329d565b600083015250608061323a8482850161329d565b60208301525061010061324f84828501613385565b604083015250610120613264848285016133af565b60608301525061014082013567ffffffffffffffff81111561328557600080fd5b61329184828501612ded565b60808301525092915050565b6000608082840312156132af57600080fd5b6132b960806148b4565b905060006132c984828501613385565b60008301525060206132dd84828501613385565b60208301525060406132f184828501613385565b604083015250606061330584828501613385565b60608301525092915050565b60006080828403121561332357600080fd5b61332d60806148b4565b9050600061333d8482850161339a565b60008301525060206133518482850161339a565b60208301525060406133658482850161339a565b60408301525060606133798482850161339a565b60608301525092915050565b60008135905061339481614da3565b92915050565b6000815190506133a981614da3565b92915050565b6000813590506133be81614dba565b92915050565b6000815190506133d381614dd1565b92915050565b6000602082840312156133eb57600080fd5b60006133f984828501612b5b565b91505092915050565b60006020828403121561341457600080fd5b600061342284828501612b70565b91505092915050565b60008060006040848603121561344057600080fd5b600084013567ffffffffffffffff81111561345a57600080fd5b61346686828701612c08565b9350935050602061347986828701612dc3565b9150509250925092565b60006020828403121561349557600080fd5b60006134a384828501612dae565b91505092915050565b6000602082840312156134be57600080fd5b60006134cc84828501612dd8565b91505092915050565b60008060008060008060c087890312156134ee57600080fd5b60006134fc89828a01612dc3565b965050602061350d89828a01612dc3565b955050604087013567ffffffffffffffff81111561352a57600080fd5b61353689828a016131f9565b945050606087013567ffffffffffffffff81111561355357600080fd5b61355f89828a016130d9565b935050608087013567ffffffffffffffff81111561357c57600080fd5b61358889828a01612f45565b92505060a087013567ffffffffffffffff8111156135a557600080fd5b6135b189828a01612f45565b9150509295509295509295565b6000602082840312156135d057600080fd5b600082015167ffffffffffffffff8111156135ea57600080fd5b6135f684828501612e41565b91505092915050565b60006080828403121561361157600080fd5b600061361f84828501613311565b91505092915050565b60006020828403121561363a57600080fd5b600061364884828501613385565b91505092915050565b60006020828403121561366357600080fd5b60006136718482850161339a565b91505092915050565b600080600080600060a0868803121561369257600080fd5b60006136a088828901613385565b955050602086013567ffffffffffffffff8111156136bd57600080fd5b6136c988828901612d3a565b945050604086013567ffffffffffffffff8111156136e657600080fd5b6136f288828901612c52565b935050606086013567ffffffffffffffff81111561370f57600080fd5b61371b88828901612cc6565b925050608086013567ffffffffffffffff81111561373857600080fd5b61374488828901612c52565b9150509295509295909350565b60006020828403121561376357600080fd5b6000613771848285016133c4565b91505092915050565b60006137868383613932565b60208301905092915050565b600061379f84848461395f565b90509392505050565b60006137b483836139c5565b905092915050565b6137c581614bb0565b82525050565b6137d481614b2f565b82525050565b60006137e582614a03565b6137ef8185614a61565b93506137fa836149d9565b8060005b8381101561382b578151613812888261377a565b975061381d83614a3a565b9250506001810190506137fe565b5085935050505092915050565b60006138448385614a72565b935083602084028501613856846149e9565b8060005b8781101561389c5784840389526138718284614ad8565b61387c868284613792565b955061388784614a47565b935060208b019a50505060018101905061385a565b50829750879450505050509392505050565b60006138b982614a0e565b6138c38185614a72565b9350836020820285016138d5856149f3565b8060005b8581101561391157848403895281516138f285826137a8565b94506138fd83614a54565b925060208a019950506001810190506138d9565b50829750879550505050505092915050565b61392c81614b53565b82525050565b61393b81614b5f565b82525050565b61394a81614b5f565b82525050565b61395981614b5f565b82525050565b600061396b8385614a83565b9350613978838584614cf4565b61398183614d36565b840190509392505050565b600061399782614a24565b6139a18185614a94565b93506139b1818560208601614d03565b6139ba81614d36565b840191505092915050565b60006139d082614a19565b6139da8185614a83565b93506139ea818560208601614d03565b6139f381614d36565b840191505092915050565b6000613a0982614a19565b613a138185614a94565b9350613a23818560208601614d03565b613a2c81614d36565b840191505092915050565b6000613a4282614a19565b613a4c8185614aa5565b9350613a5c818560208601614d03565b613a6581614d36565b840191505092915050565b6000613a7b82614a19565b613a858185614ab6565b9350613a95818560208601614d03565b613a9e81614d36565b840191505092915050565b613ab281614bc2565b82525050565b613ac181614be6565b82525050565b613ad081614c0a565b82525050565b613adf81614c2e565b82525050565b613aee81614c52565b82525050565b613afd81614c76565b82525050565b613b0c81614c9a565b82525050565b6000613b1d82614a2f565b613b278185614ac7565b9350613b37818560208601614d03565b613b4081614d36565b840191505092915050565b6000613b58602e83614ac7565b91507f426174636820636f6e7461696e73206d6f7265207472616e736174696f6e732060008301527f7468616e20746865206c696d69740000000000000000000000000000000000006020830152604082019050919050565b6000613bbe602883614ac7565b91507f426174636820646f65736e74206578697374206f7220697320736c617368656460008301527f20616c72656164790000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c24601b83614ac7565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613c64602683614ac7565b91507f496e76616c696420646973707574652c20747820726f6f7420646f65736e277460008301527f206d6174636800000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cca603083614ac7565b91507f596f7520617265206e6f742074686520636f727265637420636f6d6d6974746560008301527f7220666f722074686973206261746368000000000000000000000000000000006020830152604082019050919050565b6000613d30603183614ac7565b91507f54686973206261746368206973206e6f74207965742066696e616c697365642c60008301527f20636865636b206261636b20736f6f6e210000000000000000000000000000006020830152604082019050919050565b6000613d96601783614ac7565b91507f426174636820616c72656164792066696e616c697365640000000000000000006000830152602082019050919050565b6000613dd6601a83614ac7565b91507f546865205044412070726f6f6620697320696e636f72726563740000000000006000830152602082019050919050565b6000613e16602683614ac7565b91507f506c656173652073656e6420333220657468207769746820626174636820617360008301527f207374616b6500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e7c602783614ac7565b91507f4d65726b6c652050726f6f6620666f722066726f6d206c65616620697320696e60008301527f636f7272656374000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ee2603383614ac7565b91507f416c7265616479207375636365737366756c6c792064697370757465642e205260008301527f6f6c6c206261636b20696e2070726f63657373000000000000000000000000006020830152604082019050919050565b6000613f48601683614ac7565b91507f5369676e617475726520697320696e636f7272656374000000000000000000006000830152602082019050919050565b6000613f88603983614ac7565b91507f5075626b6579206e6f742072656c6174656420746f207468652066726f6d206160008301527f63636f756e7420696e20746865207472616e73616374696f6e000000000000006020830152604082019050919050565b600061016083016000830151613ffa600086018261417f565b50602083015161400d608086018261417f565b5060408301516140216101008601826141f2565b506060830151614035610120860182614201565b50608083015184820361014086015261404e8282613a70565b9150508091505092915050565b600061016083016000830151614074600086018261417f565b506020830151614087608086018261417f565b50604083015161409b6101008601826141f2565b5060608301516140af610120860182614201565b5060808301518482036101408601526140c88282613a70565b9150508091505092915050565b6080820160008201516140eb60008501826141f2565b5060208201516140fe60208501826141f2565b50604082015161411160408501826141f2565b50606082015161412460608501826141f2565b50505050565b60808201600082015161414060008501826141f2565b50602082015161415360208501826141f2565b50604082015161416660408501826141f2565b50606082015161417960608501826141f2565b50505050565b60808201600082015161419560008501826141f2565b5060208201516141a860208501826141f2565b5060408201516141bb60408501826141f2565b5060608201516141ce60608501826141f2565b50505050565b6141dd81614b89565b82525050565b6141ec81614b89565b82525050565b6141fb81614b89565b82525050565b61420a81614b93565b82525050565b61421981614ce2565b82525050565b600060608201905061423460008301866137bc565b61424160208301856141d4565b61424e60408301846141d4565b949350505050565b600060808201905061426b60008301876137cb565b6142786020830186613941565b6142856040830185613941565b61429260608301846141d4565b95945050505050565b600060208201905081810360008301526142b6818486613838565b90509392505050565b600060208201905081810360008301526142d981846138ae565b905092915050565b600060e0820190506142f6600083018a613941565b6143036020830189613941565b61431060408301886137cb565b61431d6060830187613941565b61432a60808301866141d4565b61433760a08301856141d4565b61434460c08301846141d4565b98975050505050505050565b60006040820190506143656000830185613950565b81810360208301526143778184613a37565b90509392505050565b60006080820190506143956000830187613941565b81810360208301526143a7818661398c565b90506143b660408301856141d4565b81810360608301526143c881846137da565b905095945050505050565b60006080820190506143e86000830187613941565b81810360208301526143fa81866139fe565b905061440960408301856141d4565b818103606083015261441b81846137da565b905095945050505050565b600060608201905061443b6000830186613941565b61444860208301856141d4565b818103604083015261445a81846137da565b9050949350505050565b60006080820190506144796000830187613941565b61448660208301866141d4565b61449360408301856141d4565b6144a06060830184613923565b95945050505050565b600060208201905081810360008301526144c38184613a37565b905092915050565b600060408201905081810360008301526144e5818561398c565b90506144f460208301846141d4565b9392505050565b60006020820190506145106000830184613aa9565b92915050565b600060208201905061452b6000830184613ab8565b92915050565b60006020820190506145466000830184613ac7565b92915050565b60006020820190506145616000830184613ad6565b92915050565b600060208201905061457c6000830184613ae5565b92915050565b60006020820190506145976000830184613af4565b92915050565b60006020820190506145b26000830184613b03565b92915050565b600060208201905081810360008301526145d28184613b12565b905092915050565b600060208201905081810360008301526145f381613b4b565b9050919050565b6000602082019050818103600083015261461381613bb1565b9050919050565b6000602082019050818103600083015261463381613c17565b9050919050565b6000602082019050818103600083015261465381613c57565b9050919050565b6000602082019050818103600083015261467381613cbd565b9050919050565b6000602082019050818103600083015261469381613d23565b9050919050565b600060208201905081810360008301526146b381613d89565b9050919050565b600060208201905081810360008301526146d381613dc9565b9050919050565b600060208201905081810360008301526146f381613e09565b9050919050565b6000602082019050818103600083015261471381613e6f565b9050919050565b6000602082019050818103600083015261473381613ed5565b9050919050565b6000602082019050818103600083015261475381613f3b565b9050919050565b6000602082019050818103600083015261477381613f7b565b9050919050565b60006020820190508181036000830152614794818461405b565b905092915050565b600060208201905081810360008301526147b68184613fe1565b905092915050565b60006080820190506147d3600083018461412a565b92915050565b60006080820190506147ee60008301846140d5565b92915050565b600060a082019050614809600083018561412a565b61481660808301846141e3565b9392505050565b600060208201905061483260008301846141d4565b92915050565b600060a08201905061484d60008301886141d4565b61485a60208301876137cb565b6148676040830186613941565b6148746060830185613941565b61488160808301846141d4565b9695505050505050565b60006040820190506148a060008301856141d4565b6148ad6020830184614210565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156148d757600080fd5b8060405250919050565b600067ffffffffffffffff8211156148f857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561492057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561494857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561497057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561499857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156149c457600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60008083356001602003843603038112614af157600080fd5b83810192508235915060208301925067ffffffffffffffff821115614b1557600080fd5b600182023603841315614b2757600080fd5b509250929050565b6000614b3a82614b69565b9050919050565b6000614b4c82614b69565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000614bbb82614cbe565b9050919050565b6000614bcd82614bd4565b9050919050565b6000614bdf82614b69565b9050919050565b6000614bf182614bf8565b9050919050565b6000614c0382614b69565b9050919050565b6000614c1582614c1c565b9050919050565b6000614c2782614b69565b9050919050565b6000614c3982614c40565b9050919050565b6000614c4b82614b69565b9050919050565b6000614c5d82614c64565b9050919050565b6000614c6f82614b69565b9050919050565b6000614c8182614c88565b9050919050565b6000614c9382614b69565b9050919050565b6000614ca582614cac565b9050919050565b6000614cb782614b69565b9050919050565b6000614cc982614cd0565b9050919050565b6000614cdb82614b69565b9050919050565b6000614ced82614ba3565b9050919050565b82818337600083830152505050565b60005b83811015614d21578082015181840152602081019050614d06565b83811115614d30576000848401525b50505050565b6000601f19601f8301169050919050565b614d5081614b2f565b8114614d5b57600080fd5b50565b614d6781614b41565b8114614d7257600080fd5b50565b614d7e81614b53565b8114614d8957600080fd5b50565b614d9581614b5f565b8114614da057600080fd5b50565b614dac81614b89565b8114614db757600080fd5b50565b614dc381614b93565b8114614dce57600080fd5b50565b614dda81614ba3565b8114614de557600080fd5b5056fea365627a7a72315820eca607656161544afb07e3e3ac7ed67fe7673212b0e17c7e5117f262b9a1578a6c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH20 0x0 PUSH4 0x4A1EB591 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC54 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0xB9 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0xA3 JUMPI SWAP1 POP JUMPDEST POP PUSH1 0xA SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xD1 SWAP3 SWAP2 SWAP1 PUSH3 0x9ED JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5B7F CODESIZE SUB DUP1 PUSH3 0x5B7F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH3 0x105 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x1DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x204 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x222 SWAP2 SWAP1 PUSH3 0xC91 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x250 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x276 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x626835F5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x34E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x374 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x392 SWAP2 SWAP1 PUSH3 0xC91 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x3E6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x4BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x4E4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x502 SWAP2 SWAP1 PUSH3 0xC91 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x530 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x556 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0xCA4A98F2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x619 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x62E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x654 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x672 SWAP2 SWAP1 PUSH3 0xC91 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x6C6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0xF8989C36 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x789 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x79E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x7C4 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x7E2 SWAP2 SWAP1 PUSH3 0xC91 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x7FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x810 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x836 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x8A5B1D7A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x90E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x934 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xC28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x952 SWAP2 SWAP1 PUSH3 0xC91 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x96B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x980 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH3 0x9A6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH3 0xBFC JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH3 0xD44 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0xA41 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xA40 JUMPI DUP3 MLOAD DUP3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA2F SWAP3 SWAP2 SWAP1 PUSH3 0xA54 JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xA0E JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0xA50 SWAP2 SWAP1 PUSH3 0xB01 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0xAEE JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0xABD JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x1 ADD PUSH1 0x20 DUP2 PUSH1 0x0 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0xA7E JUMP JUMPDEST DUP1 ISZERO PUSH3 0xAEC JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 ADD PUSH1 0x20 DUP2 PUSH1 0x0 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0xABD JUMP JUMPDEST POP JUMPDEST POP SWAP1 POP PUSH3 0xAFD SWAP2 SWAP1 PUSH3 0xB32 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0xB2F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xB2B JUMPI PUSH1 0x0 DUP2 DUP2 PUSH3 0xB21 SWAP2 SWAP1 PUSH3 0xB65 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0xB08 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH3 0xB62 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xB5E JUMPI PUSH1 0x0 DUP2 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0xB39 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB8C SWAP2 SWAP1 PUSH3 0xB8F JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xBB4 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xBB0 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0xB96 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0xBC8 DUP2 PUSH3 0xCF6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0xBDF DUP2 PUSH3 0xD10 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0xBF6 DUP2 PUSH3 0xD2A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xC0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xC1F DUP5 DUP3 DUP6 ADD PUSH3 0xBB7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xC3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xC4B DUP5 DUP3 DUP6 ADD PUSH3 0xBCE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xC77 DUP5 DUP3 DUP6 ADD PUSH3 0xBE5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xC8B DUP2 PUSH3 0xCC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0xCA8 PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0xC80 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCBB DUP3 PUSH3 0xCCC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0xD01 DUP2 PUSH3 0xCAE JUMP JUMPDEST DUP2 EQ PUSH3 0xD0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0xD1B DUP2 PUSH3 0xCC2 JUMP JUMPDEST DUP2 EQ PUSH3 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0xD35 DUP2 PUSH3 0xCEC JUMP JUMPDEST DUP2 EQ PUSH3 0xD41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4E2B DUP1 PUSH3 0xD54 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAE2926D4 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDEFD34E3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDEFD34E3 EQ PUSH2 0x268 JUMPI DUP1 PUSH4 0xDF070983 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xFF34585D EQ PUSH2 0x2D3 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0xAE2926D4 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xB2692D77 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xB32C4D8D EQ PUSH2 0x225 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0xE981757 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x4643DDE4 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x47B0F08E EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x55A373D6 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x9D23C4C7 EQ PUSH2 0x1A4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0xDC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x342B JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x105 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34D5 JUMP JUMPDEST PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4464 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x1C34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x4567 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x163 PUSH2 0x1C5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x170 SWAP2 SWAP1 PUSH2 0x4582 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x1C80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19B SWAP2 SWAP1 PUSH2 0x44FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x1CA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x4516 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E4 PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F1 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20F PUSH2 0x1CF2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x247 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3628 JUMP JUMPDEST PUSH2 0x1D18 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x25F SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x367A JUMP JUMPDEST PUSH2 0x1D87 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A6 PUSH2 0x21C0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x26B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CA SWAP2 SWAP1 PUSH2 0x454C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3628 JUMP JUMPDEST PUSH2 0x26D7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x352 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD EQ PUSH2 0x35E JUMPI INVALID JUMPDEST PUSH20 0x0 PUSH4 0xFAF5625F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x3B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3DA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST CALLVALUE EQ PUSH2 0x41B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x412 SWAP1 PUSH2 0x46DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0x0 PUSH4 0x4A1EB591 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x473 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x497 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST DUP4 DUP4 SWAP1 POP POP POP PUSH20 0x0 PUSH4 0x4A1EB591 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x4F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x519 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST DUP4 DUP4 SWAP1 POP GT ISZERO PUSH2 0x55E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x555 SWAP1 PUSH2 0x45DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40FF34EF DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BD SWAP3 SWAP2 SWAP1 PUSH2 0x429B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x60F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP1 POP PUSH2 0x619 PUSH2 0x2A2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89C09D38 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x6CA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD CALLVALUE DUP2 MSTORE PUSH1 0x20 ADD PUSH20 0x0 PUSH4 0x5D4CBD0D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x773 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST NUMBER ADD DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE POP SWAP1 POP PUSH1 0x7 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE POP POP POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCEA4592F DUP3 PUSH1 0x40 ADD MLOAD DUP5 DUP7 PUSH1 0x1 PUSH1 0x7 DUP1 SLOAD SWAP1 POP SUB PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x30D90A76 DUP11 DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x959 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x985 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x9A9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x9E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP1 PUSH2 0x46BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x25AB625E DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xAAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACA SWAP3 SWAP2 SWAP1 PUSH2 0x488B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB1A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST SWAP1 POP DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 EQ PUSH2 0xB66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB5D SWAP1 PUSH2 0x475A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0x0 PUSH4 0xAE97E1BF DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB9D SWAP2 SWAP1 PUSH2 0x479C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xBC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBED SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77D32E94 SWAP1 SWAP2 DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC2B SWAP3 SWAP2 SWAP1 PUSH2 0x4350 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0x0 PUSH4 0xE8A4C04E DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD4 SWAP2 SWAP1 PUSH2 0x44A9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD24 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD7A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD71 SWAP1 PUSH2 0x473A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9A0BA2EA DUP12 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDF1 SWAP2 SWAP1 PUSH2 0x481D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE41 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xEF2 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xEB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xED9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x30D90A76 DUP13 PUSH20 0x0 PUSH4 0x61EFB43E DUP14 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF6C SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xF98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xFC1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFEE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4380 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1006 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x103E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1074 SWAP1 PUSH2 0x46FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1125 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x10E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x110C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD LT ISZERO PUSH2 0x11D8 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x119B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x11BF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD EQ PUSH2 0x1284 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1247 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x126B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST PUSH2 0x128C PUSH2 0x2A8B JUMP JUMPDEST PUSH20 0x0 PUSH4 0x12296263 DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x135A DUP14 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH20 0x0 PUSH4 0x73568BD DUP15 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1328 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x134C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1377 SWAP3 SWAP2 SWAP1 PUSH2 0x47F4 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x13C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5FED7127 PUSH20 0x0 PUSH4 0x61EFB43E DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1440 SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x146C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1495 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14C8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4426 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1518 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP1 POP PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x30D90A76 DUP3 PUSH20 0x0 PUSH4 0x61EFB43E DUP16 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1594 SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15E9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1616 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4380 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1642 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1666 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x16A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169C SWAP1 PUSH2 0x46FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD EQ PUSH2 0x1753 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1738 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP PUSH2 0x1C27 JUMP JUMPDEST PUSH2 0x175B PUSH2 0x2A8B JUMP JUMPDEST PUSH20 0x0 PUSH4 0x12296263 DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x1829 DUP16 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH20 0x0 PUSH4 0x73568BD DUP16 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17CB SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x17F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x181B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH2 0x297F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1846 SWAP3 SWAP2 SWAP1 PUSH2 0x47F4 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1896 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC3B45234 PUSH20 0x0 PUSH4 0x61EFB43E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x190D SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1939 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1962 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1988 SWAP3 SWAP2 SWAP1 PUSH2 0x44CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5FED7127 PUSH20 0x0 PUSH4 0x61EFB43E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A2F SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1A5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1A84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AB7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4426 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B07 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP2 POP DUP2 PUSH20 0x0 PUSH4 0x73568BD DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B41 SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1B6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B91 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x73568BD DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BC8 SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1BF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C18 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH1 0x1 SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1D25 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 DUP1 PUSH1 0x4 ADD SLOAD SWAP1 DUP1 PUSH1 0x5 ADD SLOAD SWAP1 DUP1 PUSH1 0x6 ADD SLOAD SWAP1 POP DUP8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1D96 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x4 ADD SLOAD EQ ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE0 SWAP1 PUSH2 0x45FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1DF6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x5 ADD SLOAD NUMBER LT PUSH2 0x1E49 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E40 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD DUP6 LT PUSH2 0x1E8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E84 SWAP1 PUSH2 0x471A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1F61 JUMPI PUSH20 0x0 PUSH4 0xDBCBDF9F DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1EC4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE8 SWAP2 SWAP1 PUSH2 0x477A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1F14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1F3D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F49 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1E95 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40FF34EF DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FBF SWAP2 SWAP1 PUSH2 0x42BF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2011 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x2020 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x3 ADD SLOAD DUP2 EQ ISZERO PUSH2 0x2074 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206B SWAP1 PUSH2 0x463A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x214F JUMPI PUSH2 0x2124 PUSH1 0x7 DUP15 DUP2 SLOAD DUP2 LT PUSH2 0x209E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 ADD SLOAD PUSH1 0x7 DUP16 DUP2 SLOAD DUP2 LT PUSH2 0x20BD JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x1 ADD SLOAD DUP15 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x20DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x20EF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2103 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x2117 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8DA JUMP JUMPDEST DUP1 SWAP7 POP DUP2 SWAP8 POP DUP3 SWAP9 POP DUP4 SWAP10 POP POP POP POP POP DUP3 PUSH2 0x2142 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x214F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2085 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x2171 JUMPI DUP12 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH2 0x2165 PUSH2 0x21C0 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x21B9 JUMP JUMPDEST PUSH1 0x7 DUP13 DUP2 SLOAD DUP2 LT PUSH2 0x217E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 ADD SLOAD DUP6 EQ PUSH2 0x21B1 JUMPI DUP12 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH2 0x21A5 PUSH2 0x21C0 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x21B9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD GT PUSH2 0x21CC JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x7 DUP1 SLOAD SWAP1 POP SUB SWAP1 POP JUMPDEST PUSH1 0x9 SLOAD DUP2 LT PUSH2 0x24D4 JUMPI PUSH20 0x0 PUSH4 0x106E9921 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x224A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x226E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST GAS GT PUSH2 0x2279 JUMPI PUSH2 0x24D4 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 EQ ISZERO PUSH2 0x228C JUMPI PUSH1 0x0 PUSH1 0x9 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH2 0x2294 PUSH2 0x2A2F JUMP JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x22A1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x3 PUSH1 0x2 DUP3 PUSH1 0x80 ADD MLOAD MUL DUP2 PUSH2 0x235F JUMPI INVALID JUMPDEST DIV DUP6 ADD SWAP5 POP PUSH2 0x237B DUP6 DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x238E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x4 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x23B0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x6 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP POP DUP3 DUP1 PUSH1 0x1 ADD SWAP4 POP POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4BA86B3 DUP4 DUP4 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2493 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH2 0x21E9 JUMP JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP5 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x251B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 PUSH20 0x0 PUSH4 0xFCCC2813 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x2576 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x259A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3402 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP5 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x25E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x2610 PUSH2 0x25FC PUSH1 0x1 PUSH1 0x9 SLOAD PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 POP PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP2 PUSH2 0x261D SWAP2 SWAP1 PUSH2 0x2AB3 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAEEDF0C7 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2679 SWAP2 SWAP1 PUSH2 0x481D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x26DF PUSH2 0x2A2F JUMP JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x26EC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x40 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x280B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2802 SWAP1 PUSH2 0x465A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xA0 ADD MLOAD NUMBER GT PUSH2 0x2851 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2848 SWAP1 PUSH2 0x467A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 PUSH1 0x80 ADD MLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x289B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD54404AE CALLER DUP4 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x421F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x292D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2977 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x29D4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x29CA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C1 SWAP1 PUSH2 0x461A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0x2A1C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A13 SWAP2 SWAP1 PUSH2 0x45B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x2AE0 JUMPI PUSH1 0x7 MUL DUP2 PUSH1 0x7 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2ADF SWAP2 SWAP1 PUSH2 0x2AE5 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2B58 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2B54 JUMPI PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x6 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x7 ADD PUSH2 0x2AEB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2B6A DUP2 PUSH2 0x4D47 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2B7F DUP2 PUSH2 0x4D5E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2BA9 PUSH2 0x2BA4 DUP3 PUSH2 0x48E1 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2BCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2BFE JUMPI DUP2 PUSH2 0x2BE4 DUP9 DUP3 PUSH2 0x2DC3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2BD1 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2C1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2C4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C76 PUSH2 0x2C71 DUP3 PUSH2 0x4909 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2CA2 DUP9 DUP3 PUSH2 0x2EE1 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2C8C JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CEA PUSH2 0x2CE5 DUP3 PUSH2 0x4931 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D30 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2D16 DUP9 DUP3 PUSH2 0x305D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2D00 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2D5E PUSH2 0x2D59 DUP3 PUSH2 0x4959 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DA4 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2D8A DUP9 DUP3 PUSH2 0x3155 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2D74 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DBD DUP2 PUSH2 0x4D75 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2DD2 DUP2 PUSH2 0x4D8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DE7 DUP2 PUSH2 0x4D8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E11 PUSH2 0x2E0C DUP3 PUSH2 0x4981 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E38 DUP4 DUP3 DUP5 PUSH2 0x4CF4 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2E65 PUSH2 0x2E60 DUP3 PUSH2 0x49AD JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2E81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E8C DUP4 DUP3 DUP5 PUSH2 0x4D03 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EB1 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EC1 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2ED5 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EFD PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F0D DUP5 DUP3 DUP6 ADD PUSH2 0x2E95 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F39 DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F61 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F71 DUP5 DUP3 DUP6 ADD PUSH2 0x2E95 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F9D DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FC5 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2FD5 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2FF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3001 DUP5 DUP3 DUP6 ADD PUSH2 0x300D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x301F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3029 PUSH1 0x20 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3051 DUP5 DUP3 DUP6 ADD PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3079 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3095 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30A1 DUP5 DUP3 DUP6 ADD PUSH2 0x2FA9 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x30C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30CD DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30F5 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x311D DUP5 DUP3 DUP6 ADD PUSH2 0x2FA9 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x313D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3149 DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3172 PUSH1 0xA0 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3182 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x3196 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x31AB DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x31C0 DUP5 DUP3 DUP6 ADD PUSH2 0x33AF JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x31ED DUP5 DUP3 DUP6 ADD PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3216 PUSH1 0xA0 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3226 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x323A DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x324F DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x3264 DUP5 DUP3 DUP6 ADD PUSH2 0x33AF JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3291 DUP5 DUP3 DUP6 ADD PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32B9 PUSH1 0x80 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x32C9 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x32DD DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x32F1 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x3305 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332D PUSH1 0x80 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x333D DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x3351 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x3365 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x3379 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3394 DUP2 PUSH2 0x4DA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x33A9 DUP2 PUSH2 0x4DA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x33BE DUP2 PUSH2 0x4DBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x33D3 DUP2 PUSH2 0x4DD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x33EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x33F9 DUP5 DUP3 DUP6 ADD PUSH2 0x2B5B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3422 DUP5 DUP3 DUP6 ADD PUSH2 0x2B70 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x345A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3466 DUP7 DUP3 DUP8 ADD PUSH2 0x2C08 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x20 PUSH2 0x3479 DUP7 DUP3 DUP8 ADD PUSH2 0x2DC3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34A3 DUP5 DUP3 DUP6 ADD PUSH2 0x2DAE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x34BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34CC DUP5 DUP3 DUP6 ADD PUSH2 0x2DD8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x34EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34FC DUP10 DUP3 DUP11 ADD PUSH2 0x2DC3 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x350D DUP10 DUP3 DUP11 ADD PUSH2 0x2DC3 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3536 DUP10 DUP3 DUP11 ADD PUSH2 0x31F9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x355F DUP10 DUP3 DUP11 ADD PUSH2 0x30D9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x357C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3588 DUP10 DUP3 DUP11 ADD PUSH2 0x2F45 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35B1 DUP10 DUP3 DUP11 ADD PUSH2 0x2F45 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35F6 DUP5 DUP3 DUP6 ADD PUSH2 0x2E41 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x361F DUP5 DUP3 DUP6 ADD PUSH2 0x3311 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x363A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3648 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3663 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3671 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x36A0 DUP9 DUP3 DUP10 ADD PUSH2 0x3385 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36C9 DUP9 DUP3 DUP10 ADD PUSH2 0x2D3A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36F2 DUP9 DUP3 DUP10 ADD PUSH2 0x2C52 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x370F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x371B DUP9 DUP3 DUP10 ADD PUSH2 0x2CC6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3744 DUP9 DUP3 DUP10 ADD PUSH2 0x2C52 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3771 DUP5 DUP3 DUP6 ADD PUSH2 0x33C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3786 DUP4 DUP4 PUSH2 0x3932 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379F DUP5 DUP5 DUP5 PUSH2 0x395F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B4 DUP4 DUP4 PUSH2 0x39C5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x37C5 DUP2 PUSH2 0x4BB0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x37D4 DUP2 PUSH2 0x4B2F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37E5 DUP3 PUSH2 0x4A03 JUMP JUMPDEST PUSH2 0x37EF DUP2 DUP6 PUSH2 0x4A61 JUMP JUMPDEST SWAP4 POP PUSH2 0x37FA DUP4 PUSH2 0x49D9 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x382B JUMPI DUP2 MLOAD PUSH2 0x3812 DUP9 DUP3 PUSH2 0x377A JUMP JUMPDEST SWAP8 POP PUSH2 0x381D DUP4 PUSH2 0x4A3A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x37FE JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3844 DUP4 DUP6 PUSH2 0x4A72 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP5 MUL DUP6 ADD PUSH2 0x3856 DUP5 PUSH2 0x49E9 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x389C JUMPI DUP5 DUP5 SUB DUP10 MSTORE PUSH2 0x3871 DUP3 DUP5 PUSH2 0x4AD8 JUMP JUMPDEST PUSH2 0x387C DUP7 DUP3 DUP5 PUSH2 0x3792 JUMP JUMPDEST SWAP6 POP PUSH2 0x3887 DUP5 PUSH2 0x4A47 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP12 ADD SWAP11 POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x385A JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP5 POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B9 DUP3 PUSH2 0x4A0E JUMP JUMPDEST PUSH2 0x38C3 DUP2 DUP6 PUSH2 0x4A72 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x38D5 DUP6 PUSH2 0x49F3 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x3911 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x38F2 DUP6 DUP3 PUSH2 0x37A8 JUMP JUMPDEST SWAP5 POP PUSH2 0x38FD DUP4 PUSH2 0x4A54 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x38D9 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x392C DUP2 PUSH2 0x4B53 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x393B DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x394A DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3959 DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x396B DUP4 DUP6 PUSH2 0x4A83 JUMP JUMPDEST SWAP4 POP PUSH2 0x3978 DUP4 DUP6 DUP5 PUSH2 0x4CF4 JUMP JUMPDEST PUSH2 0x3981 DUP4 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3997 DUP3 PUSH2 0x4A24 JUMP JUMPDEST PUSH2 0x39A1 DUP2 DUP6 PUSH2 0x4A94 JUMP JUMPDEST SWAP4 POP PUSH2 0x39B1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x39BA DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39D0 DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x39DA DUP2 DUP6 PUSH2 0x4A83 JUMP JUMPDEST SWAP4 POP PUSH2 0x39EA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x39F3 DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A09 DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x3A13 DUP2 DUP6 PUSH2 0x4A94 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A23 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3A2C DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A42 DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x3A4C DUP2 DUP6 PUSH2 0x4AA5 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A5C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3A65 DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A7B DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x3A85 DUP2 DUP6 PUSH2 0x4AB6 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A95 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3A9E DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3AB2 DUP2 PUSH2 0x4BC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AC1 DUP2 PUSH2 0x4BE6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AD0 DUP2 PUSH2 0x4C0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3ADF DUP2 PUSH2 0x4C2E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AEE DUP2 PUSH2 0x4C52 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AFD DUP2 PUSH2 0x4C76 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3B0C DUP2 PUSH2 0x4C9A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1D DUP3 PUSH2 0x4A2F JUMP JUMPDEST PUSH2 0x3B27 DUP2 DUP6 PUSH2 0x4AC7 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B37 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3B40 DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B58 PUSH1 0x2E DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x426174636820636F6E7461696E73206D6F7265207472616E736174696F6E7320 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7468616E20746865206C696D6974000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BBE PUSH1 0x28 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x426174636820646F65736E74206578697374206F7220697320736C6173686564 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x20616C7265616479000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C24 PUSH1 0x1B DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C64 PUSH1 0x26 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x496E76616C696420646973707574652C20747820726F6F7420646F65736E2774 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x206D617463680000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CCA PUSH1 0x30 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x596F7520617265206E6F742074686520636F727265637420636F6D6D69747465 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7220666F72207468697320626174636800000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D30 PUSH1 0x31 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x54686973206261746368206973206E6F74207965742066696E616C697365642C PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x20636865636B206261636B20736F6F6E21000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D96 PUSH1 0x17 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x426174636820616C72656164792066696E616C69736564000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD6 PUSH1 0x1A DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x546865205044412070726F6F6620697320696E636F7272656374000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E16 PUSH1 0x26 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x506C656173652073656E64203332206574682077697468206261746368206173 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x207374616B650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E7C PUSH1 0x27 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D65726B6C652050726F6F6620666F722066726F6D206C65616620697320696E PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x636F727265637400000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EE2 PUSH1 0x33 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x416C7265616479207375636365737366756C6C792064697370757465642E2052 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6F6C6C206261636B20696E2070726F6365737300000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F48 PUSH1 0x16 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x5369676E617475726520697320696E636F727265637400000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F88 PUSH1 0x39 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x5075626B6579206E6F742072656C6174656420746F207468652066726F6D2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x63636F756E7420696E20746865207472616E73616374696F6E00000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x3FFA PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x400D PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4021 PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4035 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x4201 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x404E DUP3 DUP3 PUSH2 0x3A70 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x4074 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4087 PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x409B PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x40AF PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x4201 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x40C8 DUP3 DUP3 PUSH2 0x3A70 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x40EB PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x40FE PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4111 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4124 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x4140 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4153 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4166 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4179 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x4195 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x41A8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x41BB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x41CE PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x41DD DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x41EC DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x41FB DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x420A DUP2 PUSH2 0x4B93 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4219 DUP2 PUSH2 0x4CE2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4234 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x37BC JUMP JUMPDEST PUSH2 0x4241 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x424E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x426B PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x4278 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4285 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4292 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x42B6 DUP2 DUP5 DUP7 PUSH2 0x3838 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x42D9 DUP2 DUP5 PUSH2 0x38AE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x42F6 PUSH1 0x0 DUP4 ADD DUP11 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4303 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4310 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x431D PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x432A PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x4337 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x4344 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4365 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3950 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4377 DUP2 DUP5 PUSH2 0x3A37 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4395 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x43A7 DUP2 DUP7 PUSH2 0x398C JUMP JUMPDEST SWAP1 POP PUSH2 0x43B6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x43C8 DUP2 DUP5 PUSH2 0x37DA JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x43E8 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x43FA DUP2 DUP7 PUSH2 0x39FE JUMP JUMPDEST SWAP1 POP PUSH2 0x4409 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x441B DUP2 DUP5 PUSH2 0x37DA JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x443B PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4448 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x445A DUP2 DUP5 PUSH2 0x37DA JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4479 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4486 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x4493 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x44A0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3923 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x44C3 DUP2 DUP5 PUSH2 0x3A37 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x44E5 DUP2 DUP6 PUSH2 0x398C JUMP JUMPDEST SWAP1 POP PUSH2 0x44F4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4510 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x452B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AB8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4546 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4561 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AD6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x457C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AE5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4597 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x45B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3B03 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x45D2 DUP2 DUP5 PUSH2 0x3B12 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x45F3 DUP2 PUSH2 0x3B4B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4613 DUP2 PUSH2 0x3BB1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4633 DUP2 PUSH2 0x3C17 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4653 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4673 DUP2 PUSH2 0x3CBD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4693 DUP2 PUSH2 0x3D23 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x46B3 DUP2 PUSH2 0x3D89 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x46D3 DUP2 PUSH2 0x3DC9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x46F3 DUP2 PUSH2 0x3E09 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4713 DUP2 PUSH2 0x3E6F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4733 DUP2 PUSH2 0x3ED5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4753 DUP2 PUSH2 0x3F3B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4773 DUP2 PUSH2 0x3F7B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4794 DUP2 DUP5 PUSH2 0x405B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x47B6 DUP2 DUP5 PUSH2 0x3FE1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x47D3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x412A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x47EE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x4809 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x412A JUMP JUMPDEST PUSH2 0x4816 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x41E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4832 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x484D PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x485A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x4867 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4874 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4881 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x48A0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x48AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4210 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x48D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x48F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x49C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x4AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4B15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x4B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B3A DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B4C DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BBB DUP3 PUSH2 0x4CBE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BCD DUP3 PUSH2 0x4BD4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BDF DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BF1 DUP3 PUSH2 0x4BF8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C03 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C15 DUP3 PUSH2 0x4C1C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C27 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C39 DUP3 PUSH2 0x4C40 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C4B DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5D DUP3 PUSH2 0x4C64 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C6F DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C81 DUP3 PUSH2 0x4C88 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C93 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CA5 DUP3 PUSH2 0x4CAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CB7 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CC9 DUP3 PUSH2 0x4CD0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CDB DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CED DUP3 PUSH2 0x4BA3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D21 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4D06 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4D30 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4D50 DUP2 PUSH2 0x4B2F JUMP JUMPDEST DUP2 EQ PUSH2 0x4D5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D67 DUP2 PUSH2 0x4B41 JUMP JUMPDEST DUP2 EQ PUSH2 0x4D72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D7E DUP2 PUSH2 0x4B53 JUMP JUMPDEST DUP2 EQ PUSH2 0x4D89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D95 DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP2 EQ PUSH2 0x4DA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4DAC DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP2 EQ PUSH2 0x4DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4DC3 DUP2 PUSH2 0x4B93 JUMP JUMPDEST DUP2 EQ PUSH2 0x4DCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4DDA DUP2 PUSH2 0x4BA3 JUMP JUMPDEST DUP2 EQ PUSH2 0x4DE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xEC 0xA6 SMOD PUSH6 0x6161544AFB07 0xE3 0xE3 0xAC PUSH31 0xD67FE7673212B0E17C7E5117F262B9A1578A6C6578706572696D656E74616C CREATE2 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH ", + "sourceMap": "778:17895:13:-;;;1899:12;:30;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1899:32:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1899:32:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1899:32:13;;;;;;;;;1886:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1857:75;;;;;;;;;;;;;:::i;:::-;;2014:780;8:9:-1;5:2;;;30:1;27;20:12;5:2;2014:780:13;;;;;;;;;;;;;;;;;;;;;;;;2090:13;2066:12;;:38;;;;;;;;;;;;;;;;;;2131:12;;;;;;;;;;;:31;;;2163:12;:19;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2163:21:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2163:21:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2163:21:13;;;;;;;;;2131:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2131:54:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2131:54:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2131:54:13;;;;;;;;;2115:6;;:71;;;;;;;;;;;;;;;;;;2235:12;;;;;;;;;;;:31;;;2267:12;:26;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2267:28:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2267:28:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2267:28:13;;;;;;;;;2235:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2235:61:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2235:61:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2235:61:13;;;;;;;;;2196:12;;:110;;;;;;;;;;;;;;;;;;2351:12;;;;;;;;;;;:31;;;2383:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2383:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2383:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2383:27:13;;;;;;;;;2351:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2351:60:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2351:60:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2351:60:13;;;;;;;;;2316:11;;:105;;;;;;;;;;;;;;;;;;2475:12;;;;;;;;;;;:31;;;2507:12;:26;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2507:28:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2507:28:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2507:28:13;;;;;;;;;2475:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2475:61:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2475:61:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2475:61:13;;;;;;;;;2431:12;;:115;;;;;;;;;;;;;;;;;;2592:12;;;;;;;;;;;:31;;;2624:12;:23;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2624:25:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2624:25:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2624:25:13;;;;;;;;;2592:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2592:58:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2592:58:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2592:58:13;;;;;;;;;2556:13;;:104;;;;;;;;;;;;;;;;;;2715:12;;;;;;;;;;;:31;;;2747:12;:27;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2747:29:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2747:29:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2747:29:13;;;;;;;;;2715:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2715:62:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2715:62:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2715:62:13;;;;;;;;;2671:13;;:116;;;;;;;;;;;;;;;;;;2014:780;778:17895;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;;;68:71;;;;;146:134;;230:6;224:13;215:22;;242:33;269:5;242:33;;;209:71;;;;;287:134;;371:6;365:13;356:22;;383:33;410:5;383:33;;;350:71;;;;;428:263;;543:2;531:9;522:7;518:23;514:32;511:2;;;559:1;556;549:12;511:2;594:1;611:64;667:7;658:6;647:9;643:22;611:64;;;601:74;;573:108;505:186;;;;;698:263;;813:2;801:9;792:7;788:23;784:32;781:2;;;829:1;826;819:12;781:2;864:1;881:64;937:7;928:6;917:9;913:22;881:64;;;871:74;;843:108;775:186;;;;;968:263;;1083:2;1071:9;1062:7;1058:23;1054:32;1051:2;;;1099:1;1096;1089:12;1051:2;1134:1;1151:64;1207:7;1198:6;1187:9;1183:22;1151:64;;;1141:74;;1113:108;1045:186;;;;;1238:113;1321:24;1339:5;1321:24;;;1316:3;1309:37;1303:48;;;1358:213;;1476:2;1465:9;1461:18;1453:26;;1490:71;1558:1;1547:9;1543:17;1534:6;1490:71;;;1447:124;;;;;1578:91;;1640:24;1658:5;1640:24;;;1629:35;;1623:46;;;;1676:72;;1738:5;1727:16;;1721:27;;;;1755:121;;1828:42;1821:5;1817:54;1806:65;;1800:76;;;;1883:72;;1945:5;1934:16;;1928:27;;;;1962:117;2031:24;2049:5;2031:24;;;2024:5;2021:35;2011:2;;2070:1;2067;2060:12;2011:2;2005:74;;2086:117;2155:24;2173:5;2155:24;;;2148:5;2145:35;2135:2;;2194:1;2191;2184:12;2135:2;2129:74;;2210:117;2279:24;2297:5;2279:24;;;2272:5;2269:35;2259:2;;2318:1;2315;2308:12;2259:2;2253:74;;778:17895:13;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": { + "contracts/libs/ECVerify.sol": { + "ECVerify": [ + { + "length": 20, + "start": 3055 + } + ] + }, + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 864 + }, + { + "length": 20, + "start": 1053 + }, + { + "length": 20, + "start": 1183 + }, + { + "length": 20, + "start": 1785 + }, + { + "length": 20, + "start": 2611 + }, + { + "length": 20, + "start": 3679 + }, + { + "length": 20, + "start": 4242 + }, + { + "length": 20, + "start": 4421 + }, + { + "length": 20, + "start": 4593 + }, + { + "length": 20, + "start": 5822 + }, + { + "length": 20, + "start": 8692 + }, + { + "length": 20, + "start": 9504 + } + ] + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": [ + { + "length": 20, + "start": 2920 + }, + { + "length": 20, + "start": 3219 + }, + { + "length": 20, + "start": 3891 + }, + { + "length": 20, + "start": 4750 + }, + { + "length": 20, + "start": 4799 + }, + { + "length": 20, + "start": 5131 + }, + { + "length": 20, + "start": 5467 + }, + { + "length": 20, + "start": 5981 + }, + { + "length": 20, + "start": 6030 + }, + { + "length": 20, + "start": 6360 + }, + { + "length": 20, + "start": 6650 + }, + { + "length": 20, + "start": 6924 + }, + { + "length": 20, + "start": 7059 + }, + { + "length": 20, + "start": 7840 + } + ] + } + }, + "object": "6080604052600436106100c25760003560e01c8063ae2926d41161007f578063defd34e311610059578063defd34e314610268578063df07098314610291578063f24ccbfe146102a8578063ff34585d146102d3576100c2565b8063ae2926d4146101cf578063b2692d77146101fa578063b32c4d8d14610225576100c2565b80630e981757146100c75780634643dde4146100e357806347b0f08e146101235780634eb7221a1461014e57806355a373d6146101795780639d23c4c7146101a4575b600080fd5b6100e160048036036100dc919081019061342b565b6102fc565b005b3480156100ef57600080fd5b5061010a600480360361010591908101906134d5565b6108da565b60405161011a9493929190614464565b60405180910390f35b34801561012f57600080fd5b50610138611c34565b6040516101459190614567565b60405180910390f35b34801561015a57600080fd5b50610163611c5a565b6040516101709190614582565b60405180910390f35b34801561018557600080fd5b5061018e611c80565b60405161019b91906144fb565b60405180910390f35b3480156101b057600080fd5b506101b9611ca6565b6040516101c69190614516565b60405180910390f35b3480156101db57600080fd5b506101e4611ccc565b6040516101f19190614531565b60405180910390f35b34801561020657600080fd5b5061020f611cf2565b60405161021c919061459d565b60405180910390f35b34801561023157600080fd5b5061024c60048036036102479190810190613628565b611d18565b60405161025f97969594939291906142e1565b60405180910390f35b34801561027457600080fd5b5061028f600480360361028a919081019061367a565b611d87565b005b34801561029d57600080fd5b506102a66121c0565b005b3480156102b457600080fd5b506102bd6126b1565b6040516102ca919061454c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036036102f59190810190613628565b6126d7565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461035257fe5b60006009541461035e57fe5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__63faf5625f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a257600080fd5b505af41580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103da9190810190613651565b341461041b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610412906146da565b60405180910390fd5b73__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b15801561045f57600080fd5b505af4158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104979190810190613651565b83839050505073__$b941c30c0f5422d8b714f571f17d94a5fd$__634a1eb5916040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e157600080fd5b505af41580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105199190810190613651565b83839050111561055e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610555906145da565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef85856040518363ffffffff1660e01b81526004016105bd92919061429b565b602060405180830381600087803b1580156105d757600080fd5b505af11580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060f91908101906134ac565b9050610619612a2f565b6040518060e00160405280848152602001600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389c09d386040518163ffffffff1660e01b815260040160206040518083038186803b15801561069257600080fd5b505afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106ca91908101906134ac565b81526020013373ffffffffffffffffffffffffffffffffffffffff16815260200183815260200134815260200173__$b941c30c0f5422d8b714f571f17d94a5fd$__635d4cbd0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561073b57600080fd5b505af415801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107739190810190613651565b4301815260200142815250905060078190806001815401808255809150509060018203906000526020600020906007020160009091929091909150600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a0820151816005015560c08201518160060155505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cea4592f826040015184866001600780549050036040518563ffffffff1660e01b81526004016108a19493929190614256565b600060405180830381600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050505050505050565b600080600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768a896000015160200151600001518a60000151600001518b602001516040518563ffffffff1660e01b815260040161095994939291906143d3565b60206040518083038186803b15801561097157600080fd5b505afa158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a99190810190613483565b6109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906146ba565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166325ab625e89600001516000015173__$b941c30c0f5422d8b714f571f17d94a5fd$__63a27154ba6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7557600080fd5b505af4158015610a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aad9190810190613751565b6040518363ffffffff1660e01b8152600401610aca92919061488b565b60206040518083038186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1a9190810190613651565b90508860000151600001518114610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d9061475a565b60405180910390fd5b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63ae97e1bf8a6040518263ffffffff1660e01b8152600401610b9d919061479c565b60206040518083038186803b158015610bb557600080fd5b505af4158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bed91908101906134ac565b73__$11f233442b4eefbe29cf56a2c2d703f84d$__6377d32e9490918b608001516040518363ffffffff1660e01b8152600401610c2b929190614350565b60206040518083038186803b158015610c4357600080fd5b505af4158015610c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7b91908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63e8a4c04e8a6000015160200151600001516040518263ffffffff1660e01b8152600401610cd491906144a9565b60206040518083038186803b158015610cec57600080fd5b505af4158015610d00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d2491908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff1614610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d719061473a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea8b604001516040518263ffffffff1660e01b8152600401610df1919061481d565b60206040518083038186803b158015610e0957600080fd5b505afa158015610e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e4191908101906133d9565b73ffffffffffffffffffffffffffffffffffffffff161415610ef25773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea157600080fd5b505af4158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ed991908101906134ac565b6000806000829250819150945094509450945050611c27565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768c73__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8d600001516040518263ffffffff1660e01b8152600401610f6c91906147be565b60006040518083038186803b158015610f8457600080fd5b505af4158015610f98573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610fc191908101906135be565b8a60000151600001518b602001516040518563ffffffff1660e01b8152600401610fee9493929190614380565b60206040518083038186803b15801561100657600080fd5b505afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061103e9190810190613483565b61107d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611074906146fa565b60405180910390fd5b6000896060015163ffffffff1610156111255773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505af41580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061110c91908101906134ac565b6000806000829250819150945094509450945050611c27565b886060015163ffffffff168760000151602001516040015110156111d85773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561118757600080fd5b505af415801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111bf91908101906134ac565b6000806000829250819150945094509450945050611c27565b886040015187600001516020015160200151146112845773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561123357600080fd5b505af4158015611247573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126b91908101906134ac565b6000806000829250819150945094509450945050611c27565b61128c612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__631229626389600001516020015161135a8d6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8e60000151602001516040518263ffffffff1660e01b81526004016112fc91906147be565b60206040518083038186803b15801561131457600080fd5b505af4158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134c9190810190613651565b61293590919063ffffffff16565b6040518363ffffffff1660e01b81526004016113779291906147f4565b60806040518083038186803b15801561138f57600080fd5b505af41580156113a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113c791908101906135ff565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e856040518263ffffffff1660e01b815260040161144091906147d9565b60006040518083038186803b15801561145857600080fd5b505af415801561146c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061149591908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b81526004016114c893929190614426565b60206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061151891908101906134ac565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330d90a768273__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e8f602001516040518263ffffffff1660e01b815260040161159491906147be565b60006040518083038186803b1580156115ac57600080fd5b505af41580156115c0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506115e991908101906135be565b8b60000151600001518c602001516040518563ffffffff1660e01b81526004016116169493929190614380565b60206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116669190810190613483565b6116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906146fa565b60405180910390fd5b8a6040015188600001516020015160200151146117535773__$b941c30c0f5422d8b714f571f17d94a5fd$__63069321b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561170057600080fd5b505af4158015611714573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061173891908101906134ac565b60008060008292508191509650965096509650505050611c27565b61175b612a8b565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63122962638a60000151602001516118298f6060015163ffffffff1673__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd8f60000151602001516040518263ffffffff1660e01b81526004016117cb91906147be565b60206040518083038186803b1580156117e357600080fd5b505af41580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061181b9190810190613651565b61297f90919063ffffffff16565b6040518363ffffffff1660e01b81526004016118469291906147f4565b60806040518083038186803b15801561185e57600080fd5b505af4158015611872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061189691908101906135ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c3b4523473__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b815260040161190d91906147d9565b60006040518083038186803b15801561192557600080fd5b505af4158015611939573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061196291908101906135be565b8b60000151600001516040518363ffffffff1660e01b81526004016119889291906144cb565b600060405180830381600087803b1580156119a257600080fd5b505af11580156119b6573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fed712773__$a6b8846b3184b62d6aec39d1f36e30dab3$__6361efb43e846040518263ffffffff1660e01b8152600401611a2f91906147d9565b60006040518083038186803b158015611a4757600080fd5b505af4158015611a5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611a8491908101906135be565b805190602001208b60000151600001518c602001516040518463ffffffff1660e01b8152600401611ab793929190614426565b60206040518083038186803b158015611acf57600080fd5b505afa158015611ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b0791908101906134ac565b91508173__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd856040518263ffffffff1660e01b8152600401611b4191906147d9565b60206040518083038186803b158015611b5957600080fd5b505af4158015611b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b919190810190613651565b73__$a6b8846b3184b62d6aec39d1f36e30dab3$__63073568bd846040518263ffffffff1660e01b8152600401611bc891906147d9565b60206040518083038186803b158015611be057600080fd5b505af4158015611bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c189190810190613651565b60019750975097509750505050505b9650965096509692505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60078181548110611d2557fe5b90600052602060002090600702016000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154905087565b600060078681548110611d9657fe5b9060005260206000209060070201600401541415611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de0906145fa565b60405180910390fd5b60078581548110611df657fe5b9060005260206000209060070201600501544310611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e409061469a565b60405180910390fd5b6009548510611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e849061471a565b60405180910390fd5b606060008090505b8551811015611f615773__$a6b8846b3184b62d6aec39d1f36e30dab3$__63dbcbdf9f878381518110611ec457fe5b60200260200101516040518263ffffffff1660e01b8152600401611ee8919061477a565b60006040518083038186803b158015611f0057600080fd5b505af4158015611f14573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611f3d91908101906135be565b828281518110611f4957fe5b60200260200101819052508080600101915050611e95565b506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340ff34ef836040518263ffffffff1660e01b8152600401611fbf91906142bf565b602060405180830381600087803b158015611fd957600080fd5b505af1158015611fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061201191908101906134ac565b90506007878154811061202057fe5b906000526020600020906007020160030154811415612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9061463a565b60405180910390fd5b600080600080600080905060008090505b8b5181101561214f5761212460078e8154811061209e57fe5b90600052602060002090600702016000015460078f815481106120bd57fe5b9060005260206000209060070201600101548e84815181106120db57fe5b60200260200101518d85815181106120ef57fe5b60200260200101518f868151811061210357fe5b60200260200101518e878151811061211757fe5b60200260200101516108da565b8096508197508298508399505050505082612142576001915061214f565b8080600101915050612085565b508015612171578b6009819055506121656121c0565b505050505050506121b9565b60078c8154811061217e57fe5b90600052602060002090600702016000015485146121b1578b6009819055506121a56121c0565b505050505050506121b9565b505050505050505b5050505050565b6000600954116121cc57fe5b600080905060008090506000809050600060016007805490500390505b60095481106124d45773__$b941c30c0f5422d8b714f571f17d94a5fd$__63106e99216040518163ffffffff1660e01b815260040160206040518083038186803b15801561223657600080fd5b505af415801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061226e9190810190613651565b5a11612279576124d4565b60095481141561228c5760006009819055505b612294612a2f565b600782815481106122a157fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050600360028260800151028161235f57fe5b048501945061237b85826080015161293590919063ffffffff16565b8401935060006007838154811061238e57fe5b906000526020600020906007020160040181905550600782815481106123b057fe5b906000526020600020906007020160008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550508280600101935050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4ba86b38383604001518460000151856060015186608001516040518663ffffffff1660e01b8152600401612493959493929190614838565b600060405180830381600087803b1580156124ad57600080fd5b505af11580156124c1573d6000803e3d6000fd5b50505050508080600190039150506121e9565b503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561251b573d6000803e3d6000fd5b50600073__$b941c30c0f5422d8b714f571f17d94a5fd$__63fccc28136040518163ffffffff1660e01b815260040160206040518083038186803b15801561256257600080fd5b505af4158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061259a9190810190613402565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156125e2573d6000803e3d6000fd5b506126106125fc600160095461293590919063ffffffff16565b60078054905061293590919063ffffffff16565b60078161261d9190612ab3565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aeedf0c7836040518263ffffffff1660e01b8152600401612679919061481d565b600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b5050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6126df612a2f565b600782815481106126ec57fe5b90600052602060002090600702016040518060e001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461280b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128029061465a565b60405180910390fd5b8060a001514311612851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128489061467a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc82608001519081150290604051600060405180830381858888f1935050505015801561289b573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54404ae338360800151856040518463ffffffff1660e01b81526004016128ff9392919061421f565b600060405180830381600087803b15801561291957600080fd5b505af115801561292d573d6000803e3d6000fd5b505050505050565b600061297783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129d4565b905092915050565b6000808284019050838110156129ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c19061461a565b60405180910390fd5b8091505092915050565b6000838311158290612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1391906145b8565b60405180910390fd5b5060008385039050809150509392505050565b6040518060e001604052806000801916815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b815481835581811115612ae057600702816007028360005260206000209182019101612adf9190612ae5565b5b505050565b612b5891905b80821115612b545760008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000905560048201600090556005820160009055600682016000905550600701612aeb565b5090565b90565b600081519050612b6a81614d47565b92915050565b600081519050612b7f81614d5e565b92915050565b600082601f830112612b9657600080fd5b8135612ba9612ba4826148e1565b6148b4565b91508181835260208401935060208101905083856020840282011115612bce57600080fd5b60005b83811015612bfe5781612be48882612dc3565b845260208401935060208301925050600181019050612bd1565b5050505092915050565b60008083601f840112612c1a57600080fd5b8235905067ffffffffffffffff811115612c3357600080fd5b602083019150836020820283011115612c4b57600080fd5b9250929050565b600082601f830112612c6357600080fd5b8135612c76612c7182614909565b6148b4565b9150818183526020840193506020810190508360005b83811015612cbc5781358601612ca28882612ee1565b845260208401935060208301925050600181019050612c8c565b5050505092915050565b600082601f830112612cd757600080fd5b8135612cea612ce582614931565b6148b4565b9150818183526020840193506020810190508360005b83811015612d305781358601612d16888261305d565b845260208401935060208301925050600181019050612d00565b5050505092915050565b600082601f830112612d4b57600080fd5b8135612d5e612d5982614959565b6148b4565b9150818183526020840193506020810190508360005b83811015612da45781358601612d8a8882613155565b845260208401935060208301925050600181019050612d74565b5050505092915050565b600081519050612dbd81614d75565b92915050565b600081359050612dd281614d8c565b92915050565b600081519050612de781614d8c565b92915050565b600082601f830112612dfe57600080fd5b8135612e11612e0c82614981565b6148b4565b91508082526020830160208301858383011115612e2d57600080fd5b612e38838284614cf4565b50505092915050565b600082601f830112612e5257600080fd5b8151612e65612e60826149ad565b6148b4565b91508082526020830160208301858383011115612e8157600080fd5b612e8c838284614d03565b50505092915050565b600060a08284031215612ea757600080fd5b612eb160406148b4565b90506000612ec184828501613385565b6000830152506020612ed58482850161329d565b60208301525092915050565b600060c08284031215612ef357600080fd5b612efd60406148b4565b90506000612f0d84828501612e95565b60008301525060a082013567ffffffffffffffff811115612f2d57600080fd5b612f3984828501612b85565b60208301525092915050565b600060c08284031215612f5757600080fd5b612f6160406148b4565b90506000612f7184828501612e95565b60008301525060a082013567ffffffffffffffff811115612f9157600080fd5b612f9d84828501612b85565b60208301525092915050565b600060408284031215612fbb57600080fd5b612fc560406148b4565b90506000612fd584828501613385565b600083015250602082013567ffffffffffffffff811115612ff557600080fd5b6130018482850161300d565b60208301525092915050565b60006020828403121561301f57600080fd5b61302960206148b4565b9050600082013567ffffffffffffffff81111561304557600080fd5b61305184828501612ded565b60008301525092915050565b60006040828403121561306f57600080fd5b61307960406148b4565b9050600082013567ffffffffffffffff81111561309557600080fd5b6130a184828501612fa9565b600083015250602082013567ffffffffffffffff8111156130c157600080fd5b6130cd84828501612b85565b60208301525092915050565b6000604082840312156130eb57600080fd5b6130f560406148b4565b9050600082013567ffffffffffffffff81111561311157600080fd5b61311d84828501612fa9565b600083015250602082013567ffffffffffffffff81111561313d57600080fd5b61314984828501612b85565b60208301525092915050565b6000610160828403121561316857600080fd5b61317260a06148b4565b905060006131828482850161329d565b60008301525060806131968482850161329d565b6020830152506101006131ab84828501613385565b6040830152506101206131c0848285016133af565b60608301525061014082013567ffffffffffffffff8111156131e157600080fd5b6131ed84828501612ded565b60808301525092915050565b6000610160828403121561320c57600080fd5b61321660a06148b4565b905060006132268482850161329d565b600083015250608061323a8482850161329d565b60208301525061010061324f84828501613385565b604083015250610120613264848285016133af565b60608301525061014082013567ffffffffffffffff81111561328557600080fd5b61329184828501612ded565b60808301525092915050565b6000608082840312156132af57600080fd5b6132b960806148b4565b905060006132c984828501613385565b60008301525060206132dd84828501613385565b60208301525060406132f184828501613385565b604083015250606061330584828501613385565b60608301525092915050565b60006080828403121561332357600080fd5b61332d60806148b4565b9050600061333d8482850161339a565b60008301525060206133518482850161339a565b60208301525060406133658482850161339a565b60408301525060606133798482850161339a565b60608301525092915050565b60008135905061339481614da3565b92915050565b6000815190506133a981614da3565b92915050565b6000813590506133be81614dba565b92915050565b6000815190506133d381614dd1565b92915050565b6000602082840312156133eb57600080fd5b60006133f984828501612b5b565b91505092915050565b60006020828403121561341457600080fd5b600061342284828501612b70565b91505092915050565b60008060006040848603121561344057600080fd5b600084013567ffffffffffffffff81111561345a57600080fd5b61346686828701612c08565b9350935050602061347986828701612dc3565b9150509250925092565b60006020828403121561349557600080fd5b60006134a384828501612dae565b91505092915050565b6000602082840312156134be57600080fd5b60006134cc84828501612dd8565b91505092915050565b60008060008060008060c087890312156134ee57600080fd5b60006134fc89828a01612dc3565b965050602061350d89828a01612dc3565b955050604087013567ffffffffffffffff81111561352a57600080fd5b61353689828a016131f9565b945050606087013567ffffffffffffffff81111561355357600080fd5b61355f89828a016130d9565b935050608087013567ffffffffffffffff81111561357c57600080fd5b61358889828a01612f45565b92505060a087013567ffffffffffffffff8111156135a557600080fd5b6135b189828a01612f45565b9150509295509295509295565b6000602082840312156135d057600080fd5b600082015167ffffffffffffffff8111156135ea57600080fd5b6135f684828501612e41565b91505092915050565b60006080828403121561361157600080fd5b600061361f84828501613311565b91505092915050565b60006020828403121561363a57600080fd5b600061364884828501613385565b91505092915050565b60006020828403121561366357600080fd5b60006136718482850161339a565b91505092915050565b600080600080600060a0868803121561369257600080fd5b60006136a088828901613385565b955050602086013567ffffffffffffffff8111156136bd57600080fd5b6136c988828901612d3a565b945050604086013567ffffffffffffffff8111156136e657600080fd5b6136f288828901612c52565b935050606086013567ffffffffffffffff81111561370f57600080fd5b61371b88828901612cc6565b925050608086013567ffffffffffffffff81111561373857600080fd5b61374488828901612c52565b9150509295509295909350565b60006020828403121561376357600080fd5b6000613771848285016133c4565b91505092915050565b60006137868383613932565b60208301905092915050565b600061379f84848461395f565b90509392505050565b60006137b483836139c5565b905092915050565b6137c581614bb0565b82525050565b6137d481614b2f565b82525050565b60006137e582614a03565b6137ef8185614a61565b93506137fa836149d9565b8060005b8381101561382b578151613812888261377a565b975061381d83614a3a565b9250506001810190506137fe565b5085935050505092915050565b60006138448385614a72565b935083602084028501613856846149e9565b8060005b8781101561389c5784840389526138718284614ad8565b61387c868284613792565b955061388784614a47565b935060208b019a50505060018101905061385a565b50829750879450505050509392505050565b60006138b982614a0e565b6138c38185614a72565b9350836020820285016138d5856149f3565b8060005b8581101561391157848403895281516138f285826137a8565b94506138fd83614a54565b925060208a019950506001810190506138d9565b50829750879550505050505092915050565b61392c81614b53565b82525050565b61393b81614b5f565b82525050565b61394a81614b5f565b82525050565b61395981614b5f565b82525050565b600061396b8385614a83565b9350613978838584614cf4565b61398183614d36565b840190509392505050565b600061399782614a24565b6139a18185614a94565b93506139b1818560208601614d03565b6139ba81614d36565b840191505092915050565b60006139d082614a19565b6139da8185614a83565b93506139ea818560208601614d03565b6139f381614d36565b840191505092915050565b6000613a0982614a19565b613a138185614a94565b9350613a23818560208601614d03565b613a2c81614d36565b840191505092915050565b6000613a4282614a19565b613a4c8185614aa5565b9350613a5c818560208601614d03565b613a6581614d36565b840191505092915050565b6000613a7b82614a19565b613a858185614ab6565b9350613a95818560208601614d03565b613a9e81614d36565b840191505092915050565b613ab281614bc2565b82525050565b613ac181614be6565b82525050565b613ad081614c0a565b82525050565b613adf81614c2e565b82525050565b613aee81614c52565b82525050565b613afd81614c76565b82525050565b613b0c81614c9a565b82525050565b6000613b1d82614a2f565b613b278185614ac7565b9350613b37818560208601614d03565b613b4081614d36565b840191505092915050565b6000613b58602e83614ac7565b91507f426174636820636f6e7461696e73206d6f7265207472616e736174696f6e732060008301527f7468616e20746865206c696d69740000000000000000000000000000000000006020830152604082019050919050565b6000613bbe602883614ac7565b91507f426174636820646f65736e74206578697374206f7220697320736c617368656460008301527f20616c72656164790000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c24601b83614ac7565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613c64602683614ac7565b91507f496e76616c696420646973707574652c20747820726f6f7420646f65736e277460008301527f206d6174636800000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613cca603083614ac7565b91507f596f7520617265206e6f742074686520636f727265637420636f6d6d6974746560008301527f7220666f722074686973206261746368000000000000000000000000000000006020830152604082019050919050565b6000613d30603183614ac7565b91507f54686973206261746368206973206e6f74207965742066696e616c697365642c60008301527f20636865636b206261636b20736f6f6e210000000000000000000000000000006020830152604082019050919050565b6000613d96601783614ac7565b91507f426174636820616c72656164792066696e616c697365640000000000000000006000830152602082019050919050565b6000613dd6601a83614ac7565b91507f546865205044412070726f6f6620697320696e636f72726563740000000000006000830152602082019050919050565b6000613e16602683614ac7565b91507f506c656173652073656e6420333220657468207769746820626174636820617360008301527f207374616b6500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e7c602783614ac7565b91507f4d65726b6c652050726f6f6620666f722066726f6d206c65616620697320696e60008301527f636f7272656374000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613ee2603383614ac7565b91507f416c7265616479207375636365737366756c6c792064697370757465642e205260008301527f6f6c6c206261636b20696e2070726f63657373000000000000000000000000006020830152604082019050919050565b6000613f48601683614ac7565b91507f5369676e617475726520697320696e636f7272656374000000000000000000006000830152602082019050919050565b6000613f88603983614ac7565b91507f5075626b6579206e6f742072656c6174656420746f207468652066726f6d206160008301527f63636f756e7420696e20746865207472616e73616374696f6e000000000000006020830152604082019050919050565b600061016083016000830151613ffa600086018261417f565b50602083015161400d608086018261417f565b5060408301516140216101008601826141f2565b506060830151614035610120860182614201565b50608083015184820361014086015261404e8282613a70565b9150508091505092915050565b600061016083016000830151614074600086018261417f565b506020830151614087608086018261417f565b50604083015161409b6101008601826141f2565b5060608301516140af610120860182614201565b5060808301518482036101408601526140c88282613a70565b9150508091505092915050565b6080820160008201516140eb60008501826141f2565b5060208201516140fe60208501826141f2565b50604082015161411160408501826141f2565b50606082015161412460608501826141f2565b50505050565b60808201600082015161414060008501826141f2565b50602082015161415360208501826141f2565b50604082015161416660408501826141f2565b50606082015161417960608501826141f2565b50505050565b60808201600082015161419560008501826141f2565b5060208201516141a860208501826141f2565b5060408201516141bb60408501826141f2565b5060608201516141ce60608501826141f2565b50505050565b6141dd81614b89565b82525050565b6141ec81614b89565b82525050565b6141fb81614b89565b82525050565b61420a81614b93565b82525050565b61421981614ce2565b82525050565b600060608201905061423460008301866137bc565b61424160208301856141d4565b61424e60408301846141d4565b949350505050565b600060808201905061426b60008301876137cb565b6142786020830186613941565b6142856040830185613941565b61429260608301846141d4565b95945050505050565b600060208201905081810360008301526142b6818486613838565b90509392505050565b600060208201905081810360008301526142d981846138ae565b905092915050565b600060e0820190506142f6600083018a613941565b6143036020830189613941565b61431060408301886137cb565b61431d6060830187613941565b61432a60808301866141d4565b61433760a08301856141d4565b61434460c08301846141d4565b98975050505050505050565b60006040820190506143656000830185613950565b81810360208301526143778184613a37565b90509392505050565b60006080820190506143956000830187613941565b81810360208301526143a7818661398c565b90506143b660408301856141d4565b81810360608301526143c881846137da565b905095945050505050565b60006080820190506143e86000830187613941565b81810360208301526143fa81866139fe565b905061440960408301856141d4565b818103606083015261441b81846137da565b905095945050505050565b600060608201905061443b6000830186613941565b61444860208301856141d4565b818103604083015261445a81846137da565b9050949350505050565b60006080820190506144796000830187613941565b61448660208301866141d4565b61449360408301856141d4565b6144a06060830184613923565b95945050505050565b600060208201905081810360008301526144c38184613a37565b905092915050565b600060408201905081810360008301526144e5818561398c565b90506144f460208301846141d4565b9392505050565b60006020820190506145106000830184613aa9565b92915050565b600060208201905061452b6000830184613ab8565b92915050565b60006020820190506145466000830184613ac7565b92915050565b60006020820190506145616000830184613ad6565b92915050565b600060208201905061457c6000830184613ae5565b92915050565b60006020820190506145976000830184613af4565b92915050565b60006020820190506145b26000830184613b03565b92915050565b600060208201905081810360008301526145d28184613b12565b905092915050565b600060208201905081810360008301526145f381613b4b565b9050919050565b6000602082019050818103600083015261461381613bb1565b9050919050565b6000602082019050818103600083015261463381613c17565b9050919050565b6000602082019050818103600083015261465381613c57565b9050919050565b6000602082019050818103600083015261467381613cbd565b9050919050565b6000602082019050818103600083015261469381613d23565b9050919050565b600060208201905081810360008301526146b381613d89565b9050919050565b600060208201905081810360008301526146d381613dc9565b9050919050565b600060208201905081810360008301526146f381613e09565b9050919050565b6000602082019050818103600083015261471381613e6f565b9050919050565b6000602082019050818103600083015261473381613ed5565b9050919050565b6000602082019050818103600083015261475381613f3b565b9050919050565b6000602082019050818103600083015261477381613f7b565b9050919050565b60006020820190508181036000830152614794818461405b565b905092915050565b600060208201905081810360008301526147b68184613fe1565b905092915050565b60006080820190506147d3600083018461412a565b92915050565b60006080820190506147ee60008301846140d5565b92915050565b600060a082019050614809600083018561412a565b61481660808301846141e3565b9392505050565b600060208201905061483260008301846141d4565b92915050565b600060a08201905061484d60008301886141d4565b61485a60208301876137cb565b6148676040830186613941565b6148746060830185613941565b61488160808301846141d4565b9695505050505050565b60006040820190506148a060008301856141d4565b6148ad6020830184614210565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156148d757600080fd5b8060405250919050565b600067ffffffffffffffff8211156148f857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561492057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561494857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561497057600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561499857600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156149c457600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60008083356001602003843603038112614af157600080fd5b83810192508235915060208301925067ffffffffffffffff821115614b1557600080fd5b600182023603841315614b2757600080fd5b509250929050565b6000614b3a82614b69565b9050919050565b6000614b4c82614b69565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000614bbb82614cbe565b9050919050565b6000614bcd82614bd4565b9050919050565b6000614bdf82614b69565b9050919050565b6000614bf182614bf8565b9050919050565b6000614c0382614b69565b9050919050565b6000614c1582614c1c565b9050919050565b6000614c2782614b69565b9050919050565b6000614c3982614c40565b9050919050565b6000614c4b82614b69565b9050919050565b6000614c5d82614c64565b9050919050565b6000614c6f82614b69565b9050919050565b6000614c8182614c88565b9050919050565b6000614c9382614b69565b9050919050565b6000614ca582614cac565b9050919050565b6000614cb782614b69565b9050919050565b6000614cc982614cd0565b9050919050565b6000614cdb82614b69565b9050919050565b6000614ced82614ba3565b9050919050565b82818337600083830152505050565b60005b83811015614d21578082015181840152602081019050614d06565b83811115614d30576000848401525b50505050565b6000601f19601f8301169050919050565b614d5081614b2f565b8114614d5b57600080fd5b50565b614d6781614b41565b8114614d7257600080fd5b50565b614d7e81614b53565b8114614d8957600080fd5b50565b614d9581614b5f565b8114614da057600080fd5b50565b614dac81614b89565b8114614db757600080fd5b50565b614dc381614b93565b8114614dce57600080fd5b50565b614dda81614ba3565b8114614de557600080fd5b5056fea365627a7a72315820eca607656161544afb07e3e3ac7ed67fe7673212b0e17c7e5117f262b9a1578a6c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAE2926D4 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDEFD34E3 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDEFD34E3 EQ PUSH2 0x268 JUMPI DUP1 PUSH4 0xDF070983 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xFF34585D EQ PUSH2 0x2D3 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0xAE2926D4 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0xB2692D77 EQ PUSH2 0x1FA JUMPI DUP1 PUSH4 0xB32C4D8D EQ PUSH2 0x225 JUMPI PUSH2 0xC2 JUMP JUMPDEST DUP1 PUSH4 0xE981757 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x4643DDE4 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x47B0F08E EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x55A373D6 EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x9D23C4C7 EQ PUSH2 0x1A4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0xDC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x342B JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x105 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34D5 JUMP JUMPDEST PUSH2 0x8DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4464 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x1C34 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x4567 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x163 PUSH2 0x1C5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x170 SWAP2 SWAP1 PUSH2 0x4582 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18E PUSH2 0x1C80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19B SWAP2 SWAP1 PUSH2 0x44FB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x1CA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x4516 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E4 PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F1 SWAP2 SWAP1 PUSH2 0x4531 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x206 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20F PUSH2 0x1CF2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21C SWAP2 SWAP1 PUSH2 0x459D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x247 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3628 JUMP JUMPDEST PUSH2 0x1D18 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x25F SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x42E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x28F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x28A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x367A JUMP JUMPDEST PUSH2 0x1D87 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A6 PUSH2 0x21C0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BD PUSH2 0x26B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2CA SWAP2 SWAP1 PUSH2 0x454C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x2F5 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3628 JUMP JUMPDEST PUSH2 0x26D7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x352 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD EQ PUSH2 0x35E JUMPI INVALID JUMPDEST PUSH20 0x0 PUSH4 0xFAF5625F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x3B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x3DA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST CALLVALUE EQ PUSH2 0x41B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x412 SWAP1 PUSH2 0x46DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0x0 PUSH4 0x4A1EB591 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x473 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x497 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST DUP4 DUP4 SWAP1 POP POP POP PUSH20 0x0 PUSH4 0x4A1EB591 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x4F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x519 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST DUP4 DUP4 SWAP1 POP GT ISZERO PUSH2 0x55E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x555 SWAP1 PUSH2 0x45DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40FF34EF DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5BD SWAP3 SWAP2 SWAP1 PUSH2 0x429B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x60F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP1 POP PUSH2 0x619 PUSH2 0x2A2F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89C09D38 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x6CA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD CALLVALUE DUP2 MSTORE PUSH1 0x20 ADD PUSH20 0x0 PUSH4 0x5D4CBD0D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x73B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x74F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x773 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST NUMBER ADD DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE POP SWAP1 POP PUSH1 0x7 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD DUP2 PUSH1 0x6 ADD SSTORE POP POP POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCEA4592F DUP3 PUSH1 0x40 ADD MLOAD DUP5 DUP7 PUSH1 0x1 PUSH1 0x7 DUP1 SLOAD SWAP1 POP SUB PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8A1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4256 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x30D90A76 DUP11 DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x959 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43D3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x985 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x9A9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x9E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP1 PUSH2 0x46BA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x25AB625E DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH20 0x0 PUSH4 0xA27154BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xAAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACA SWAP3 SWAP2 SWAP1 PUSH2 0x488B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xB1A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST SWAP1 POP DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP2 EQ PUSH2 0xB66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB5D SWAP1 PUSH2 0x475A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0x0 PUSH4 0xAE97E1BF DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB9D SWAP2 SWAP1 PUSH2 0x479C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xBC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xBED SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH20 0x0 PUSH4 0x77D32E94 SWAP1 SWAP2 DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC2B SWAP3 SWAP2 SWAP1 PUSH2 0x4350 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xC57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xC7B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0x0 PUSH4 0xE8A4C04E DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCD4 SWAP2 SWAP1 PUSH2 0x44A9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xD24 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD7A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD71 SWAP1 PUSH2 0x473A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9A0BA2EA DUP12 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDF1 SWAP2 SWAP1 PUSH2 0x481D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xE41 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x33D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xEF2 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xEB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xED9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x30D90A76 DUP13 PUSH20 0x0 PUSH4 0x61EFB43E DUP14 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF6C SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xF98 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0xFC1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFEE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4380 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1006 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x103E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x107D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1074 SWAP1 PUSH2 0x46FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP10 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1125 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x10E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x110C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 ADD MLOAD LT ISZERO PUSH2 0x11D8 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x119B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x11BF SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST DUP9 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD EQ PUSH2 0x1284 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1247 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x126B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP POP PUSH2 0x1C27 JUMP JUMPDEST PUSH2 0x128C PUSH2 0x2A8B JUMP JUMPDEST PUSH20 0x0 PUSH4 0x12296263 DUP10 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x135A DUP14 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH20 0x0 PUSH4 0x73568BD DUP15 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1328 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x134C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1377 SWAP3 SWAP2 SWAP1 PUSH2 0x47F4 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x13A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x13C7 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5FED7127 PUSH20 0x0 PUSH4 0x61EFB43E DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1440 SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x146C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1495 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14C8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4426 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1518 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP1 POP PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x30D90A76 DUP3 PUSH20 0x0 PUSH4 0x61EFB43E DUP16 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1594 SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x15E9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1616 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4380 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x162E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1642 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1666 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3483 JUMP JUMPDEST PUSH2 0x16A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169C SWAP1 PUSH2 0x46FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP11 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x20 ADD MLOAD EQ PUSH2 0x1753 JUMPI PUSH20 0x0 PUSH4 0x69321B0 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1738 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP3 SWAP3 POP DUP2 SWAP2 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP PUSH2 0x1C27 JUMP JUMPDEST PUSH2 0x175B PUSH2 0x2A8B JUMP JUMPDEST PUSH20 0x0 PUSH4 0x12296263 DUP11 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x1829 DUP16 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH20 0x0 PUSH4 0x73568BD DUP16 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17CB SWAP2 SWAP1 PUSH2 0x47BE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x17F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x181B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH2 0x297F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1846 SWAP3 SWAP2 SWAP1 PUSH2 0x47F4 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1872 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1896 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35FF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC3B45234 PUSH20 0x0 PUSH4 0x61EFB43E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x190D SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1939 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1962 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1988 SWAP3 SWAP2 SWAP1 PUSH2 0x44CB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5FED7127 PUSH20 0x0 PUSH4 0x61EFB43E DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A2F SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1A5B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1A84 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AB7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4426 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B07 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP2 POP DUP2 PUSH20 0x0 PUSH4 0x73568BD DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B41 SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1B6D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1B91 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x73568BD DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BC8 SWAP2 SWAP1 PUSH2 0x47D9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1BF4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1C18 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST PUSH1 0x1 SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x7 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1D25 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 DUP1 PUSH1 0x4 ADD SLOAD SWAP1 DUP1 PUSH1 0x5 ADD SLOAD SWAP1 DUP1 PUSH1 0x6 ADD SLOAD SWAP1 POP DUP8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x1D96 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x4 ADD SLOAD EQ ISZERO PUSH2 0x1DE9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DE0 SWAP1 PUSH2 0x45FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1DF6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x5 ADD SLOAD NUMBER LT PUSH2 0x1E49 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E40 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD DUP6 LT PUSH2 0x1E8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E84 SWAP1 PUSH2 0x471A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x1F61 JUMPI PUSH20 0x0 PUSH4 0xDBCBDF9F DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1EC4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EE8 SWAP2 SWAP1 PUSH2 0x477A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1F14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x1F3D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x35BE JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F49 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1E95 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x40FF34EF DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FBF SWAP2 SWAP1 PUSH2 0x42BF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x2011 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x34AC JUMP JUMPDEST SWAP1 POP PUSH1 0x7 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x2020 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x3 ADD SLOAD DUP2 EQ ISZERO PUSH2 0x2074 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x206B SWAP1 PUSH2 0x463A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP12 MLOAD DUP2 LT ISZERO PUSH2 0x214F JUMPI PUSH2 0x2124 PUSH1 0x7 DUP15 DUP2 SLOAD DUP2 LT PUSH2 0x209E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 ADD SLOAD PUSH1 0x7 DUP16 DUP2 SLOAD DUP2 LT PUSH2 0x20BD JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x1 ADD SLOAD DUP15 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x20DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x20EF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2103 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x2117 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x8DA JUMP JUMPDEST DUP1 SWAP7 POP DUP2 SWAP8 POP DUP3 SWAP9 POP DUP4 SWAP10 POP POP POP POP POP DUP3 PUSH2 0x2142 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x214F JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2085 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x2171 JUMPI DUP12 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH2 0x2165 PUSH2 0x21C0 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x21B9 JUMP JUMPDEST PUSH1 0x7 DUP13 DUP2 SLOAD DUP2 LT PUSH2 0x217E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 ADD SLOAD DUP6 EQ PUSH2 0x21B1 JUMPI DUP12 PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH2 0x21A5 PUSH2 0x21C0 JUMP JUMPDEST POP POP POP POP POP POP POP PUSH2 0x21B9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD GT PUSH2 0x21CC JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x7 DUP1 SLOAD SWAP1 POP SUB SWAP1 POP JUMPDEST PUSH1 0x9 SLOAD DUP2 LT PUSH2 0x24D4 JUMPI PUSH20 0x0 PUSH4 0x106E9921 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x224A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x226E SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3651 JUMP JUMPDEST GAS GT PUSH2 0x2279 JUMPI PUSH2 0x24D4 JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 EQ ISZERO PUSH2 0x228C JUMPI PUSH1 0x0 PUSH1 0x9 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH2 0x2294 PUSH2 0x2A2F JUMP JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x22A1 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x3 PUSH1 0x2 DUP3 PUSH1 0x80 ADD MLOAD MUL DUP2 PUSH2 0x235F JUMPI INVALID JUMPDEST DIV DUP6 ADD SWAP5 POP PUSH2 0x237B DUP6 DUP3 PUSH1 0x80 ADD MLOAD PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 ADD SWAP4 POP PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x238E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x4 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x23B0 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x6 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP POP DUP3 DUP1 PUSH1 0x1 ADD SWAP4 POP POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4BA86B3 DUP4 DUP4 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2493 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH2 0x21E9 JUMP JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP5 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x251B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 PUSH20 0x0 PUSH4 0xFCCC2813 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x2576 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP PUSH2 0x259A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3402 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP5 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x25E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x2610 PUSH2 0x25FC PUSH1 0x1 PUSH1 0x9 SLOAD PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP1 POP PUSH2 0x2935 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP2 PUSH2 0x261D SWAP2 SWAP1 PUSH2 0x2AB3 JUMP JUMPDEST POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAEEDF0C7 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2679 SWAP2 SWAP1 PUSH2 0x481D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x26DF PUSH2 0x2A2F JUMP JUMPDEST PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x26EC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x4 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x6 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x40 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x280B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2802 SWAP1 PUSH2 0x465A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xA0 ADD MLOAD NUMBER GT PUSH2 0x2851 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2848 SWAP1 PUSH2 0x467A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 PUSH1 0x80 ADD MLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x289B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD54404AE CALLER DUP4 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x421F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2919 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x292D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2977 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x29D4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x29CA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C1 SWAP1 PUSH2 0x461A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0x2A1C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2A13 SWAP2 SWAP1 PUSH2 0x45B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x2AE0 JUMPI PUSH1 0x7 MUL DUP2 PUSH1 0x7 MUL DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2ADF SWAP2 SWAP1 PUSH2 0x2AE5 JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2B58 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2B54 JUMPI PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x5 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x6 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x7 ADD PUSH2 0x2AEB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2B6A DUP2 PUSH2 0x4D47 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2B7F DUP2 PUSH2 0x4D5E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2BA9 PUSH2 0x2BA4 DUP3 PUSH2 0x48E1 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x2BCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2BFE JUMPI DUP2 PUSH2 0x2BE4 DUP9 DUP3 PUSH2 0x2DC3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2BD1 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2C1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x2C4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2C63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2C76 PUSH2 0x2C71 DUP3 PUSH2 0x4909 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CBC JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2CA2 DUP9 DUP3 PUSH2 0x2EE1 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2C8C JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CEA PUSH2 0x2CE5 DUP3 PUSH2 0x4931 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2D30 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2D16 DUP9 DUP3 PUSH2 0x305D JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2D00 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2D5E PUSH2 0x2D59 DUP3 PUSH2 0x4959 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DA4 JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH2 0x2D8A DUP9 DUP3 PUSH2 0x3155 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2D74 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DBD DUP2 PUSH2 0x4D75 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2DD2 DUP2 PUSH2 0x4D8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DE7 DUP2 PUSH2 0x4D8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2DFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E11 PUSH2 0x2E0C DUP3 PUSH2 0x4981 JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2E2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E38 DUP4 DUP3 DUP5 PUSH2 0x4CF4 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2E65 PUSH2 0x2E60 DUP3 PUSH2 0x49AD JUMP JUMPDEST PUSH2 0x48B4 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x2E81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E8C DUP4 DUP3 DUP5 PUSH2 0x4D03 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EB1 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EC1 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2ED5 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EFD PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F0D DUP5 DUP3 DUP6 ADD PUSH2 0x2E95 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F39 DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F61 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2F71 DUP5 DUP3 DUP6 ADD PUSH2 0x2E95 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F9D DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FC5 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2FD5 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2FF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3001 DUP5 DUP3 DUP6 ADD PUSH2 0x300D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x301F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3029 PUSH1 0x20 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3051 DUP5 DUP3 DUP6 ADD PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3079 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3095 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30A1 DUP5 DUP3 DUP6 ADD PUSH2 0x2FA9 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x30C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30CD DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30F5 PUSH1 0x40 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x311D DUP5 DUP3 DUP6 ADD PUSH2 0x2FA9 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x313D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3149 DUP5 DUP3 DUP6 ADD PUSH2 0x2B85 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3172 PUSH1 0xA0 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3182 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x3196 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x31AB DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x31C0 DUP5 DUP3 DUP6 ADD PUSH2 0x33AF JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x31ED DUP5 DUP3 DUP6 ADD PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x320C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3216 PUSH1 0xA0 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3226 DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x323A DUP5 DUP3 DUP6 ADD PUSH2 0x329D JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x324F DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x3264 DUP5 DUP3 DUP6 ADD PUSH2 0x33AF JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3291 DUP5 DUP3 DUP6 ADD PUSH2 0x2DED JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x32AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32B9 PUSH1 0x80 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x32C9 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x32DD DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x32F1 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x3305 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332D PUSH1 0x80 PUSH2 0x48B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x333D DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x3351 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x3365 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x3379 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3394 DUP2 PUSH2 0x4DA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x33A9 DUP2 PUSH2 0x4DA3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x33BE DUP2 PUSH2 0x4DBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x33D3 DUP2 PUSH2 0x4DD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x33EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x33F9 DUP5 DUP3 DUP6 ADD PUSH2 0x2B5B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3422 DUP5 DUP3 DUP6 ADD PUSH2 0x2B70 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x345A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3466 DUP7 DUP3 DUP8 ADD PUSH2 0x2C08 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x20 PUSH2 0x3479 DUP7 DUP3 DUP8 ADD PUSH2 0x2DC3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3495 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34A3 DUP5 DUP3 DUP6 ADD PUSH2 0x2DAE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x34BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34CC DUP5 DUP3 DUP6 ADD PUSH2 0x2DD8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x34EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34FC DUP10 DUP3 DUP11 ADD PUSH2 0x2DC3 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0x350D DUP10 DUP3 DUP11 ADD PUSH2 0x2DC3 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x352A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3536 DUP10 DUP3 DUP11 ADD PUSH2 0x31F9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x355F DUP10 DUP3 DUP11 ADD PUSH2 0x30D9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x357C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3588 DUP10 DUP3 DUP11 ADD PUSH2 0x2F45 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35B1 DUP10 DUP3 DUP11 ADD PUSH2 0x2F45 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x35D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35F6 DUP5 DUP3 DUP6 ADD PUSH2 0x2E41 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3611 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x361F DUP5 DUP3 DUP6 ADD PUSH2 0x3311 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x363A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3648 DUP5 DUP3 DUP6 ADD PUSH2 0x3385 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3663 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3671 DUP5 DUP3 DUP6 ADD PUSH2 0x339A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x36A0 DUP9 DUP3 DUP10 ADD PUSH2 0x3385 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36C9 DUP9 DUP3 DUP10 ADD PUSH2 0x2D3A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36F2 DUP9 DUP3 DUP10 ADD PUSH2 0x2C52 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x370F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x371B DUP9 DUP3 DUP10 ADD PUSH2 0x2CC6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3744 DUP9 DUP3 DUP10 ADD PUSH2 0x2C52 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3763 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3771 DUP5 DUP3 DUP6 ADD PUSH2 0x33C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3786 DUP4 DUP4 PUSH2 0x3932 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x379F DUP5 DUP5 DUP5 PUSH2 0x395F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B4 DUP4 DUP4 PUSH2 0x39C5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x37C5 DUP2 PUSH2 0x4BB0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x37D4 DUP2 PUSH2 0x4B2F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37E5 DUP3 PUSH2 0x4A03 JUMP JUMPDEST PUSH2 0x37EF DUP2 DUP6 PUSH2 0x4A61 JUMP JUMPDEST SWAP4 POP PUSH2 0x37FA DUP4 PUSH2 0x49D9 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x382B JUMPI DUP2 MLOAD PUSH2 0x3812 DUP9 DUP3 PUSH2 0x377A JUMP JUMPDEST SWAP8 POP PUSH2 0x381D DUP4 PUSH2 0x4A3A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x37FE JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3844 DUP4 DUP6 PUSH2 0x4A72 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP5 MUL DUP6 ADD PUSH2 0x3856 DUP5 PUSH2 0x49E9 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x389C JUMPI DUP5 DUP5 SUB DUP10 MSTORE PUSH2 0x3871 DUP3 DUP5 PUSH2 0x4AD8 JUMP JUMPDEST PUSH2 0x387C DUP7 DUP3 DUP5 PUSH2 0x3792 JUMP JUMPDEST SWAP6 POP PUSH2 0x3887 DUP5 PUSH2 0x4A47 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP12 ADD SWAP11 POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x385A JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP5 POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38B9 DUP3 PUSH2 0x4A0E JUMP JUMPDEST PUSH2 0x38C3 DUP2 DUP6 PUSH2 0x4A72 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x38D5 DUP6 PUSH2 0x49F3 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x3911 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x38F2 DUP6 DUP3 PUSH2 0x37A8 JUMP JUMPDEST SWAP5 POP PUSH2 0x38FD DUP4 PUSH2 0x4A54 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x38D9 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x392C DUP2 PUSH2 0x4B53 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x393B DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x394A DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3959 DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x396B DUP4 DUP6 PUSH2 0x4A83 JUMP JUMPDEST SWAP4 POP PUSH2 0x3978 DUP4 DUP6 DUP5 PUSH2 0x4CF4 JUMP JUMPDEST PUSH2 0x3981 DUP4 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3997 DUP3 PUSH2 0x4A24 JUMP JUMPDEST PUSH2 0x39A1 DUP2 DUP6 PUSH2 0x4A94 JUMP JUMPDEST SWAP4 POP PUSH2 0x39B1 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x39BA DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39D0 DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x39DA DUP2 DUP6 PUSH2 0x4A83 JUMP JUMPDEST SWAP4 POP PUSH2 0x39EA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x39F3 DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A09 DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x3A13 DUP2 DUP6 PUSH2 0x4A94 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A23 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3A2C DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A42 DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x3A4C DUP2 DUP6 PUSH2 0x4AA5 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A5C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3A65 DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A7B DUP3 PUSH2 0x4A19 JUMP JUMPDEST PUSH2 0x3A85 DUP2 DUP6 PUSH2 0x4AB6 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A95 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3A9E DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3AB2 DUP2 PUSH2 0x4BC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AC1 DUP2 PUSH2 0x4BE6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AD0 DUP2 PUSH2 0x4C0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3ADF DUP2 PUSH2 0x4C2E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AEE DUP2 PUSH2 0x4C52 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3AFD DUP2 PUSH2 0x4C76 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3B0C DUP2 PUSH2 0x4C9A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B1D DUP3 PUSH2 0x4A2F JUMP JUMPDEST PUSH2 0x3B27 DUP2 DUP6 PUSH2 0x4AC7 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B37 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4D03 JUMP JUMPDEST PUSH2 0x3B40 DUP2 PUSH2 0x4D36 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B58 PUSH1 0x2E DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x426174636820636F6E7461696E73206D6F7265207472616E736174696F6E7320 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7468616E20746865206C696D6974000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BBE PUSH1 0x28 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x426174636820646F65736E74206578697374206F7220697320736C6173686564 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x20616C7265616479000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C24 PUSH1 0x1B DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C64 PUSH1 0x26 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x496E76616C696420646973707574652C20747820726F6F7420646F65736E2774 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x206D617463680000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CCA PUSH1 0x30 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x596F7520617265206E6F742074686520636F727265637420636F6D6D69747465 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7220666F72207468697320626174636800000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D30 PUSH1 0x31 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x54686973206261746368206973206E6F74207965742066696E616C697365642C PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x20636865636B206261636B20736F6F6E21000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D96 PUSH1 0x17 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x426174636820616C72656164792066696E616C69736564000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DD6 PUSH1 0x1A DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x546865205044412070726F6F6620697320696E636F7272656374000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E16 PUSH1 0x26 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x506C656173652073656E64203332206574682077697468206261746368206173 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x207374616B650000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E7C PUSH1 0x27 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D65726B6C652050726F6F6620666F722066726F6D206C65616620697320696E PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x636F727265637400000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EE2 PUSH1 0x33 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x416C7265616479207375636365737366756C6C792064697370757465642E2052 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6F6C6C206261636B20696E2070726F6365737300000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F48 PUSH1 0x16 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x5369676E617475726520697320696E636F727265637400000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F88 PUSH1 0x39 DUP4 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 POP PUSH32 0x5075626B6579206E6F742072656C6174656420746F207468652066726F6D2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x63636F756E7420696E20746865207472616E73616374696F6E00000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x3FFA PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x400D PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x4021 PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4035 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x4201 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x404E DUP3 DUP3 PUSH2 0x3A70 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x4074 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x4087 PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x417F JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x409B PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x40AF PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x4201 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x40C8 DUP3 DUP3 PUSH2 0x3A70 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x40EB PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x40FE PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4111 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4124 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x4140 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x4153 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x4166 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x4179 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x4195 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x41A8 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x41BB PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x41CE PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x41F2 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x41DD DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x41EC DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x41FB DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x420A DUP2 PUSH2 0x4B93 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4219 DUP2 PUSH2 0x4CE2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4234 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x37BC JUMP JUMPDEST PUSH2 0x4241 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x424E PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x426B PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x4278 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4285 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4292 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x42B6 DUP2 DUP5 DUP7 PUSH2 0x3838 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x42D9 DUP2 DUP5 PUSH2 0x38AE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x42F6 PUSH1 0x0 DUP4 ADD DUP11 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4303 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4310 PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x431D PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x432A PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x4337 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x4344 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4365 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3950 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4377 DUP2 DUP5 PUSH2 0x3A37 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4395 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x43A7 DUP2 DUP7 PUSH2 0x398C JUMP JUMPDEST SWAP1 POP PUSH2 0x43B6 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x43C8 DUP2 DUP5 PUSH2 0x37DA JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x43E8 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x43FA DUP2 DUP7 PUSH2 0x39FE JUMP JUMPDEST SWAP1 POP PUSH2 0x4409 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x441B DUP2 DUP5 PUSH2 0x37DA JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x443B PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4448 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x445A DUP2 DUP5 PUSH2 0x37DA JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4479 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4486 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x4493 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x44A0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x3923 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x44C3 DUP2 DUP5 PUSH2 0x3A37 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x44E5 DUP2 DUP6 PUSH2 0x398C JUMP JUMPDEST SWAP1 POP PUSH2 0x44F4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4510 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x452B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AB8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4546 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4561 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AD6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x457C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AE5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4597 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3AF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x45B2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3B03 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x45D2 DUP2 DUP5 PUSH2 0x3B12 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x45F3 DUP2 PUSH2 0x3B4B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4613 DUP2 PUSH2 0x3BB1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4633 DUP2 PUSH2 0x3C17 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4653 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4673 DUP2 PUSH2 0x3CBD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4693 DUP2 PUSH2 0x3D23 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x46B3 DUP2 PUSH2 0x3D89 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x46D3 DUP2 PUSH2 0x3DC9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x46F3 DUP2 PUSH2 0x3E09 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4713 DUP2 PUSH2 0x3E6F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4733 DUP2 PUSH2 0x3ED5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4753 DUP2 PUSH2 0x3F3B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4773 DUP2 PUSH2 0x3F7B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x4794 DUP2 DUP5 PUSH2 0x405B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x47B6 DUP2 DUP5 PUSH2 0x3FE1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x47D3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x412A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x47EE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40D5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x4809 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x412A JUMP JUMPDEST PUSH2 0x4816 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x41E3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4832 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x484D PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x485A PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x37CB JUMP JUMPDEST PUSH2 0x4867 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4874 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x3941 JUMP JUMPDEST PUSH2 0x4881 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x41D4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x48A0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x41D4 JUMP JUMPDEST PUSH2 0x48AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4210 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x48D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x48F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x49C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x4AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4B15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x4B27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B3A DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B4C DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BBB DUP3 PUSH2 0x4CBE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BCD DUP3 PUSH2 0x4BD4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BDF DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BF1 DUP3 PUSH2 0x4BF8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C03 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C15 DUP3 PUSH2 0x4C1C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C27 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C39 DUP3 PUSH2 0x4C40 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C4B DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5D DUP3 PUSH2 0x4C64 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C6F DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C81 DUP3 PUSH2 0x4C88 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C93 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CA5 DUP3 PUSH2 0x4CAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CB7 DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CC9 DUP3 PUSH2 0x4CD0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CDB DUP3 PUSH2 0x4B69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CED DUP3 PUSH2 0x4BA3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D21 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4D06 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4D30 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4D50 DUP2 PUSH2 0x4B2F JUMP JUMPDEST DUP2 EQ PUSH2 0x4D5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D67 DUP2 PUSH2 0x4B41 JUMP JUMPDEST DUP2 EQ PUSH2 0x4D72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D7E DUP2 PUSH2 0x4B53 JUMP JUMPDEST DUP2 EQ PUSH2 0x4D89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4D95 DUP2 PUSH2 0x4B5F JUMP JUMPDEST DUP2 EQ PUSH2 0x4DA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4DAC DUP2 PUSH2 0x4B89 JUMP JUMPDEST DUP2 EQ PUSH2 0x4DB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4DC3 DUP2 PUSH2 0x4B93 JUMP JUMPDEST DUP2 EQ PUSH2 0x4DCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4DDA DUP2 PUSH2 0x4BA3 JUMP JUMPDEST DUP2 EQ PUSH2 0x4DE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xEC 0xA6 SMOD PUSH6 0x6161544AFB07 0xE3 0xE3 0xAC PUSH31 0xD67FE7673212B0E17C7E5117F262B9A1578A6C6578706572696D656E74616C CREATE2 PUSH5 0x736F6C6343 STOP SDIV 0xF STOP BLOCKHASH ", + "sourceMap": "778:17895:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:1268;;;;;;;;;;;;;;;;:::i;:::-;;7556:5056;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7556:5056:13;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1278:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1278:26:13;;;:::i;:::-;;;;;;;;;;;;;;;;1210:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1210:28:13;;;:::i;:::-;;;;;;;;;;;;;;;;1177:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1177:27:13;;;:::i;:::-;;;;;;;;;;;;;;;;1136:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1136:35:13;;;:::i;:::-;;;;;;;;;;;;;;;;1069;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1069:35:13;;;:::i;:::-;;;;;;;;;;;;;;;;1033:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1033:30:13;;;:::i;:::-;;;;;;;;;;;;;;;;1244:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1244:28:13;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;4518:2709;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4518:2709:13;;;;;;;;;;;;;;;;:::i;:::-;;12819:1855;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12819:1855:13;;;:::i;:::-;;1110:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1110:20:13;;;:::i;:::-;;;;;;;;;;;;;;;;14868:600;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14868:600:13;;;;;;;;;;;;;;;;:::i;:::-;;2994:1268;1539:11;;;;;;;;;;;1525:25;;:10;:25;;;1518:33;;;;1642:1;1620:18;;:23;1613:31;;;;3190:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3190:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3190:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3190:27:13;;;;;;;;;3177:9;:40;3156:125;;;;;;;;;;;;;;;;;;;;;;3309:12;:30;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3309:32:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3309:32:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3309:32:13;;;;;;;;;3295:4;;:11;;:46;;3420:12;:30;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3420:32:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3420:32:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3420:32:13;;;;;;;;;3405:4;;:11;;:47;;3384:140;;;;;;;;;;;;;;;;;;;;;;3534:14;3551:11;;;;;;;;;;;:25;;;3577:4;;3551:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3551:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3551:31:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3551:31:13;;;;;;;;;3534:48;;3728:27;;:::i;:::-;3758:316;;;;;;;;3795:12;3758:316;;;;3834:12;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3834:26:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3834:26:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3834:26:13;;;;;;;;;3758:316;;;;3885:10;3758:316;;;;;;3917:6;3758:316;;;;3953:9;3758:316;;;;4004:12;:29;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4004:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4004:31:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4004:31:13;;;;;;;;;3989:12;:46;3758:316;;;;4060:3;3758:316;;;3728:346;;4085:7;4098:8;4085:22;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4085:22:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4117:6;;;;;;;;;;;:18;;;4149:8;:18;;;4181:6;4201:12;4244:1;4227:7;:14;;;;:18;4117:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4117:138:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4117:138:13;;;;1654:1;;2994:1268;;;:::o;7556:5056::-;7862:7;7871;7880;7889:4;7970:11;;;;;;;;;;;:18;;;8006:13;8037:10;:15;;;:27;;;:34;;;8089:10;:15;;;:28;;;8135:10;:19;;;7970:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7970:198:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7970:198:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7970:198:13;;;;;;;;;7949:271;;;;;;;;;;;;;;;;;;;;;;8268:18;8289:11;;;;;;;;;;;:23;;;8326:10;:15;;;:28;;;8368:12;:22;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8368:24:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8368:24:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8368:24:13;;;;;;;;;8289:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8289:113:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8289:113:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8289:113:13;;;;;;;;;8268:134;;8448:3;:8;;;:11;;;8434:10;:25;8413:129;;;;;;;;;;;;;;;;;;;;;;8658:11;:22;8681:3;8658:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8658:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8658:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8658:27:13;;;;;;;;;:38;;;;8697:3;:13;;;8658:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8658:53:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8658:53:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8658:53:13;;;;;;;;;8574:137;;:11;:28;8603:10;:15;;;:27;;;:34;;;8574:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8574:64:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8574:64:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8574:64:13;;;;;;;;;:137;;;8553:206;;;;;;;;;;;;;;;;;;;;;;8873:1;8816:59;;:13;;;;;;;;;;;:30;;;8847:3;:13;;;8816:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8816:45:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8816:45:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8816:45:13;;;;;;;;;:59;;;8812:280;;;9040:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9040:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9040:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9040:27:13;;;;;;;;;9069:1;9072;9075:5;9032:49;;;;;;;;;;;;;;;;;8812:280;9178:11;;;;;;;;;;;:18;;;9214:12;9244:11;:28;9273:3;:8;;;9244:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9244:38:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9244:38:13;;;;;;39:16:-1;36:1;17:17;2:54;9244:38:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9244:38:13;;;;;;;;;9300:18;:28;;;:42;;;9360:18;:27;;;9178:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9178:223:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9178:223:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9178:223:13;;;;;;;;;9157:309;;;;;;;;;;;;;;;;;;;;;;9494:1;9481:3;:10;;;:14;;;9477:241;;;9666:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9666:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9666:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9666:27:13;;;;;;;;;9695:1;9698;9701:5;9658:49;;;;;;;;;;;;;;;;;9477:241;9825:3;:10;;;9778:57;;:18;:28;;;:36;;;:44;;;:57;9774:291;;;10013:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10013:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10013:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10013:27:13;;;;;;;;;10042:1;10045;10048:5;10005:49;;;;;;;;;;;;;;;;;9774:291;10179:3;:13;;;10129:18;:28;;;:36;;;:46;;;:63;10125:290;;10363:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10363:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10363:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10363:27:13;;;;;;;;;10392:1;10395;10398:5;10355:49;;;;;;;;;;;;;;;;;10125:290;10464:38;;:::i;:::-;10505:11;:47;10566:18;:28;;;:36;;;10616:118;10723:3;:10;;;10616:118;;:11;:47;10664:18;:28;;;:36;;;10616:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10616:85:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10616:85:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10616:85:13;;;;;;;;;:106;;:118;;;;:::i;:::-;10505:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10505:239:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10505:239:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10505:239:13;;;;;;;;;10464:280;;10755:15;10773:11;;;;;;;;;;;:34;;;10831:11;:28;10860:13;10831:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10831:43:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10831:43:13;;;;;;39:16:-1;36:1;17:17;2:54;10831:43:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10831:43:13;;;;;;;;;10821:54;;;;;;10889:18;:28;;;:42;;;10945:18;:27;;;10773:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10773:209:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10773:209:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10773:209:13;;;;;;;;;10755:227;;11067:11;;;;;;;;;;;:18;;;11103:7;11128:11;:28;11157:3;:6;;;11128:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11128:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11128:36:13;;;;;;39:16:-1;36:1;17:17;2:54;11128:36:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11128:36:13;;;;;;;;;11182:16;:26;;;:40;;;11240:16;:25;;;11067:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11067:212:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11067:212:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11067:212:13;;;;;;;;;11046:298;;;;;;;;;;;;;;;;;;;;;;11457:3;:13;;;11409:16;:26;;;:34;;;:44;;;:61;11405:288;;11641:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11641:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11641:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11641:27:13;;;;;;;;;11670:1;11673;11676:5;11633:49;;;;;;;;;;;;;;;;;;;11405:288;11742:36;;:::i;:::-;11781:11;:47;11842:16;:26;;;:34;;;11890:116;11995:3;:10;;;11890:116;;:11;:47;11938:16;:26;;;:34;;;11890:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11890:83:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11890:83:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11890:83:13;;;;;;;;;:104;;:116;;;;:::i;:::-;11781:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11781:235:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11781:235:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11781:235:13;;;;;;;;;11742:274;;12061:12;;;;;;;;;;;:19;;;12094:11;:28;12123:11;12094:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12094:41:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12094:41:13;;;;;;39:16:-1;36:1;17:17;2:54;12094:41:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12094:41:13;;;;;;;;;12149:16;:26;;;:40;;;12061:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12061:138:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12061:138:13;;;;12219:11;;;;;;;;;;;:34;;;12277:11;:28;12306:11;12277:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12277:41:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12277:41:13;;;;;;39:16:-1;36:1;17:17;2:54;12277:41:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12277:41:13;;;;;;;;;12267:52;;;;;;12333:16;:26;;;:40;;;12387:16;:25;;;12219:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12219:203:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12219:203:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12219:203:13;;;;;;;;;12209:213;;12454:7;12475:11;:30;12506:13;12475:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12475:45:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12475:45:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12475:45:13;;;;;;;;;12534:11;:30;12565:11;12534:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12534:43:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12534:43:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12534:43:13;;;;;;;;;12591:4;12433:172;;;;;;;;;;;;7556:5056;;;;;;;;;;;;:::o;1278:26::-;;;;;;;;;;;;;:::o;1210:28::-;;;;;;;;;;;;;:::o;1177:27::-;;;;;;;;;;;;;:::o;1136:35::-;;;;;;;;;;;;;:::o;1069:::-;;;;;;;;;;;;;:::o;1033:30::-;;;;;;;;;;;;;:::o;1244:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4518:2709::-;4938:1;4901:7;4909:9;4901:18;;;;;;;;;;;;;;;;;;:33;;;:38;;4880:125;;;;;;;;;;;;;;;;;;;;;;5092:7;5100:9;5092:18;;;;;;;;;;;;;;;;;;:30;;;5077:12;:45;5056:115;;;;;;;;;;;;;;;;;;;;;;5215:18;;5203:9;:30;5182:128;;;;;;;;;;;;;;;;;;;;;;5383:18;5416:9;5428:1;5416:13;;5411:108;5435:4;:11;5431:1;:15;5411:108;;;5476:11;:23;5500:4;5505:1;5500:7;;;;;;;;;;;;;;5476:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5476:32:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5476:32:13;;;;;;39:16:-1;36:1;17:17;2:54;5476:32:13;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5476:32:13;;;;;;;;;5467:3;5471:1;5467:6;;;;;;;;;;;;;:41;;;;5448:3;;;;;;;5411:108;;;;5528:14;5545:11;;;;;;;;;;;:25;;;5571:3;5545:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5545:30:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5545:30:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5545:30:13;;;;;;;;;5528:47;;5725:7;5733:9;5725:18;;;;;;;;;;;;;;;;;;:25;;;5715:6;:35;;5694:120;;;;;;;;;;;;;;;;;;;;;;5889:22;5921:19;5950:17;5977:14;6036:19;6058:5;6036:27;;6079:9;6091:1;6079:13;;6074:578;6098:4;:11;6094:1;:15;6074:578;;;6298:237;6325:7;6333:9;6325:18;;;;;;;;;;;;;;;;;;:28;;;6371:7;6379:9;6371:18;;;;;;;;;;;;;;;;;;:30;;;6419:4;6424:1;6419:7;;;;;;;;;;;;;;6444:10;6455:1;6444:13;;;;;;;;;;;;;;6475:12;6488:1;6475:15;;;;;;;;;;;;;;6508:10;6519:1;6508:13;;;;;;;;;;;;;;6298:9;:237::i;:::-;6244:291;;;;;;;;;;;;;;;;6554:9;6549:93;;6600:4;6583:21;;6622:5;;6549:93;6111:3;;;;;;;6074:578;;;;6728:14;6724:228;;;6880:9;6859:18;:30;;;;6903:18;:16;:18::i;:::-;6935:7;;;;;;;;;6724:228;7084:7;7092:9;7084:18;;;;;;;;;;;;;;;;;;:28;;;7066:14;:46;7062:159;;7149:9;7128:18;:30;;;;7172:18;:16;:18::i;:::-;7204:7;;;;;;;;;7062:159;4518:2709;;;;;;;;;;;;;:::o;12819:1855::-;1731:1;1710:18;;:22;1703:30;;;;12878:25;12906:1;12878:29;;12917:20;12940:1;12917:24;;12951:22;12976:1;12951:26;;12993:9;13022:1;13005:7;:14;;;;:18;12993:30;;12988:1237;13030:18;;13025:1;:23;12988:1237;;13287:12;:31;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13287:33:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13287:33:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13287:33:13;;;;;;;;;13274:9;:46;13270:130;;13380:5;;13270:130;13423:18;;13418:1;:23;13414:167;;;13565:1;13544:18;:22;;;;13414:167;13621:24;;:::i;:::-;13648:7;13656:1;13648:10;;;;;;;;;;;;;;;;;;13621:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13801:1;13796;13773:5;:20;;;:24;13772:30;;;;;;13751:51;;;;13832:43;13857:17;13832:5;:20;;;:24;;:43;;;;:::i;:::-;13816:59;;;;13918:1;13890:7;13898:1;13890:10;;;;;;;;;;;;;;;;;;:25;;:29;;;;13969:7;13977:1;13969:10;;;;;;;;;;;;;;;;;;;13962:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13994:16;;;;;;;14024:6;;;;;;;;;;;:23;;;14065:1;14084:5;:15;;;14117:5;:15;;;14150:5;:12;;;14180:5;:20;;;14024:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14024:190:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14024:190:13;;;;12988:1237;13050:3;;;;;;;;12988:1237;;;;14315:10;14314:21;;:40;14336:17;14314:40;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14314:40:13;14401:27;14431:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14431:27:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14431:27:13;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14431:27:13;;;;;;;;;14401:57;;14469:11;14468:22;;:36;14491:12;14468:36;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14468:36:13;14565:45;14584:25;14607:1;14584:18;;:22;;:25;;;;:::i;:::-;14565:7;:14;;;;:18;;:45;;;;:::i;:::-;14548:7;:62;;;;;:::i;:::-;;14621:6;;;;;;;;;;;:30;;;14652:14;14621:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14621:46:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14621:46:13;;;;1743:1;;;;12819:1855::o;1110:20::-;;;;;;;;;;;;;:::o;14868:600::-;14926:33;;:::i;:::-;14962:7;14970:8;14962:17;;;;;;;;;;;;;;;;;;14926:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15024:14;:24;;;15010:38;;:10;:38;;;14989:133;;;;;;;;;;;;;;;;;;;;;;15168:14;:26;;;15153:12;:41;15132:137;;;;;;;;;;;;;;;;;;;;;;15279:10;:19;;:50;15299:14;:29;;;15279:50;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15279:50:13;15339:6;;;;;;;;;;;:23;;;15376:10;15400:14;:29;;;15443:8;15339:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15339:122:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15339:122:13;;;;14868:600;;:::o;1274:134:1:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;1732:187::-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;778:17895:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;;;68:71;;;;;146:150;;238:6;232:13;223:22;;250:41;285:5;250:41;;;217:79;;;;;321:699;;434:3;427:4;419:6;415:17;411:27;401:2;;452:1;449;442:12;401:2;489:6;476:20;511:76;526:60;579:6;526:60;;;511:76;;;502:85;;604:5;629:6;622:5;615:21;659:4;651:6;647:17;637:27;;681:4;676:3;672:14;665:21;;734:6;781:3;773:4;765:6;761:17;756:3;752:27;749:36;746:2;;;798:1;795;788:12;746:2;823:1;808:206;833:6;830:1;827:13;808:206;;;891:3;913:37;946:3;934:10;913:37;;;908:3;901:50;974:4;969:3;965:14;958:21;;1002:4;997:3;993:14;986:21;;865:149;855:1;852;848:9;843:14;;808:206;;;812:14;394:626;;;;;;;;1044:359;;;1181:3;1174:4;1166:6;1162:17;1158:27;1148:2;;1199:1;1196;1189:12;1148:2;1232:6;1219:20;1209:30;;1259:18;1251:6;1248:30;1245:2;;;1291:1;1288;1281:12;1245:2;1325:4;1317:6;1313:17;1301:29;;1376:3;1368:4;1360:6;1356:17;1346:8;1342:32;1339:41;1336:2;;;1393:1;1390;1383:12;1336:2;1141:262;;;;;;1453:774;;1602:3;1595:4;1587:6;1583:17;1579:27;1569:2;;1620:1;1617;1610:12;1569:2;1657:6;1644:20;1679:112;1694:96;1783:6;1694:96;;;1679:112;;;1670:121;;1808:5;1833:6;1826:5;1819:21;1863:4;1855:6;1851:17;1841:27;;1885:4;1880:3;1876:14;1869:21;;1938:6;1971:1;1956:265;1981:6;1978:1;1975:13;1956:265;;;2064:3;2051:17;2043:6;2039:30;2088:69;2153:3;2141:10;2088:69;;;2083:3;2076:82;2181:4;2176:3;2172:14;2165:21;;2209:4;2204:3;2200:14;2193:21;;2013:208;2003:1;2000;1996:9;1991:14;;1956:265;;;1960:14;1562:665;;;;;;;;2273:762;;2418:3;2411:4;2403:6;2399:17;2395:27;2385:2;;2436:1;2433;2426:12;2385:2;2473:6;2460:20;2495:108;2510:92;2595:6;2510:92;;;2495:108;;;2486:117;;2620:5;2645:6;2638:5;2631:21;2675:4;2667:6;2663:17;2653:27;;2697:4;2692:3;2688:14;2681:21;;2750:6;2783:1;2768:261;2793:6;2790:1;2787:13;2768:261;;;2876:3;2863:17;2855:6;2851:30;2900:65;2961:3;2949:10;2900:65;;;2895:3;2888:78;2989:4;2984:3;2980:14;2973:21;;3017:4;3012:3;3008:14;3001:21;;2825:204;2815:1;2812;2808:9;2803:14;;2768:261;;;2772:14;2378:657;;;;;;;;3078:753;;3220:3;3213:4;3205:6;3201:17;3197:27;3187:2;;3238:1;3235;3228:12;3187:2;3275:6;3262:20;3297:105;3312:89;3394:6;3312:89;;;3297:105;;;3288:114;;3419:5;3444:6;3437:5;3430:21;3474:4;3466:6;3462:17;3452:27;;3496:4;3491:3;3487:14;3480:21;;3549:6;3582:1;3567:258;3592:6;3589:1;3586:13;3567:258;;;3675:3;3662:17;3654:6;3650:30;3699:62;3757:3;3745:10;3699:62;;;3694:3;3687:75;3785:4;3780:3;3776:14;3769:21;;3813:4;3808:3;3804:14;3797:21;;3624:201;3614:1;3611;3607:9;3602:14;;3567:258;;;3571:14;3180:651;;;;;;;;3839:128;;3920:6;3914:13;3905:22;;3932:30;3956:5;3932:30;;;3899:68;;;;;3974:130;;4054:6;4041:20;4032:29;;4066:33;4093:5;4066:33;;;4026:78;;;;;4111:134;;4195:6;4189:13;4180:22;;4207:33;4234:5;4207:33;;;4174:71;;;;;4253:432;;4350:3;4343:4;4335:6;4331:17;4327:27;4317:2;;4368:1;4365;4358:12;4317:2;4405:6;4392:20;4427:60;4442:44;4479:6;4442:44;;;4427:60;;;4418:69;;4507:6;4500:5;4493:21;4543:4;4535:6;4531:17;4576:4;4569:5;4565:16;4611:3;4602:6;4597:3;4593:16;4590:25;4587:2;;;4628:1;4625;4618:12;4587:2;4638:41;4672:6;4667:3;4662;4638:41;;;4310:375;;;;;;;;4694:442;;4806:3;4799:4;4791:6;4787:17;4783:27;4773:2;;4824:1;4821;4814:12;4773:2;4854:6;4848:13;4876:64;4891:48;4932:6;4891:48;;;4876:64;;;4867:73;;4960:6;4953:5;4946:21;4996:4;4988:6;4984:17;5029:4;5022:5;5018:16;5064:3;5055:6;5050:3;5046:16;5043:25;5040:2;;;5081:1;5078;5071:12;5040:2;5091:39;5123:6;5118:3;5113;5091:39;;;4766:370;;;;;;;;5185:514;;5309:4;5297:9;5292:3;5288:19;5284:30;5281:2;;;5327:1;5324;5317:12;5281:2;5345:20;5360:4;5345:20;;;5336:29;;5424:1;5456:49;5501:3;5492:6;5481:9;5477:22;5456:49;;;5449:4;5442:5;5438:16;5431:75;5375:142;5570:2;5603:74;5673:3;5664:6;5653:9;5649:22;5603:74;;;5596:4;5589:5;5585:16;5578:100;5527:162;5275:424;;;;;5744:626;;5865:4;5853:9;5848:3;5844:19;5840:30;5837:2;;;5883:1;5880;5873:12;5837:2;5901:20;5916:4;5901:20;;;5892:29;;5976:1;6008:84;6088:3;6079:6;6068:9;6064:22;6008:84;;;6001:4;5994:5;5990:16;5983:110;5931:173;6186:3;6175:9;6171:19;6158:33;6211:18;6203:6;6200:30;6197:2;;;6243:1;6240;6233:12;6197:2;6278:70;6344:3;6335:6;6324:9;6320:22;6278:70;;;6271:4;6264:5;6260:16;6253:96;6114:246;5831:539;;;;;6415:630;;6540:4;6528:9;6523:3;6519:19;6515:30;6512:2;;;6558:1;6555;6548:12;6512:2;6576:20;6591:4;6576:20;;;6567:29;;6651:1;6683:84;6763:3;6754:6;6743:9;6739:22;6683:84;;;6676:4;6669:5;6665:16;6658:110;6606:173;6861:3;6850:9;6846:19;6833:33;6886:18;6878:6;6875:30;6872:2;;;6918:1;6915;6908:12;6872:2;6953:70;7019:3;7010:6;6999:9;6995:22;6953:70;;;6946:4;6939:5;6935:16;6928:96;6789:246;6506:539;;;;;7089:595;;7209:4;7197:9;7192:3;7188:19;7184:30;7181:2;;;7227:1;7224;7217:12;7181:2;7245:20;7260:4;7245:20;;;7236:29;;7323:1;7355:49;7400:3;7391:6;7380:9;7376:22;7355:49;;;7348:4;7341:5;7337:16;7330:75;7275:141;7501:2;7490:9;7486:18;7473:32;7525:18;7517:6;7514:30;7511:2;;;7557:1;7554;7547:12;7511:2;7592:70;7658:3;7649:6;7638:9;7634:22;7592:70;;;7585:4;7578:5;7574:16;7567:96;7426:248;7175:509;;;;;7718:412;;7828:4;7816:9;7811:3;7807:19;7803:30;7800:2;;;7846:1;7843;7836:12;7800:2;7864:20;7879:4;7864:20;;;7855:29;;7964:1;7953:9;7949:17;7936:31;7987:18;7979:6;7976:30;7973:2;;;8019:1;8016;8009:12;7973:2;8054:54;8104:3;8095:6;8084:9;8080:22;8054:54;;;8047:4;8040:5;8036:16;8029:80;7894:226;7794:336;;;;;8171:698;;8288:4;8276:9;8271:3;8267:19;8263:30;8260:2;;;8306:1;8303;8296:12;8260:2;8324:20;8339:4;8324:20;;;8315:29;;8422:1;8411:9;8407:17;8394:31;8445:18;8437:6;8434:30;8431:2;;;8477:1;8474;8467:12;8431:2;8512:80;8588:3;8579:6;8568:9;8564:22;8512:80;;;8505:4;8498:5;8494:16;8487:106;8354:250;8686:2;8675:9;8671:18;8658:32;8710:18;8702:6;8699:30;8696:2;;;8742:1;8739;8732:12;8696:2;8777:70;8843:3;8834:6;8823:9;8819:22;8777:70;;;8770:4;8763:5;8759:16;8752:96;8614:245;8254:615;;;;;8910:702;;9031:4;9019:9;9014:3;9010:19;9006:30;9003:2;;;9049:1;9046;9039:12;9003:2;9067:20;9082:4;9067:20;;;9058:29;;9165:1;9154:9;9150:17;9137:31;9188:18;9180:6;9177:30;9174:2;;;9220:1;9217;9210:12;9174:2;9255:80;9331:3;9322:6;9311:9;9307:22;9255:80;;;9248:4;9241:5;9237:16;9230:106;9097:250;9429:2;9418:9;9414:18;9401:32;9453:18;9445:6;9442:30;9439:2;;;9485:1;9482;9475:12;9439:2;9520:70;9586:3;9577:6;9566:9;9562:22;9520:70;;;9513:4;9506:5;9502:16;9495:96;9357:245;8997:615;;;;;9650:1055;;9764:6;9752:9;9747:3;9743:19;9739:32;9736:2;;;9784:1;9781;9774:12;9736:2;9802:20;9817:4;9802:20;;;9793:29;;9872:1;9904:74;9974:3;9965:6;9954:9;9950:22;9904:74;;;9897:4;9890:5;9886:16;9879:100;9832:158;10038:3;10072:74;10142:3;10133:6;10122:9;10118:22;10072:74;;;10065:4;10058:5;10054:16;10047:100;10000:158;10213:3;10247:49;10292:3;10283:6;10272:9;10268:22;10247:49;;;10240:4;10233:5;10229:16;10222:75;10168:140;10360:3;10394:48;10438:3;10429:6;10418:9;10414:22;10394:48;;;10387:4;10380:5;10376:16;10369:74;10318:136;10537:3;10526:9;10522:19;10509:33;10562:18;10554:6;10551:30;10548:2;;;10594:1;10591;10584:12;10548:2;10629:54;10679:3;10670:6;10659:9;10655:22;10629:54;;;10622:4;10615:5;10611:16;10604:80;10464:231;9730:975;;;;;10743:1059;;10861:6;10849:9;10844:3;10840:19;10836:32;10833:2;;;10881:1;10878;10871:12;10833:2;10899:20;10914:4;10899:20;;;10890:29;;10969:1;11001:74;11071:3;11062:6;11051:9;11047:22;11001:74;;;10994:4;10987:5;10983:16;10976:100;10929:158;11135:3;11169:74;11239:3;11230:6;11219:9;11215:22;11169:74;;;11162:4;11155:5;11151:16;11144:100;11097:158;11310:3;11344:49;11389:3;11380:6;11369:9;11365:22;11344:49;;;11337:4;11330:5;11326:16;11319:75;11265:140;11457:3;11491:48;11535:3;11526:6;11515:9;11511:22;11491:48;;;11484:4;11477:5;11473:16;11466:74;11415:136;11634:3;11623:9;11619:19;11606:33;11659:18;11651:6;11648:30;11645:2;;;11691:1;11688;11681:12;11645:2;11726:54;11776:3;11767:6;11756:9;11752:22;11726:54;;;11719:4;11712:5;11708:16;11701:80;11561:231;10827:975;;;;;11840:762;;11954:4;11942:9;11937:3;11933:19;11929:30;11926:2;;;11972:1;11969;11962:12;11926:2;11990:20;12005:4;11990:20;;;11981:29;;12058:1;12090:49;12135:3;12126:6;12115:9;12111:22;12090:49;;;12083:4;12076:5;12072:16;12065:75;12020:131;12206:2;12239:49;12284:3;12275:6;12264:9;12260:22;12239:49;;;12232:4;12225:5;12221:16;12214:75;12161:139;12353:2;12386:49;12431:3;12422:6;12411:9;12407:22;12386:49;;;12379:4;12372:5;12368:16;12361:75;12310:137;12498:2;12531:49;12576:3;12567:6;12556:9;12552:22;12531:49;;;12524:4;12517:5;12513:16;12506:75;12457:135;11920:682;;;;;12640:821;;12769:4;12757:9;12752:3;12748:19;12744:30;12741:2;;;12787:1;12784;12777:12;12741:2;12805:20;12820:4;12805:20;;;12796:29;;12873:1;12905:60;12961:3;12952:6;12941:9;12937:22;12905:60;;;12898:4;12891:5;12887:16;12880:86;12835:142;13032:2;13065:60;13121:3;13112:6;13101:9;13097:22;13065:60;;;13058:4;13051:5;13047:16;13040:86;12987:150;13190:2;13223:60;13279:3;13270:6;13259:9;13255:22;13223:60;;;13216:4;13209:5;13205:16;13198:86;13147:148;13346:2;13379:60;13435:3;13426:6;13415:9;13411:22;13379:60;;;13372:4;13365:5;13361:16;13354:86;13305:146;12735:726;;;;;13468:130;;13548:6;13535:20;13526:29;;13560:33;13587:5;13560:33;;;13520:78;;;;;13605:134;;13689:6;13683:13;13674:22;;13701:33;13728:5;13701:33;;;13668:71;;;;;13746:128;;13825:6;13812:20;13803:29;;13837:32;13863:5;13837:32;;;13797:77;;;;;13881:130;;13963:6;13957:13;13948:22;;13975:31;14000:5;13975:31;;;13942:69;;;;;14018:263;;14133:2;14121:9;14112:7;14108:23;14104:32;14101:2;;;14149:1;14146;14139:12;14101:2;14184:1;14201:64;14257:7;14248:6;14237:9;14233:22;14201:64;;;14191:74;;14163:108;14095:186;;;;;14288:279;;14411:2;14399:9;14390:7;14386:23;14382:32;14379:2;;;14427:1;14424;14417:12;14379:2;14462:1;14479:72;14543:7;14534:6;14523:9;14519:22;14479:72;;;14469:82;;14441:116;14373:194;;;;;14574:536;;;;14737:2;14725:9;14716:7;14712:23;14708:32;14705:2;;;14753:1;14750;14743:12;14705:2;14816:1;14805:9;14801:17;14788:31;14839:18;14831:6;14828:30;14825:2;;;14871:1;14868;14861:12;14825:2;14899:87;14978:7;14969:6;14958:9;14954:22;14899:87;;;14889:97;;;;14767:225;15023:2;15041:53;15086:7;15077:6;15066:9;15062:22;15041:53;;;15031:63;;15002:98;14699:411;;;;;;15117:257;;15229:2;15217:9;15208:7;15204:23;15200:32;15197:2;;;15245:1;15242;15235:12;15197:2;15280:1;15297:61;15350:7;15341:6;15330:9;15326:22;15297:61;;;15287:71;;15259:105;15191:183;;;;;15381:263;;15496:2;15484:9;15475:7;15471:23;15467:32;15464:2;;;15512:1;15509;15502:12;15464:2;15547:1;15564:64;15620:7;15611:6;15600:9;15596:22;15564:64;;;15554:74;;15526:108;15458:186;;;;;15651:1479;;;;;;;15973:3;15961:9;15952:7;15948:23;15944:33;15941:2;;;15990:1;15987;15980:12;15941:2;16025:1;16042:53;16087:7;16078:6;16067:9;16063:22;16042:53;;;16032:63;;16004:97;16132:2;16150:53;16195:7;16186:6;16175:9;16171:22;16150:53;;;16140:63;;16111:98;16268:2;16257:9;16253:18;16240:32;16292:18;16284:6;16281:30;16278:2;;;16324:1;16321;16314:12;16278:2;16344:82;16418:7;16409:6;16398:9;16394:22;16344:82;;;16334:92;;16219:213;16491:2;16480:9;16476:18;16463:32;16515:18;16507:6;16504:30;16501:2;;;16547:1;16544;16537:12;16501:2;16567:85;16644:7;16635:6;16624:9;16620:22;16567:85;;;16557:95;;16442:216;16717:3;16706:9;16702:19;16689:33;16742:18;16734:6;16731:30;16728:2;;;16774:1;16771;16764:12;16728:2;16794:89;16875:7;16866:6;16855:9;16851:22;16794:89;;;16784:99;;16668:221;16948:3;16937:9;16933:19;16920:33;16973:18;16965:6;16962:30;16959:2;;;17005:1;17002;16995:12;16959:2;17025:89;17106:7;17097:6;17086:9;17082:22;17025:89;;;17015:99;;16899:221;15935:1195;;;;;;;;;17137:360;;17261:2;17249:9;17240:7;17236:23;17232:32;17229:2;;;17277:1;17274;17267:12;17229:2;17333:1;17322:9;17318:17;17312:24;17356:18;17348:6;17345:30;17342:2;;;17388:1;17385;17378:12;17342:2;17408:73;17473:7;17464:6;17453:9;17449:22;17408:73;;;17398:83;;17291:196;17223:274;;;;;17504:322;;17648:3;17636:9;17627:7;17623:23;17619:33;17616:2;;;17665:1;17662;17655:12;17616:2;17700:1;17717:93;17802:7;17793:6;17782:9;17778:22;17717:93;;;17707:103;;17679:137;17610:216;;;;;17833:241;;17937:2;17925:9;17916:7;17912:23;17908:32;17905:2;;;17953:1;17950;17943:12;17905:2;17988:1;18005:53;18050:7;18041:6;18030:9;18026:22;18005:53;;;17995:63;;17967:97;17899:175;;;;;18081:263;;18196:2;18184:9;18175:7;18171:23;18167:32;18164:2;;;18212:1;18209;18202:12;18164:2;18247:1;18264:64;18320:7;18311:6;18300:9;18296:22;18264:64;;;18254:74;;18226:108;18158:186;;;;;18351:1521;;;;;;18740:3;18728:9;18719:7;18715:23;18711:33;18708:2;;;18757:1;18754;18747:12;18708:2;18792:1;18809:53;18854:7;18845:6;18834:9;18830:22;18809:53;;;18799:63;;18771:97;18927:2;18916:9;18912:18;18899:32;18951:18;18943:6;18940:30;18937:2;;;18983:1;18980;18973:12;18937:2;19003:103;19098:7;19089:6;19078:9;19074:22;19003:103;;;18993:113;;18878:234;19171:2;19160:9;19156:18;19143:32;19195:18;19187:6;19184:30;19181:2;;;19227:1;19224;19217:12;19181:2;19247:110;19349:7;19340:6;19329:9;19325:22;19247:110;;;19237:120;;19122:241;19422:2;19411:9;19407:18;19394:32;19446:18;19438:6;19435:30;19432:2;;;19478:1;19475;19468:12;19432:2;19498:106;19596:7;19587:6;19576:9;19572:22;19498:106;;;19488:116;;19373:237;19669:3;19658:9;19654:19;19641:33;19694:18;19686:6;19683:30;19680:2;;;19726:1;19723;19716:12;19680:2;19746:110;19848:7;19839:6;19828:9;19824:22;19746:110;;;19736:120;;19620:242;18702:1170;;;;;;;;;19879:259;;19992:2;19980:9;19971:7;19967:23;19963:32;19960:2;;;20008:1;20005;19998:12;19960:2;20043:1;20060:62;20114:7;20105:6;20094:9;20090:22;20060:62;;;20050:72;;20022:106;19954:184;;;;;20146:173;;20233:46;20275:3;20267:6;20233:46;;;20308:4;20303:3;20299:14;20285:28;;20226:93;;;;;20328:197;;20449:70;20515:3;20507:6;20499;20449:70;;;20435:84;;20428:97;;;;;;20534:177;;20645:60;20701:3;20693:6;20645:60;;;20631:74;;20624:87;;;;;20719:142;20810:45;20849:5;20810:45;;;20805:3;20798:58;20792:69;;;20868:113;20951:24;20969:5;20951:24;;;20946:3;20939:37;20933:48;;;21019:674;;21160:50;21204:5;21160:50;;;21223:86;21302:6;21297:3;21223:86;;;21216:93;;21330:52;21376:5;21330:52;;;21402:7;21430:1;21415:256;21440:6;21437:1;21434:13;21415:256;;;21507:6;21501:13;21528:63;21587:3;21572:13;21528:63;;;21521:70;;21608:56;21657:6;21608:56;;;21598:66;;21472:199;21462:1;21459;21455:9;21450:14;;21415:256;;;21419:14;21684:3;21677:10;;21139:554;;;;;;;;21728:903;;21894:91;21978:6;21973:3;21894:91;;;21887:98;;22008:3;22050:4;22042:6;22038:17;22033:3;22029:27;22077:65;22136:5;22077:65;;;22162:7;22190:1;22175:417;22200:6;22197:1;22194:13;22175:417;;;22262:9;22256:4;22252:20;22247:3;22240:33;22316:49;22358:6;22349:7;22316:49;;;22380:91;22466:4;22451:13;22436;22380:91;;;22372:99;;22488:69;22550:6;22488:69;;;22478:79;;22580:4;22575:3;22571:14;22564:21;;22232:360;;22222:1;22219;22215:9;22210:14;;22175:417;;;22179:14;22605:4;22598:11;;22622:3;22615:10;;21874:757;;;;;;;;;;22666:888;;22821:59;22874:5;22821:59;;;22893:91;22977:6;22972:3;22893:91;;;22886:98;;23007:3;23049:4;23041:6;23037:17;23032:3;23028:27;23076:61;23131:5;23076:61;;;23157:7;23185:1;23170:345;23195:6;23192:1;23189:13;23170:345;;;23257:9;23251:4;23247:20;23242:3;23235:33;23302:6;23296:13;23324:74;23393:4;23378:13;23324:74;;;23316:82;;23415:65;23473:6;23415:65;;;23405:75;;23503:4;23498:3;23494:14;23487:21;;23227:288;23217:1;23214;23210:9;23205:14;;23170:345;;;23174:14;23528:4;23521:11;;23545:3;23538:10;;22800:754;;;;;;;;;;23562:104;23639:21;23654:5;23639:21;;;23634:3;23627:34;23621:45;;;23673:103;23746:24;23764:5;23746:24;;;23741:3;23734:37;23728:48;;;23783:113;23866:24;23884:5;23866:24;;;23861:3;23854:37;23848:48;;;23903:121;23994:24;24012:5;23994:24;;;23989:3;23982:37;23976:48;;;24054:273;;24154:60;24207:6;24202:3;24154:60;;;24147:67;;24226:43;24262:6;24257:3;24250:5;24226:43;;;24291:29;24313:6;24291:29;;;24286:3;24282:39;24275:46;;24140:187;;;;;;24335:343;;24445:38;24477:5;24445:38;;;24495:70;24558:6;24553:3;24495:70;;;24488:77;;24570:52;24615:6;24610:3;24603:4;24596:5;24592:16;24570:52;;;24643:29;24665:6;24643:29;;;24638:3;24634:39;24627:46;;24425:253;;;;;;24685:315;;24781:34;24809:5;24781:34;;;24827:60;24880:6;24875:3;24827:60;;;24820:67;;24892:52;24937:6;24932:3;24925:4;24918:5;24914:16;24892:52;;;24965:29;24987:6;24965:29;;;24960:3;24956:39;24949:46;;24761:239;;;;;;25007:335;;25113:34;25141:5;25113:34;;;25159:70;25222:6;25217:3;25159:70;;;25152:77;;25234:52;25279:6;25274:3;25267:4;25260:5;25256:16;25234:52;;;25307:29;25329:6;25307:29;;;25302:3;25298:39;25291:46;;25093:249;;;;;;25349:351;;25463:34;25491:5;25463:34;;;25509:78;25580:6;25575:3;25509:78;;;25502:85;;25592:52;25637:6;25632:3;25625:4;25618:5;25614:16;25592:52;;;25665:29;25687:6;25665:29;;;25660:3;25656:39;25649:46;;25443:257;;;;;;25707:331;;25811:34;25839:5;25811:34;;;25857:68;25918:6;25913:3;25857:68;;;25850:75;;25930:52;25975:6;25970:3;25963:4;25956:5;25952:16;25930:52;;;26003:29;26025:6;26003:29;;;25998:3;25994:39;25987:46;;25791:247;;;;;;26045:156;26143:52;26189:5;26143:52;;;26138:3;26131:65;26125:76;;;26208:172;26314:60;26368:5;26314:60;;;26309:3;26302:73;26296:84;;;26387:174;26494:61;26549:5;26494:61;;;26489:3;26482:74;26476:85;;;26568:156;26666:52;26712:5;26666:52;;;26661:3;26654:65;26648:76;;;26731:174;26838:61;26893:5;26838:61;;;26833:3;26826:74;26820:85;;;26912:168;27016:58;27068:5;27016:58;;;27011:3;27004:71;26998:82;;;27087:152;27183:50;27227:5;27183:50;;;27178:3;27171:63;27165:74;;;27246:347;;27358:39;27391:5;27358:39;;;27409:71;27473:6;27468:3;27409:71;;;27402:78;;27485:52;27530:6;27525:3;27518:4;27511:5;27507:16;27485:52;;;27558:29;27580:6;27558:29;;;27553:3;27549:39;27542:46;;27338:255;;;;;;27601:383;;27761:67;27825:2;27820:3;27761:67;;;27754:74;;27861:34;27857:1;27852:3;27848:11;27841:55;27930:16;27925:2;27920:3;27916:12;27909:38;27975:2;27970:3;27966:12;27959:19;;27747:237;;;;27993:377;;28153:67;28217:2;28212:3;28153:67;;;28146:74;;28253:34;28249:1;28244:3;28240:11;28233:55;28322:10;28317:2;28312:3;28308:12;28301:32;28361:2;28356:3;28352:12;28345:19;;28139:231;;;;28379:327;;28539:67;28603:2;28598:3;28539:67;;;28532:74;;28639:29;28635:1;28630:3;28626:11;28619:50;28697:2;28692:3;28688:12;28681:19;;28525:181;;;;28715:375;;28875:67;28939:2;28934:3;28875:67;;;28868:74;;28975:34;28971:1;28966:3;28962:11;28955:55;29044:8;29039:2;29034:3;29030:12;29023:30;29081:2;29076:3;29072:12;29065:19;;28861:229;;;;29099:385;;29259:67;29323:2;29318:3;29259:67;;;29252:74;;29359:34;29355:1;29350:3;29346:11;29339:55;29428:18;29423:2;29418:3;29414:12;29407:40;29475:2;29470:3;29466:12;29459:19;;29245:239;;;;29493:386;;29653:67;29717:2;29712:3;29653:67;;;29646:74;;29753:34;29749:1;29744:3;29740:11;29733:55;29822:19;29817:2;29812:3;29808:12;29801:41;29870:2;29865:3;29861:12;29854:19;;29639:240;;;;29888:323;;30048:67;30112:2;30107:3;30048:67;;;30041:74;;30148:25;30144:1;30139:3;30135:11;30128:46;30202:2;30197:3;30193:12;30186:19;;30034:177;;;;30220:326;;30380:67;30444:2;30439:3;30380:67;;;30373:74;;30480:28;30476:1;30471:3;30467:11;30460:49;30537:2;30532:3;30528:12;30521:19;;30366:180;;;;30555:375;;30715:67;30779:2;30774:3;30715:67;;;30708:74;;30815:34;30811:1;30806:3;30802:11;30795:55;30884:8;30879:2;30874:3;30870:12;30863:30;30921:2;30916:3;30912:12;30905:19;;30701:229;;;;30939:376;;31099:67;31163:2;31158:3;31099:67;;;31092:74;;31199:34;31195:1;31190:3;31186:11;31179:55;31268:9;31263:2;31258:3;31254:12;31247:31;31306:2;31301:3;31297:12;31290:19;;31085:230;;;;31324:388;;31484:67;31548:2;31543:3;31484:67;;;31477:74;;31584:34;31580:1;31575:3;31571:11;31564:55;31653:21;31648:2;31643:3;31639:12;31632:43;31703:2;31698:3;31694:12;31687:19;;31470:242;;;;31721:322;;31881:67;31945:2;31940:3;31881:67;;;31874:74;;31981:24;31977:1;31972:3;31968:11;31961:45;32034:2;32029:3;32025:12;32018:19;;31867:176;;;;32052:394;;32212:67;32276:2;32271:3;32212:67;;;32205:74;;32312:34;32308:1;32303:3;32299:11;32292:55;32381:27;32376:2;32371:3;32367:12;32360:49;32437:2;32432:3;32428:12;32421:19;;32198:248;;;;32513:1207;;32680:6;32675:3;32671:16;32765:4;32758:5;32754:16;32748:23;32777:125;32896:4;32891:3;32887:14;32873:12;32777:125;;;32702:206;32979:4;32972:5;32968:16;32962:23;32991:125;33110:4;33105:3;33101:14;33087:12;32991:125;;;32918:204;33200:4;33193:5;33189:16;33183:23;33212:73;33277:6;33272:3;33268:16;33254:12;33212:73;;;33132:159;33366:4;33359:5;33355:16;33349:23;33378:71;33441:6;33436:3;33432:16;33418:12;33378:71;;;33301:154;33533:4;33526:5;33522:16;33516:23;33587:3;33581:4;33577:14;33568:6;33563:3;33559:16;33552:40;33607:75;33677:4;33663:12;33607:75;;;33599:83;;33465:229;33711:4;33704:11;;32653:1067;;;;;;33786:1203;;33949:6;33944:3;33940:16;34034:4;34027:5;34023:16;34017:23;34046:125;34165:4;34160:3;34156:14;34142:12;34046:125;;;33971:206;34248:4;34241:5;34237:16;34231:23;34260:125;34379:4;34374:3;34370:14;34356:12;34260:125;;;34187:204;34469:4;34462:5;34458:16;34452:23;34481:73;34546:6;34541:3;34537:16;34523:12;34481:73;;;34401:159;34635:4;34628:5;34624:16;34618:23;34647:71;34710:6;34705:3;34701:16;34687:12;34647:71;;;34570:154;34802:4;34795:5;34791:16;34785:23;34856:3;34850:4;34846:14;34837:6;34832:3;34828:16;34821:40;34876:75;34946:4;34932:12;34876:75;;;34868:83;;34734:229;34980:4;34973:11;;33922:1067;;;;;;35055:839;35214:4;35209:3;35205:14;35295:4;35288:5;35284:16;35278:23;35307:71;35372:4;35367:3;35363:14;35349:12;35307:71;;;35234:150;35462:4;35455:5;35451:16;35445:23;35474:71;35539:4;35534:3;35530:14;35516:12;35474:71;;;35394:157;35627:4;35620:5;35616:16;35610:23;35639:71;35704:4;35699:3;35695:14;35681:12;35639:71;;;35561:155;35790:4;35783:5;35779:16;35773:23;35802:71;35867:4;35862:3;35858:14;35844:12;35802:71;;;35726:153;35187:707;;;;35960:835;36115:4;36110:3;36106:14;36196:4;36189:5;36185:16;36179:23;36208:71;36273:4;36268:3;36264:14;36250:12;36208:71;;;36135:150;36363:4;36356:5;36352:16;36346:23;36375:71;36440:4;36435:3;36431:14;36417:12;36375:71;;;36295:157;36528:4;36521:5;36517:16;36511:23;36540:71;36605:4;36600:3;36596:14;36582:12;36540:71;;;36462:155;36691:4;36684:5;36680:16;36674:23;36703:71;36768:4;36763:3;36759:14;36745:12;36703:71;;;36627:153;36088:707;;;;36861:825;37006:4;37001:3;36997:14;37087:4;37080:5;37076:16;37070:23;37099:71;37164:4;37159:3;37155:14;37141:12;37099:71;;;37026:150;37254:4;37247:5;37243:16;37237:23;37266:71;37331:4;37326:3;37322:14;37308:12;37266:71;;;37186:157;37419:4;37412:5;37408:16;37402:23;37431:71;37496:4;37491:3;37487:14;37473:12;37431:71;;;37353:155;37582:4;37575:5;37571:16;37565:23;37594:71;37659:4;37654:3;37650:14;37636:12;37594:71;;;37518:153;36979:707;;;;37693:113;37776:24;37794:5;37776:24;;;37771:3;37764:37;37758:48;;;37813:121;37904:24;37922:5;37904:24;;;37899:3;37892:37;37886:48;;;37941:111;38022:24;38040:5;38022:24;;;38017:3;38010:37;38004:48;;;38059:108;38138:23;38155:5;38138:23;;;38133:3;38126:36;38120:47;;;38174:122;38255:35;38284:5;38255:35;;;38250:3;38243:48;38237:59;;;38303:451;;38485:2;38474:9;38470:18;38462:26;;38499:79;38575:1;38564:9;38560:17;38551:6;38499:79;;;38589:72;38657:2;38646:9;38642:18;38633:6;38589:72;;;38672;38740:2;38729:9;38725:18;38716:6;38672:72;;;38456:298;;;;;;;38761:547;;38963:3;38952:9;38948:19;38940:27;;38978:71;39046:1;39035:9;39031:17;39022:6;38978:71;;;39060:72;39128:2;39117:9;39113:18;39104:6;39060:72;;;39143;39211:2;39200:9;39196:18;39187:6;39143:72;;;39226;39294:2;39283:9;39279:18;39270:6;39226:72;;;38934:374;;;;;;;;39315:405;;39505:2;39494:9;39490:18;39482:26;;39555:9;39549:4;39545:20;39541:1;39530:9;39526:17;39519:47;39580:130;39705:4;39696:6;39688;39580:130;;;39572:138;;39476:244;;;;;;39727:381;;39905:2;39894:9;39890:18;39882:26;;39955:9;39949:4;39945:20;39941:1;39930:9;39926:17;39919:47;39980:118;40093:4;40084:6;39980:118;;;39972:126;;39876:232;;;;;40115:883;;40401:3;40390:9;40386:19;40378:27;;40416:71;40484:1;40473:9;40469:17;40460:6;40416:71;;;40498:72;40566:2;40555:9;40551:18;40542:6;40498:72;;;40581;40649:2;40638:9;40634:18;40625:6;40581:72;;;40664;40732:2;40721:9;40717:18;40708:6;40664:72;;;40747:73;40815:3;40804:9;40800:19;40791:6;40747:73;;;40831;40899:3;40888:9;40884:19;40875:6;40831:73;;;40915;40983:3;40972:9;40968:19;40959:6;40915:73;;;40372:626;;;;;;;;;;;41005:424;;41173:2;41162:9;41158:18;41150:26;;41187:79;41263:1;41252:9;41248:17;41239:6;41187:79;;;41314:9;41308:4;41304:20;41299:2;41288:9;41284:18;41277:48;41339:80;41414:4;41405:6;41339:80;;;41331:88;;41144:285;;;;;;41436:771;;41702:3;41691:9;41687:19;41679:27;;41717:71;41785:1;41774:9;41770:17;41761:6;41717:71;;;41836:9;41830:4;41826:20;41821:2;41810:9;41806:18;41799:48;41861:76;41932:4;41923:6;41861:76;;;41853:84;;41948:72;42016:2;42005:9;42001:18;41992:6;41948:72;;;42068:9;42062:4;42058:20;42053:2;42042:9;42038:18;42031:48;42093:104;42192:4;42183:6;42093:104;;;42085:112;;41673:534;;;;;;;;42214:763;;42476:3;42465:9;42461:19;42453:27;;42491:71;42559:1;42548:9;42544:17;42535:6;42491:71;;;42610:9;42604:4;42600:20;42595:2;42584:9;42580:18;42573:48;42635:72;42702:4;42693:6;42635:72;;;42627:80;;42718:72;42786:2;42775:9;42771:18;42762:6;42718:72;;;42838:9;42832:4;42828:20;42823:2;42812:9;42808:18;42801:48;42863:104;42962:4;42953:6;42863:104;;;42855:112;;42447:530;;;;;;;;42984:575;;43204:2;43193:9;43189:18;43181:26;;43218:71;43286:1;43275:9;43271:17;43262:6;43218:71;;;43300:72;43368:2;43357:9;43353:18;43344:6;43300:72;;;43420:9;43414:4;43410:20;43405:2;43394:9;43390:18;43383:48;43445:104;43544:4;43535:6;43445:104;;;43437:112;;43175:384;;;;;;;43566:535;;43762:3;43751:9;43747:19;43739:27;;43777:71;43845:1;43834:9;43830:17;43821:6;43777:71;;;43859:72;43927:2;43916:9;43912:18;43903:6;43859:72;;;43942;44010:2;43999:9;43995:18;43986:6;43942:72;;;44025:66;44087:2;44076:9;44072:18;44063:6;44025:66;;;43733:368;;;;;;;;44108:305;;44248:2;44237:9;44233:18;44225:26;;44298:9;44292:4;44288:20;44284:1;44273:9;44269:17;44262:47;44323:80;44398:4;44389:6;44323:80;;;44315:88;;44219:194;;;;;44420:408;;44584:2;44573:9;44569:18;44561:26;;44634:9;44628:4;44624:20;44620:1;44609:9;44605:17;44598:47;44659:76;44730:4;44721:6;44659:76;;;44651:84;;44746:72;44814:2;44803:9;44799:18;44790:6;44746:72;;;44555:273;;;;;;44835:243;;44968:2;44957:9;44953:18;44945:26;;44982:86;45065:1;45054:9;45050:17;45041:6;44982:86;;;44939:139;;;;;45085:259;;45226:2;45215:9;45211:18;45203:26;;45240:94;45331:1;45320:9;45316:17;45307:6;45240:94;;;45197:147;;;;;45351:261;;45493:2;45482:9;45478:18;45470:26;;45507:95;45599:1;45588:9;45584:17;45575:6;45507:95;;;45464:148;;;;;45619:243;;45752:2;45741:9;45737:18;45729:26;;45766:86;45849:1;45838:9;45834:17;45825:6;45766:86;;;45723:139;;;;;45869:261;;46011:2;46000:9;45996:18;45988:26;;46025:95;46117:1;46106:9;46102:17;46093:6;46025:95;;;45982:148;;;;;46137:255;;46276:2;46265:9;46261:18;46253:26;;46290:92;46379:1;46368:9;46364:17;46355:6;46290:92;;;46247:145;;;;;46399:239;;46530:2;46519:9;46515:18;46507:26;;46544:84;46625:1;46614:9;46610:17;46601:6;46544:84;;;46501:137;;;;;46645:301;;46783:2;46772:9;46768:18;46760:26;;46833:9;46827:4;46823:20;46819:1;46808:9;46804:17;46797:47;46858:78;46931:4;46922:6;46858:78;;;46850:86;;46754:192;;;;;46953:407;;47144:2;47133:9;47129:18;47121:26;;47194:9;47188:4;47184:20;47180:1;47169:9;47165:17;47158:47;47219:131;47345:4;47219:131;;;47211:139;;47115:245;;;;47367:407;;47558:2;47547:9;47543:18;47535:26;;47608:9;47602:4;47598:20;47594:1;47583:9;47579:17;47572:47;47633:131;47759:4;47633:131;;;47625:139;;47529:245;;;;47781:407;;47972:2;47961:9;47957:18;47949:26;;48022:9;48016:4;48012:20;48008:1;47997:9;47993:17;47986:47;48047:131;48173:4;48047:131;;;48039:139;;47943:245;;;;48195:407;;48386:2;48375:9;48371:18;48363:26;;48436:9;48430:4;48426:20;48422:1;48411:9;48407:17;48400:47;48461:131;48587:4;48461:131;;;48453:139;;48357:245;;;;48609:407;;48800:2;48789:9;48785:18;48777:26;;48850:9;48844:4;48840:20;48836:1;48825:9;48821:17;48814:47;48875:131;49001:4;48875:131;;;48867:139;;48771:245;;;;49023:407;;49214:2;49203:9;49199:18;49191:26;;49264:9;49258:4;49254:20;49250:1;49239:9;49235:17;49228:47;49289:131;49415:4;49289:131;;;49281:139;;49185:245;;;;49437:407;;49628:2;49617:9;49613:18;49605:26;;49678:9;49672:4;49668:20;49664:1;49653:9;49649:17;49642:47;49703:131;49829:4;49703:131;;;49695:139;;49599:245;;;;49851:407;;50042:2;50031:9;50027:18;50019:26;;50092:9;50086:4;50082:20;50078:1;50067:9;50063:17;50056:47;50117:131;50243:4;50117:131;;;50109:139;;50013:245;;;;50265:407;;50456:2;50445:9;50441:18;50433:26;;50506:9;50500:4;50496:20;50492:1;50481:9;50477:17;50470:47;50531:131;50657:4;50531:131;;;50523:139;;50427:245;;;;50679:407;;50870:2;50859:9;50855:18;50847:26;;50920:9;50914:4;50910:20;50906:1;50895:9;50891:17;50884:47;50945:131;51071:4;50945:131;;;50937:139;;50841:245;;;;51093:407;;51284:2;51273:9;51269:18;51261:26;;51334:9;51328:4;51324:20;51320:1;51309:9;51305:17;51298:47;51359:131;51485:4;51359:131;;;51351:139;;51255:245;;;;51507:407;;51698:2;51687:9;51683:18;51675:26;;51748:9;51742:4;51738:20;51734:1;51723:9;51719:17;51712:47;51773:131;51899:4;51773:131;;;51765:139;;51669:245;;;;51921:407;;52112:2;52101:9;52097:18;52089:26;;52162:9;52156:4;52152:20;52148:1;52137:9;52133:17;52126:47;52187:131;52313:4;52187:131;;;52179:139;;52083:245;;;;52335:385;;52515:2;52504:9;52500:18;52492:26;;52565:9;52559:4;52555:20;52551:1;52540:9;52536:17;52529:47;52590:120;52705:4;52696:6;52590:120;;;52582:128;;52486:234;;;;;52727:393;;52911:2;52900:9;52896:18;52888:26;;52961:9;52955:4;52951:20;52947:1;52936:9;52932:17;52925:47;52986:124;53105:4;53096:6;52986:124;;;52978:132;;52882:238;;;;;53127:338;;53307:3;53296:9;53292:19;53284:27;;53322:133;53452:1;53441:9;53437:17;53428:6;53322:133;;;53278:187;;;;;53472:346;;53656:3;53645:9;53641:19;53633:27;;53671:137;53805:1;53794:9;53790:17;53781:6;53671:137;;;53627:191;;;;;53825:458;;54033:3;54022:9;54018:19;54010:27;;54048:133;54178:1;54167:9;54163:17;54154:6;54048:133;;;54192:81;54268:3;54257:9;54253:19;54244:6;54192:81;;;54004:279;;;;;;54290:213;;54408:2;54397:9;54393:18;54385:26;;54422:71;54490:1;54479:9;54475:17;54466:6;54422:71;;;54379:124;;;;;54510:659;;54740:3;54729:9;54725:19;54717:27;;54755:71;54823:1;54812:9;54808:17;54799:6;54755:71;;;54837:72;54905:2;54894:9;54890:18;54881:6;54837:72;;;54920;54988:2;54977:9;54973:18;54964:6;54920:72;;;55003;55071:2;55060:9;55056:18;55047:6;55003:72;;;55086:73;55154:3;55143:9;55139:19;55130:6;55086:73;;;54711:458;;;;;;;;;55176:320;;55320:2;55309:9;55305:18;55297:26;;55334:71;55402:1;55391:9;55387:17;55378:6;55334:71;;;55416:70;55482:2;55471:9;55467:18;55458:6;55416:70;;;55291:205;;;;;;55503:256;;55565:2;55559:9;55549:19;;55603:4;55595:6;55591:17;55702:6;55690:10;55687:22;55666:18;55654:10;55651:34;55648:62;55645:2;;;55723:1;55720;55713:12;55645:2;55743:10;55739:2;55732:22;55543:216;;;;;55766:300;;55921:18;55913:6;55910:30;55907:2;;;55953:1;55950;55943:12;55907:2;55988:4;55980:6;55976:17;55968:25;;56051:4;56045;56041:15;56033:23;;55844:222;;;;56073:336;;56264:18;56256:6;56253:30;56250:2;;;56296:1;56293;56286:12;56250:2;56331:4;56323:6;56319:17;56311:25;;56394:4;56388;56384:15;56376:23;;56187:222;;;;56416:332;;56603:18;56595:6;56592:30;56589:2;;;56635:1;56632;56625:12;56589:2;56670:4;56662:6;56658:17;56650:25;;56733:4;56727;56723:15;56715:23;;56526:222;;;;56755:329;;56939:18;56931:6;56928:30;56925:2;;;56971:1;56968;56961:12;56925:2;57006:4;56998:6;56994:17;56986:25;;57069:4;57063;57059:15;57051:23;;56862:222;;;;57091:317;;57230:18;57222:6;57219:30;57216:2;;;57262:1;57259;57252:12;57216:2;57329:4;57325:9;57318:4;57310:6;57306:17;57302:33;57294:41;;57393:4;57387;57383:15;57375:23;;57153:255;;;;57415:321;;57558:18;57550:6;57547:30;57544:2;;;57590:1;57587;57580:12;57544:2;57657:4;57653:9;57646:4;57638:6;57634:17;57630:33;57622:41;;57721:4;57715;57711:15;57703:23;;57481:255;;;;57743:147;;57825:3;57817:11;;57863:4;57858:3;57854:14;57846:22;;57811:79;;;;57897:125;;57992:3;57984:11;;57978:44;;;;58029:156;;58120:3;58112:11;;58158:4;58153:3;58149:14;58141:22;;58106:79;;;;58192:133;;58297:5;58291:12;58281:22;;58262:63;;;;58332:142;;58446:5;58440:12;58430:22;;58411:63;;;;58481:117;;58570:5;58564:12;58554:22;;58535:63;;;;58605:121;;58698:5;58692:12;58682:22;;58663:63;;;;58733:122;;58827:5;58821:12;58811:22;;58792:63;;;;58862:104;;58956:4;58951:3;58947:14;58939:22;;58933:33;;;;58973:117;;59080:4;59075:3;59071:14;59063:22;;59057:33;;;;59097:113;;59200:4;59195:3;59191:14;59183:22;;59177:33;;;;59218:178;;59348:6;59343:3;59336:19;59385:4;59380:3;59376:14;59361:29;;59329:67;;;;;59405:183;;59540:6;59535:3;59528:19;59577:4;59572:3;59568:14;59553:29;;59521:67;;;;;59597:152;;59701:6;59696:3;59689:19;59738:4;59733:3;59729:14;59714:29;;59682:67;;;;;59758:162;;59872:6;59867:3;59860:19;59909:4;59904:3;59900:14;59885:29;;59853:67;;;;;59929:170;;60051:6;60046:3;60039:19;60088:4;60083:3;60079:14;60064:29;;60032:67;;;;;60108:160;;60220:6;60215:3;60208:19;60257:4;60252:3;60248:14;60233:29;;60201:67;;;;;60277:163;;60392:6;60387:3;60380:19;60429:4;60424:3;60420:14;60405:29;;60373:67;;;;;60449:497;;;60569:3;60556:17;60658:1;60652:4;60648:12;60637:8;60621:14;60617:29;60613:48;60593:18;60589:73;60579:2;;60676:1;60673;60666:12;60579:2;60719:8;60699:18;60695:33;60686:42;;60763:5;60750:19;60740:29;;60795:4;60788:5;60784:16;60775:25;;60820:18;60812:6;60809:30;60806:2;;;60852:1;60849;60842:12;60806:2;60911:4;60903:6;60899:17;60883:14;60879:38;60869:8;60865:53;60862:2;;;60931:1;60928;60921:12;60862:2;60523:423;;;;;;;60954:91;;61016:24;61034:5;61016:24;;;61005:35;;60999:46;;;;61052:99;;61122:24;61140:5;61122:24;;;61111:35;;61105:46;;;;61158:85;;61231:5;61224:13;61217:21;61206:32;;61200:43;;;;61250:72;;61312:5;61301:16;;61295:27;;;;61329:121;;61402:42;61395:5;61391:54;61380:65;;61374:76;;;;61457:72;;61519:5;61508:16;;61502:27;;;;61536:88;;61608:10;61601:5;61597:22;61586:33;;61580:44;;;;61631:81;;61702:4;61695:5;61691:16;61680:27;;61674:38;;;;61719:129;;61806:37;61837:5;61806:37;;;61793:50;;61787:61;;;;61855:151;;61949:52;61995:5;61949:52;;;61936:65;;61930:76;;;;62013:123;;62107:24;62125:5;62107:24;;;62094:37;;62088:48;;;;62143:167;;62245:60;62299:5;62245:60;;;62232:73;;62226:84;;;;62317:131;;62419:24;62437:5;62419:24;;;62406:37;;62400:48;;;;62455:169;;62558:61;62613:5;62558:61;;;62545:74;;62539:85;;;;62631:132;;62734:24;62752:5;62734:24;;;62721:37;;62715:48;;;;62770:151;;62864:52;62910:5;62864:52;;;62851:65;;62845:76;;;;62928:123;;63022:24;63040:5;63022:24;;;63009:37;;63003:48;;;;63058:169;;63161:61;63216:5;63161:61;;;63148:74;;63142:85;;;;63234:132;;63337:24;63355:5;63337:24;;;63324:37;;63318:48;;;;63373:163;;63473:58;63525:5;63473:58;;;63460:71;;63454:82;;;;63543:129;;63643:24;63661:5;63643:24;;;63630:37;;63624:48;;;;63679:147;;63771:50;63815:5;63771:50;;;63758:63;;63752:74;;;;63833:121;;63925:24;63943:5;63925:24;;;63912:37;;63906:48;;;;63961:121;;64040:37;64071:5;64040:37;;;64027:50;;64021:61;;;;64089:108;;64168:24;64186:5;64168:24;;;64155:37;;64149:48;;;;64204:104;;64281:22;64297:5;64281:22;;;64268:35;;64262:46;;;;64316:145;64397:6;64392:3;64387;64374:30;64453:1;64444:6;64439:3;64435:16;64428:27;64367:94;;;;64470:268;64535:1;64542:101;64556:6;64553:1;64550:13;64542:101;;;64632:1;64627:3;64623:11;64617:18;64613:1;64608:3;64604:11;64597:39;64578:2;64575:1;64571:10;64566:15;;64542:101;;;64658:6;64655:1;64652:13;64649:2;;;64723:1;64714:6;64709:3;64705:16;64698:27;64649:2;64519:219;;;;;64746:97;;64834:2;64830:7;64825:2;64818:5;64814:14;64810:28;64800:38;;64794:49;;;;64851:117;64920:24;64938:5;64920:24;;;64913:5;64910:35;64900:2;;64959:1;64956;64949:12;64900:2;64894:74;;64975:133;65052:32;65078:5;65052:32;;;65045:5;65042:43;65032:2;;65099:1;65096;65089:12;65032:2;65026:82;;65115:111;65181:21;65196:5;65181:21;;;65174:5;65171:32;65161:2;;65217:1;65214;65207:12;65161:2;65155:71;;65233:117;65302:24;65320:5;65302:24;;;65295:5;65292:35;65282:2;;65341:1;65338;65331:12;65282:2;65276:74;;65357:117;65426:24;65444:5;65426:24;;;65419:5;65416:35;65406:2;;65465:1;65462;65455:12;65406:2;65400:74;;65481:115;65549:23;65566:5;65549:23;;;65542:5;65539:34;65529:2;;65587:1;65584;65577:12;65529:2;65523:73;;65603:113;65670:22;65686:5;65670:22;;;65663:5;65660:33;65650:2;;65707:1;65704;65697:12;65650:2;65644:72;" + }, + "methodIdentifiers": { + "SlashAndRollback()": "df070983", + "WithdrawStake(uint256)": "ff34585d", + "accountsTree()": "ae2926d4", + "balancesTree()": "b2692d77", + "batches(uint256)": "b32c4d8d", + "disputeBatch(uint256,((uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256),uint256,uint32,bytes)[],((uint256,(uint256,uint256,uint256,uint256)),bytes32[])[],((uint256,(bytes)),bytes32[])[],((uint256,(uint256,uint256,uint256,uint256)),bytes32[])[])": "defd34e3", + "logger()": "f24ccbfe", + "merkleUtils()": "47b0f08e", + "nameRegistry()": "4eb7221a", + "processTx(bytes32,bytes32,((uint256,uint256,uint256,uint256),(uint256,uint256,uint256,uint256),uint256,uint32,bytes),((uint256,(bytes)),bytes32[]),((uint256,(uint256,uint256,uint256,uint256)),bytes32[]),((uint256,(uint256,uint256,uint256,uint256)),bytes32[]))": "4643dde4", + "submitBatch(bytes[],bytes32)": "0e981757", + "tokenContract()": "55a373d6", + "tokenRegistry()": "9d23c4c7" + } + } + } + }, + "contracts/TestToken.sol": { + "TestToken": { + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060006100216100da60201b60201c565b905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100d53364174876e8006100e260201b60201c565b61032d565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61019e816002546102a560201b610fac1790919060201c565b6002819055506101f9816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546102a560201b610fac1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080828401905083811015610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6112d6806200033d6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461028b5780638f32d59b146102d5578063a457c2d7146102f7578063a9059cbb1461035d578063dd62ed3e146103c3578063f2fde38b1461043b576100b4565b8063095ea7b3146100b957806318160ddd1461011f57806323b872dd1461013d57806339509351146101c357806370a0823114610229578063715018a614610281575b600080fd5b610105600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061047f565b604051808215151515815260200191505060405180910390f35b61012761049d565b6040518082815260200191505060405180910390f35b6101a96004803603606081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a7565b604051808215151515815260200191505060405180910390f35b61020f600480360360408110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610580565b604051808215151515815260200191505060405180910390f35b61026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610633565b6040518082815260200191505060405180910390f35b61028961067b565b005b6102936107b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102dd6107e0565b604051808215151515815260200191505060405180910390f35b6103436004803603604081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b6103a96004803603604081101561037357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090c565b604051808215151515815260200191505060405180910390f35b610425600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061092a565b6040518082815260200191505060405180910390f35b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b1565b005b600061049361048c610a37565b8484610a3f565b6001905092915050565b6000600254905090565b60006104b4848484610c36565b610575846104c0610a37565b6105708560405180606001604052806028815260200161120c60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610526610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b600190509392505050565b600061062961058d610a37565b84610624856001600061059e610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b610a3f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106836107e0565b6106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610823610a37565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600061090261084c610a37565b846108fd8560405180606001604052806025815260200161127d6025913960016000610876610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b6001905092915050565b6000610920610919610a37565b8484610c36565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109b96107e0565b610a2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610a3481611034565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112596024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c46022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112346025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061117b6023913960400191505060405180910390fd5b610dad816040518060600160405280602681526020016111e6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e40816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5e578082015181840152602081019050610f43565b50505050905090810190601f168015610f8b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061119e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820d6bbaa556343e26c9c32ce18d18f5a8842ee483c9656d2bb7c5f069a560e19cc64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x21 PUSH2 0xDA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0xD5 CALLER PUSH5 0x174876E800 PUSH2 0xE2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x32D JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x185 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x19E DUP2 PUSH1 0x2 SLOAD PUSH2 0x2A5 PUSH1 0x20 SHL PUSH2 0xFAC OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH2 0x1F9 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2A5 PUSH1 0x20 SHL PUSH2 0xFAC OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x323 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12D6 DUP1 PUSH3 0x33D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3C3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x43B JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x281 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x105 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x47F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH2 0x49D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x580 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH2 0x67B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x7B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DD PUSH2 0x7E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x343 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x425 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x92A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x47D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x9B1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x493 PUSH2 0x48C PUSH2 0xA37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B4 DUP5 DUP5 DUP5 PUSH2 0xC36 JUMP JUMPDEST PUSH2 0x575 DUP5 PUSH2 0x4C0 PUSH2 0xA37 JUMP JUMPDEST PUSH2 0x570 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x120C PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x526 PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x629 PUSH2 0x58D PUSH2 0xA37 JUMP JUMPDEST DUP5 PUSH2 0x624 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x59E PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xFAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x683 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x6F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x823 PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x902 PUSH2 0x84C PUSH2 0xA37 JUMP JUMPDEST DUP5 PUSH2 0x8FD DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x127D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x876 PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x920 PUSH2 0x919 PUSH2 0xA37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xC36 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9B9 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0xA2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA34 DUP2 PUSH2 0x1034 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1259 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11C4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1234 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD42 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x117B PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDAD DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11E6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xE40 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xFAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF99 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xF43 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF8B 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x102A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x119E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737345524332303A20617070726F76652074 PUSH16 0x20746865207A65726F20616464726573 PUSH20 0x45524332303A207472616E7366657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x72315820D6BBAA556343E26C9C32CE18D18F5A8842EE483C9656D2 0xBB PUSH29 0x5F069A560E19CC64736F6C634300050F00320000000000000000000000 ", + "sourceMap": "191:190:14:-;;;310:69;8:9:-1;5:2;;;30:1;27;20:12;5:2;310:69:14;698:17:2;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;341:31:14;347:10;359:12;341:5;;;:31;;:::i;:::-;191:190;;788:96:0;833:15;867:10;860:17;;788:96;:::o;5962:302:3:-;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;;;;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;191:190:14:-;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461028b5780638f32d59b146102d5578063a457c2d7146102f7578063a9059cbb1461035d578063dd62ed3e146103c3578063f2fde38b1461043b576100b4565b8063095ea7b3146100b957806318160ddd1461011f57806323b872dd1461013d57806339509351146101c357806370a0823114610229578063715018a614610281575b600080fd5b610105600480360360408110156100cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061047f565b604051808215151515815260200191505060405180910390f35b61012761049d565b6040518082815260200191505060405180910390f35b6101a96004803603606081101561015357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506104a7565b604051808215151515815260200191505060405180910390f35b61020f600480360360408110156101d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610580565b604051808215151515815260200191505060405180910390f35b61026b6004803603602081101561023f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610633565b6040518082815260200191505060405180910390f35b61028961067b565b005b6102936107b6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102dd6107e0565b604051808215151515815260200191505060405180910390f35b6103436004803603604081101561030d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083f565b604051808215151515815260200191505060405180910390f35b6103a96004803603604081101561037357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061090c565b604051808215151515815260200191505060405180910390f35b610425600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061092a565b6040518082815260200191505060405180910390f35b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b1565b005b600061049361048c610a37565b8484610a3f565b6001905092915050565b6000600254905090565b60006104b4848484610c36565b610575846104c0610a37565b6105708560405180606001604052806028815260200161120c60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610526610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b600190509392505050565b600061062961058d610a37565b84610624856001600061059e610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b610a3f565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106836107e0565b6106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610823610a37565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600061090261084c610a37565b846108fd8560405180606001604052806025815260200161127d6025913960016000610876610a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b610a3f565b6001905092915050565b6000610920610919610a37565b8484610c36565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109b96107e0565b610a2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610a3481611034565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112596024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111c46022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112346025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061117b6023913960400191505060405180910390fd5b610dad816040518060600160405280602681526020016111e6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eec9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e40816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f5e578082015181840152602081019050610f43565b50505050905090810190601f168015610f8b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061119e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820d6bbaa556343e26c9c32ce18d18f5a8842ee483c9656d2bb7c5f069a560e19cc64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x3C3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x43B JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x13D JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x281 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x105 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x47F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH2 0x49D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x153 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4A7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x580 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH2 0x67B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x293 PUSH2 0x7B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DD PUSH2 0x7E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x343 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x90C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x425 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x92A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x47D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x9B1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x493 PUSH2 0x48C PUSH2 0xA37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B4 DUP5 DUP5 DUP5 PUSH2 0xC36 JUMP JUMPDEST PUSH2 0x575 DUP5 PUSH2 0x4C0 PUSH2 0xA37 JUMP JUMPDEST PUSH2 0x570 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x120C PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x526 PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x629 PUSH2 0x58D PUSH2 0xA37 JUMP JUMPDEST DUP5 PUSH2 0x624 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x59E PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xFAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x683 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0x6F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x823 PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x902 PUSH2 0x84C PUSH2 0xA37 JUMP JUMPDEST DUP5 PUSH2 0x8FD DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x127D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x876 PUSH2 0xA37 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xA3F JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x920 PUSH2 0x919 PUSH2 0xA37 JUMP JUMPDEST DUP5 DUP5 PUSH2 0xC36 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9B9 PUSH2 0x7E0 JUMP JUMPDEST PUSH2 0xA2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA34 DUP2 PUSH2 0x1034 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1259 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB4B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11C4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1234 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD42 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x117B PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDAD DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x11E6 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xEEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xE40 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xFAC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF99 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF5E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xF43 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF8B 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x102A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x10BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x119E PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F206164647265737345524332303A20617070726F76652074 PUSH16 0x20746865207A65726F20616464726573 PUSH20 0x45524332303A207472616E7366657220616D6F75 PUSH15 0x7420657863656564732062616C616E PUSH4 0x65455243 ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA265627A PUSH27 0x72315820D6BBAA556343E26C9C32CE18D18F5A8842EE483C9656D2 0xBB PUSH29 0x5F069A560E19CC64736F6C634300050F00320000000000000000000000 ", + "sourceMap": "191:190:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:190:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1706:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1684:137:2;;;:::i;:::-;;899:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4496:258:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1970:107:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:2;;;;;;;;;;;;;;;;;;;:::i;:::-;;2500:149:3;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;1706:108::-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;1684:137:2:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;899:77::-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;4496:258:3:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;2230:132::-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;1970:107:2:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;7350:332:3:-;7460:1;7443:19;;:5;:19;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7540:1;7521:21;;:7;:21;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7622:6;7592:11;:18;7604:5;7592:18;;;;;;;;;;;;;;;:27;7611:7;7592:27;;;;;;;;;;;;;;;:36;;;;7659:7;7643:32;;7652:5;7643:32;;;7668:6;7643:32;;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:1:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2178:225:2:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "isOwner()": "8f32d59b", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b" + } + } + } + }, + "contracts/TokenRegistry.sol": { + "TokenRegistry": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "Coordinator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "finaliseTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "logger", + "outputs": [ + { + "internalType": "contract Logger", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "numTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pendingRegistrations", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "registeredTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "requestTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "rollupNC", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 261 + } + ] + } + }, + "object": "608060405234801561001057600080fd5b50604051610a5b380380610a5b8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__632c82595f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561014757600080fd5b505af415801561015b573d6000803e3d6000fd5b505050506040513d602081101561017157600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156101b657600080fd5b505afa1580156101ca573d6000803e3d6000fd5b505050506040513d60208110156101e057600080fd5b8101908080519060200190929190505050600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061081a806102416000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA5B CODESIZE SUB DUP1 PUSH2 0xA5B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x6 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x2C82595F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x15B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x81A DUP1 PUSH2 0x241 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E499BCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x2E6 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x7BC7AA6E EQ PUSH2 0x16A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x356 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x541 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x172 PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x747 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x282 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20776173206E6F7420726567697374657265640000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x5 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88870639 PUSH1 0x5 SLOAD DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20616C726561647920726567697374657265642E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7637D2 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x28 0xF 0xEF 0xEE PUSH29 0x68A2493585D1F5FF77D09973186D9544111B21FDB7B3E64964100E6473 PUSH16 0x6C634300050F00320000000000000000 ", + "sourceMap": "181:1716:15:-;;;572:213;8:9:-1;5:2;;;30:1;27;20:12;5:2;572:213:15;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;572:213:15;;;;;;;;;;;;;;;;648:13;624:12;;:38;;;;;;;;;;;;;;;;;;686:10;672:11;;:24;;;;;;;;;;;;;;;;;;723:12;;;;;;;;;;;:31;;;755:12;:19;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;755:21:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;755:21:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;755:21:15;;;;;;;;;;;;;;;;723:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;723:54:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;723:54:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;723:54:15;;;;;;;;;;;;;;;;707:6;;:71;;;;;;;;;;;;;;;;;;572:213;181:1716;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c80638e499bcf116100665780638e499bcf146101b45780639a0ba2ea146101d2578063cd4852e514610240578063f24ccbfe1461029c578063f35213fc146102e657610093565b80634eb7221a1461009857806350de1b0f146100e257806355857ed9146101265780637bc7aa6e1461016a575b600080fd5b6100a0610330565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610124600480360360208110156100f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610356565b005b6101686004803603602081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610541565b005b61017261071b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc610741565b6040518082815260200191505060405180910390f35b6101fe600480360360208110156101e857600080fd5b8101908080359060200190929190505050610747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102826004803603602081101561025657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061077a565b604051808215151515815260200191505060405180910390f35b6102a461079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee6107c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610415576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f546f6b656e20776173206e6f742072656769737465726564000000000000000081525060200191505060405180910390fd5b6005600081548092919060010191905055508060046000600554815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388870639600554836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561052657600080fd5b505af115801561053a573d6000803e3d6000fd5b5050505050565b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e20616c726561647920726567697374657265642e0000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c7637d2826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561070057600080fd5b505af1158015610714573d6000803e3d6000fd5b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820280fefee7c68a2493585d1f5ff77d09973186d9544111b21fdb7b3e64964100e64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8E499BCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xF24CCBFE EQ PUSH2 0x29C JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x2E6 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x7BC7AA6E EQ PUSH2 0x16A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x356 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x541 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x172 PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BC PUSH2 0x741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x747 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x282 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x77A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A4 PUSH2 0x79A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EE PUSH2 0x7C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20776173206E6F7420726567697374657265640000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 ADD SWAP2 SWAP1 POP SSTORE POP DUP1 PUSH1 0x4 PUSH1 0x0 PUSH1 0x5 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x88870639 PUSH1 0x5 SLOAD DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x546F6B656E20616C726561647920726567697374657265642E00000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4C7637D2 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x28 0xF 0xEF 0xEE PUSH29 0x68A2493585D1F5FF77D09973186D9544111B21FDB7B3E64964100E6473 PUSH16 0x6C634300050F00320000000000000000 ", + "sourceMap": "181:1716:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;181:1716:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;537:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1533:362;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1533:362:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;959:303;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;959:303:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;242:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;413:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;355:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;355:51:15;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;297:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;297:52:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;271:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;210:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;537:28;;;;;;;;;;;;;:::o;1533:362::-;1629:20;:35;1650:13;1629:35;;;;;;;;;;;;;;;;;;;;;;;;;1608:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1724:9;;:11;;;;;;;;;;;;;1775:13;1745:16;:27;1762:9;;1745:27;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1837:6;;;;;;;;;;;:25;;;1863:9;;1874:13;1837:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1837:51:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1837:51:15;;;;1533:362;:::o;959:303::-;1093:5;1054:44;;:20;:35;1075:13;1054:35;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;1033:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:4;1159:20;:35;1180:13;1159:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;1211:6;;;;;;;;;;;:29;;;1241:13;1211:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1211:44:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1211:44:15;;;;959:303;:::o;242:23::-;;;;;;;;;;;;;:::o;413:24::-;;;;:::o;355:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;297:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;271:20::-;;;;;;;;;;;;;:::o;210:26::-;;;;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "Coordinator()": "f35213fc", + "finaliseTokenRegistration(address)": "50de1b0f", + "logger()": "f24ccbfe", + "nameRegistry()": "4eb7221a", + "numTokens()": "8e499bcf", + "pendingRegistrations(address)": "cd4852e5", + "registeredTokens(uint256)": "9a0ba2ea", + "requestTokenRegistration(address)": "55857ed9", + "rollupNC()": "7bc7aa6e" + } + } + } + }, + "contracts/Tree.sol": { + "Tree": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registryAddr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + } + ], + "name": "getChildren", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + } + ], + "name": "getSiblings", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nameRegistry", + "outputs": [ + { + "internalType": "contract NameRegistry", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_height", + "type": "uint256" + } + ], + "name": "setMerkleRootAndHeight", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "store", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "storeLeaf", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_parent", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_leftChild", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_rightChild", + "type": "bytes32" + } + ], + "name": "storeNode", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tree", + "outputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + } + ], + "name": "update", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_leaf", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + } + ], + "name": "updateLeaf", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_dataBlock", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_path", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_siblings", + "type": "bytes32[]" + } + ], + "name": "verifyAndStore", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": { + "contracts/libs/ParamManager.sol": { + "ParamManager": [ + { + "length": 20, + "start": 199 + } + ] + } + }, + "object": "60806040523480156200001157600080fd5b506040516200136238038062001362833981810160405260208110156200003757600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663185e996973__$b941c30c0f5422d8b714f571f17d94a5fd$__636d74b23d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200010a57600080fd5b505af41580156200011f573d6000803e3d6000fd5b505050506040513d60208110156200013657600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156200017c57600080fd5b505afa15801562000191573d6000803e3d6000fd5b505050506040513d6020811015620001a857600080fd5b8101908080519060200190929190505050600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000355600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630cb0a3436040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026657600080fd5b505afa1580156200027b573d6000803e3d6000fd5b505050506040513d60208110156200029257600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5f8e87b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030c57600080fd5b505afa15801562000321573d6000803e3d6000fd5b505050506040513d60208110156200033857600080fd5b81019080805190602001909291905050506200035c60201b60201c565b5062000374565b81600260000181905550806002600101819055505050565b610fde80620003846000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80635ca1e165116100715780635ca1e165146104a857806363327f89146104c65780639c0de52014610508578063c3b45234146105d4578063d37684ff14610699578063fd54b228146106e2576100b4565b8063101b166c146100b9578063158933ad1461013c578063272684b5146102955780634359356d146102cd5780634eb7221a146104265780635c22b6d914610470575b600080fd5b6100e5600480360360208110156100cf57600080fd5b8101908080359060200190929190505050610707565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561012857808201518184015260208101905061010d565b505050509050019250505060405180910390f35b6102936004803603606081101561015257600080fd5b810190808035906020019064010000000081111561016f57600080fd5b82018360208201111561018157600080fd5b803590602001918460018302840111640100000000831117156101a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019064010000000081111561021057600080fd5b82018360208201111561022257600080fd5b8035906020019184602083028401116401000000008311171561024457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610892565b005b6102cb600480360360408110156102ab57600080fd5b8101908080359060200190929190803590602001909291905050506108af565b005b610424600480360360608110156102e357600080fd5b810190808035906020019064010000000081111561030057600080fd5b82018360208201111561031257600080fd5b8035906020019184600183028401116401000000008311171561033457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001906401000000008111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111640100000000831117156103d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506108cc565b005b61042e610944565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a66004803603604081101561048657600080fd5b810190808035906020019092919080359060200190929190505050610969565b005b6104b0610981565b6040518082815260200191505060405180910390f35b610506600480360360608110156104dc57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061098e565b005b6105d26004803603606081101561051e57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b21565b005b610697600480360360408110156105ea57600080fd5b810190808035906020019064010000000081111561060757600080fd5b82018360208201111561061957600080fd5b8035906020019184600183028401116401000000008311171561063b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610dc4565b005b6106c5600480360360208110156106af57600080fd5b8101908080359060200190929190505050610de1565b604051808381526020018281526020019250505060405180910390f35b6106ea610f73565b604051808381526020018281526020019250505060405180910390f35b60608060026001015460405190808252806020026020018201604052801561073e5781602001602082028038833980820191505090505b50905060006002600001549050600060026001015490505b600081111561088757600060018203905060008061077385610de1565b915091506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb8a866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d602081101561081e57600080fd5b810190808051906020019092919050505060ff161415610859578194508086848151811061084857fe5b602002602001018181525050610876565b8094508186848151811061086957fe5b6020026020010181815250505b505050808060019003915050610756565b508192505050919050565b6000838051906020012090506108a9818484610b21565b50505050565b60606108ba82610707565b90506108c7838383610b21565b505050565b600060026000015490506108e1848484610892565b806002600001541461093e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f866024913960400191505060405180910390fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600260000181905550806002600101819055505050565b6000600260000154905090565b81600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b810190808051906020019092919050505081526020019081526020016000208190555080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b8101908080519060200190929190505050815260200190815260200160002081905550505050565b600083905060008090505b8251811015610db357600080848381518110610b4457fe5b602002602001015190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb88866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b8101908080519060200190929190505050905060008160ff161415610cdc57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb86846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d6020811015610cb957600080fd5b81019080805190602001909291905050509250610cd783868461098e565b610da0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb83876040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d5757600080fd5b505afa158015610d6b573d6000803e3d6000fd5b505050506040513d6020811015610d8157600080fd5b81019080805190602001909291905050509250610d9f83838761098e565b5b8294505050508080600101915050610b2c565b508060026000018190555050505050565b6060610dcf82610707565b9050610ddc838383610892565b505050565b600080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e5d57600080fd5b505afa158015610e71573d6000803e3d6000fd5b505050506040513d6020811015610e8757600080fd5b8101908080519060200190929190505050815260200190815260200160002054600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d6020811015610f4a57600080fd5b810190808051906020019092919050505081526020019081526020016000205491509150915091565b6002806000015490806001015490508256fe4661696c65642073616d6520726f6f7420766572696669636174696f6e20636865636b21a265627a7a72315820d65ff7475ce1fbfee0adcb5bc21ac56699a338afad9e3ceda4605da37492f21d64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1362 CODESIZE SUB DUP1 PUSH3 0x1362 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x185E9969 PUSH20 0x0 PUSH4 0x6D74B23D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x11F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x191 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x355 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCB0A343 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x27B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE5F8E87B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x321 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH3 0x35C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x374 JUMP JUMPDEST DUP2 PUSH1 0x2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH2 0xFDE DUP1 PUSH3 0x384 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5CA1E165 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x5CA1E165 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x63327F89 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x9C0DE520 EQ PUSH2 0x508 JUMPI DUP1 PUSH4 0xC3B45234 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0xD37684FF EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0xFD54B228 EQ PUSH2 0x6E2 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x101B166C EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x158933AD EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x272684B5 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x4359356D EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x5C22B6D9 EQ PUSH2 0x470 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x128 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x892 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x424 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x8CC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x42E PUSH2 0x944 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x969 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4B0 PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x506 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x98E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0xB21 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x697 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x619 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xDC4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xDE1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6EA PUSH2 0xF73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x2 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x73E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 ADD SLOAD SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x773 DUP6 PUSH2 0xDE1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDB0787CB DUP11 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x808 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0xFF AND EQ ISZERO PUSH2 0x859 JUMPI DUP2 SWAP5 POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x848 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x876 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x869 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH2 0x756 JUMP JUMPDEST POP DUP2 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x8A9 DUP2 DUP5 DUP5 PUSH2 0xB21 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x8BA DUP3 PUSH2 0x707 JUMP JUMPDEST SWAP1 POP PUSH2 0x8C7 DUP4 DUP4 DUP4 PUSH2 0xB21 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH2 0x8E1 DUP5 DUP5 DUP5 PUSH2 0x892 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 ADD SLOAD EQ PUSH2 0x93E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP2 PUSH1 0x2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDF7C7263 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE913E47F DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDB0787CB DUP9 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0xCDC JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP7 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP3 POP PUSH2 0xCD7 DUP4 DUP7 DUP5 PUSH2 0x98E JUMP JUMPDEST PUSH2 0xDA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP4 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP3 POP PUSH2 0xD9F DUP4 DUP4 DUP8 PUSH2 0x98E JUMP JUMPDEST JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xB2C JUMP JUMPDEST POP DUP1 PUSH1 0x2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDCF DUP3 PUSH2 0x707 JUMP JUMPDEST SWAP1 POP PUSH2 0xDDC DUP4 DUP4 DUP4 PUSH2 0x892 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDF7C7263 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE913E47F DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP INVALID CHAINID PUSH2 0x696C PUSH6 0x642073616D65 KECCAK256 PUSH19 0x6F6F7420766572696669636174696F6E206368 PUSH6 0x636B21A26562 PUSH27 0x7A72315820D65FF7475CE1FBFEE0ADCB5BC21AC56699A338AFAD9E EXTCODECOPY 0xED LOG4 PUSH1 0x5D LOG3 PUSH21 0x92F21D64736F6C634300050F003200000000000000 ", + "sourceMap": "251:6595:16:-;;;571:336;8:9:-1;5:2;;;30:1;27;20:12;5:2;571:336:16;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;571:336:16;;;;;;;;;;;;;;;;647:13;623:12;;:38;;;;;;;;;;;;;;;;;;706:12;;;;;;;;;;;:31;;;738:12;:25;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;738:27:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;738:27:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;738:27:16;;;;;;;;;;;;;;;;706:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;706:60:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;706:60:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;706:60:16;;;;;;;;;;;;;;;;671:11;;:105;;;;;;;;;;;;;;;;;;786:114;822:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;822:25:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;822:25:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;822:25:16;;;;;;;;;;;;;;;;861:11;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;861:29:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;861:29:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;861:29:16;;;;;;;;;;;;;;;;786:22;;;:114;;:::i;:::-;571:336;251:6595;;5745:136;5838:5;5826:4;:9;;:17;;;;5867:7;5853:4;:11;;:21;;;;5745:136;;:::o;251:6595::-;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80635ca1e165116100715780635ca1e165146104a857806363327f89146104c65780639c0de52014610508578063c3b45234146105d4578063d37684ff14610699578063fd54b228146106e2576100b4565b8063101b166c146100b9578063158933ad1461013c578063272684b5146102955780634359356d146102cd5780634eb7221a146104265780635c22b6d914610470575b600080fd5b6100e5600480360360208110156100cf57600080fd5b8101908080359060200190929190505050610707565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561012857808201518184015260208101905061010d565b505050509050019250505060405180910390f35b6102936004803603606081101561015257600080fd5b810190808035906020019064010000000081111561016f57600080fd5b82018360208201111561018157600080fd5b803590602001918460018302840111640100000000831117156101a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019064010000000081111561021057600080fd5b82018360208201111561022257600080fd5b8035906020019184602083028401116401000000008311171561024457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610892565b005b6102cb600480360360408110156102ab57600080fd5b8101908080359060200190929190803590602001909291905050506108af565b005b610424600480360360608110156102e357600080fd5b810190808035906020019064010000000081111561030057600080fd5b82018360208201111561031257600080fd5b8035906020019184600183028401116401000000008311171561033457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001906401000000008111156103a157600080fd5b8201836020820111156103b357600080fd5b803590602001918460208302840111640100000000831117156103d557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506108cc565b005b61042e610944565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a66004803603604081101561048657600080fd5b810190808035906020019092919080359060200190929190505050610969565b005b6104b0610981565b6040518082815260200191505060405180910390f35b610506600480360360608110156104dc57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919050505061098e565b005b6105d26004803603606081101561051e57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561054f57600080fd5b82018360208201111561056157600080fd5b8035906020019184602083028401116401000000008311171561058357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610b21565b005b610697600480360360408110156105ea57600080fd5b810190808035906020019064010000000081111561060757600080fd5b82018360208201111561061957600080fd5b8035906020019184600183028401116401000000008311171561063b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610dc4565b005b6106c5600480360360208110156106af57600080fd5b8101908080359060200190929190505050610de1565b604051808381526020018281526020019250505060405180910390f35b6106ea610f73565b604051808381526020018281526020019250505060405180910390f35b60608060026001015460405190808252806020026020018201604052801561073e5781602001602082028038833980820191505090505b50905060006002600001549050600060026001015490505b600081111561088757600060018203905060008061077385610de1565b915091506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb8a866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d602081101561081e57600080fd5b810190808051906020019092919050505060ff161415610859578194508086848151811061084857fe5b602002602001018181525050610876565b8094508186848151811061086957fe5b6020026020010181815250505b505050808060019003915050610756565b508192505050919050565b6000838051906020012090506108a9818484610b21565b50505050565b60606108ba82610707565b90506108c7838383610b21565b505050565b600060026000015490506108e1848484610892565b806002600001541461093e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610f866024913960400191505060405180910390fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b81600260000181905550806002600101819055505050565b6000600260000154905090565b81600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d6020811015610a3257600080fd5b810190808051906020019092919050505081526020019081526020016000208190555080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b8101908080519060200190929190505050815260200190815260200160002081905550505050565b600083905060008090505b8251811015610db357600080848381518110610b4457fe5b602002602001015190506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db0787cb88866040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b8101908080519060200190929190505050905060008160ff161415610cdc57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb86846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d6020811015610cb957600080fd5b81019080805190602001909291905050509250610cd783868461098e565b610da0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f6485fb83876040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b158015610d5757600080fd5b505afa158015610d6b573d6000803e3d6000fd5b505050506040513d6020811015610d8157600080fd5b81019080805190602001909291905050509250610d9f83838761098e565b5b8294505050508080600101915050610b2c565b508060026000018190555050505050565b6060610dcf82610707565b9050610ddc838383610892565b505050565b600080600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663df7c7263866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610e5d57600080fd5b505afa158015610e71573d6000803e3d6000fd5b505050506040513d6020811015610e8757600080fd5b8101908080519060200190929190505050815260200190815260200160002054600280016000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e913e47f876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d6020811015610f4a57600080fd5b810190808051906020019092919050505081526020019081526020016000205491509150915091565b6002806000015490806001015490508256fe4661696c65642073616d6520726f6f7420766572696669636174696f6e20636865636b21a265627a7a72315820d65ff7475ce1fbfee0adcb5bc21ac56699a338afad9e3ceda4605da37492f21d64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5CA1E165 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x5CA1E165 EQ PUSH2 0x4A8 JUMPI DUP1 PUSH4 0x63327F89 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x9C0DE520 EQ PUSH2 0x508 JUMPI DUP1 PUSH4 0xC3B45234 EQ PUSH2 0x5D4 JUMPI DUP1 PUSH4 0xD37684FF EQ PUSH2 0x699 JUMPI DUP1 PUSH4 0xFD54B228 EQ PUSH2 0x6E2 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x101B166C EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x158933AD EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x272684B5 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x4359356D EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x4EB7221A EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x5C22B6D9 EQ PUSH2 0x470 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x128 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x892 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x424 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x8CC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x42E PUSH2 0x944 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x969 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4B0 PUSH2 0x981 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x506 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x98E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x561 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0xB21 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x697 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x619 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xDC4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xDE1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6EA PUSH2 0xF73 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x2 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x73E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 PUSH1 0x1 ADD SLOAD SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 PUSH1 0x1 DUP3 SUB SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x773 DUP6 PUSH2 0xDE1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDB0787CB DUP11 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x808 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0xFF AND EQ ISZERO PUSH2 0x859 JUMPI DUP2 SWAP5 POP DUP1 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x848 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x876 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x869 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH2 0x756 JUMP JUMPDEST POP DUP2 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x8A9 DUP2 DUP5 DUP5 PUSH2 0xB21 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x8BA DUP3 PUSH2 0x707 JUMP JUMPDEST SWAP1 POP PUSH2 0x8C7 DUP4 DUP4 DUP4 PUSH2 0xB21 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH2 0x8E1 DUP5 DUP5 DUP5 PUSH2 0x892 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 ADD SLOAD EQ PUSH2 0x93E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF86 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST DUP2 PUSH1 0x2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDF7C7263 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA1C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE913E47F DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xDB3 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB44 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDB0787CB DUP9 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xFF AND EQ ISZERO PUSH2 0xCDC JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP7 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP3 POP PUSH2 0xCD7 DUP4 DUP7 DUP5 PUSH2 0x98E JUMP JUMPDEST PUSH2 0xDA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8F6485FB DUP4 DUP8 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP3 POP PUSH2 0xD9F DUP4 DUP4 DUP8 PUSH2 0x98E JUMP JUMPDEST JUMPDEST DUP3 SWAP5 POP POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xB2C JUMP JUMPDEST POP DUP1 PUSH1 0x2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDCF DUP3 PUSH2 0x707 JUMP JUMPDEST SWAP1 POP PUSH2 0xDDC DUP4 DUP4 DUP4 PUSH2 0x892 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDF7C7263 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE71 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x2 DUP1 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE913E47F DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF34 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x2 DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP INVALID CHAINID PUSH2 0x696C PUSH6 0x642073616D65 KECCAK256 PUSH19 0x6F6F7420766572696669636174696F6E206368 PUSH6 0x636B21A26562 PUSH27 0x7A72315820D65FF7475CE1FBFEE0ADCB5BC21AC56699A338AFAD9E EXTCODECOPY 0xED LOG4 PUSH1 0x5D LOG3 PUSH21 0x92F21D64736F6C634300050F003200000000000000 ", + "sourceMap": "251:6595:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;251:6595:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4571:726;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4571:726:16;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4571:726:16;;;;;;;;;;;;;;;;;2763:266;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2763:266:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2763:266:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2763:266:16;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2763:266:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2763:266:16;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2763:266:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2763:266:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2763:266:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2763:266:16;;;;;;;;;;;;;;;:::i;:::-;;1699:163;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1699:163:16;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2171:297;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2171:297:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2171:297:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2171:297:16;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2171:297:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2171:297:16;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2171:297:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2171:297:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2171:297:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2171:297:16;;;;;;;;;;;;;;;:::i;:::-;;271:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5745:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5745:136:16;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5485:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6133:251;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6133:251:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3313:959;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3313:959:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3313:959:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3313:959:16;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3313:959:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3313:959:16;;;;;;;;;;;;;;;:::i;:::-;;1265:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1265:170:16;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1265:170:16;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1265:170:16;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1265:170:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1265:170:16;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6576:268;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6576:268:16;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;969:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;4571:726;4623:16;4651:25;4693:4;:11;;;4679:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4679:26:16;;;;4651:54;;4715:20;4738:4;:9;;;4715:32;;4762:9;4774:4;:11;;;4762:23;;4757:477;4791:1;4787;:5;4757:477;;;4813:20;4840:1;4836;:5;4813:28;;4856:17;4875:18;4897:25;4909:12;4897:11;:25::i;:::-;4855:67;;;;4995:1;4940:11;;;;;;;;;;;:30;;;4971:5;4978:12;4940:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4940:51:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4940:51:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4940:51:16;;;;;;;;;;;;;;;;:56;;;4936:288;;;5031:9;5016:24;;5083:10;5058:8;5067:12;5058:22;;;;;;;;;;;;;:35;;;;;4936:288;;;5147:10;5132:25;;5200:9;5175:8;5184:12;5175:22;;;;;;;;;;;;;:34;;;;;4936:288;4757:477;;;4794:3;;;;;;;;4757:477;;;;5282:8;5275:15;;;;4571:726;;;:::o;2763:266::-;2943:12;2968:10;2958:21;;;;;;2943:36;;2989:33;2999:4;3005:5;3012:9;2989;:33::i;:::-;2763:266;;;;:::o;1699:163::-;1766:25;1794:18;1806:5;1794:11;:18::i;:::-;1766:46;;1822:33;1832:5;1839;1846:8;1822:9;:33::i;:::-;1699:163;;;:::o;2171:297::-;2310:15;2328:4;:9;;;2310:27;;2347:35;2353:10;2365:5;2372:9;2347:5;:35::i;:::-;2413:7;2400:4;:9;;;:20;2392:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:297;;;;:::o;271:28::-;;;;;;;;;;;;;:::o;5745:136::-;5838:5;5826:4;:9;;:17;;;;5867:7;5853:4;:11;;:21;;;;5745:136;;:::o;5485:82::-;5525:7;5551:4;:9;;;5544:16;;5485:82;:::o;6133:251::-;6292:10;6239:4;:10;;:50;6250:11;;;;;;;;;;;:29;;;6280:7;6250:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6250:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6250:38:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6250:38:16;;;;;;;;;;;;;;;;6239:50;;;;;;;;;;;:63;;;;6366:11;6312:4;:10;;:51;6323:11;;;;;;;;;;;:30;;;6354:7;6323:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6323:39:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6323:39:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6323:39:16;;;;;;;;;;;;;;;;6312:51;;;;;;;;;;;:65;;;;6133:251;;;:::o;3313:959::-;3458:20;3481:5;3458:28;;3501:9;3513:1;3501:13;;3496:706;3520:9;:16;3516:1;:20;3496:706;;;3557:14;3585:15;3603:9;3613:1;3603:12;;;;;;;;;;;;;;3585:30;;3629:28;3660:11;;;;;;;;;;;:30;;;3708:5;3731:1;3660:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3660:86:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3660:86:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3660:86:16;;;;;;;;;;;;;;;;3629:117;;3790:1;3764:22;:27;;;3760:397;;;3820:11;;;;;;;;;;;:21;;;3842:12;3856:7;3820:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3820:44:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3820:44:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3820:44:16;;;;;;;;;;;;;;;;3811:53;;3917:40;3927:6;3935:12;3949:7;3917:9;:40::i;:::-;3760:397;;;4005:11;;;;;;;;;;;:21;;;4027:7;4036:12;4005:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4005:44:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4005:44:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4005:44:16;;;;;;;;;;;;;;;;3996:53;;4102:40;4112:6;4120:7;4129:12;4102:9;:40::i;:::-;3760:397;4185:6;4170:21;;3496:706;;;3538:3;;;;;;;3496:706;;;;4253:12;4241:4;:9;;:24;;;;3313:959;;;;:::o;1265:170::-;1338:25;1366:18;1378:5;1366:11;:18::i;:::-;1338:46;;1394:34;1400:10;1412:5;1419:8;1394:5;:34::i;:::-;1265:170;;;:::o;6576:268::-;6659:7;6668;6712:4;:10;;:50;6723:11;;;;;;;;;;;:29;;;6753:7;6723:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6723:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6723:38:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6723:38:16;;;;;;;;;;;;;;;;6712:50;;;;;;;;;;;;6776:4;:10;;:51;6787:11;;;;;;;;;;;:30;;;6818:7;6787:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6787:39:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6787:39:16;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6787:39:16;;;;;;;;;;;;;;;;6776:51;;;;;;;;;;;;6691:146;;;;6576:268;;;:::o;969:22::-;;;;;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "getChildren(bytes32)": "d37684ff", + "getRoot()": "5ca1e165", + "getSiblings(uint256)": "101b166c", + "nameRegistry()": "4eb7221a", + "setMerkleRootAndHeight(bytes32,uint256)": "5c22b6d9", + "store(bytes,uint256,bytes32[])": "158933ad", + "storeLeaf(bytes32,uint256,bytes32[])": "9c0de520", + "storeNode(bytes32,bytes32,bytes32)": "63327f89", + "tree()": "fd54b228", + "update(bytes,uint256)": "c3b45234", + "updateLeaf(bytes32,uint256)": "272684b5", + "verifyAndStore(bytes,uint256,bytes32[])": "4359356d" + } + } + } + }, + "contracts/interfaces/IERC20.sol": { + "IERC20": { + "abi": [ + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5061016d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb146100c1575b600080fd5b6100a76004803603606081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610127565b604051808215151515815260200191505060405180910390f35b61010d600480360360408110156100d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610130565b604051808215151515815260200191505060405180910390f35b60009392505050565b60009291505056fea265627a7a72315820e0061de61f587f27e8444777267c8487bddf7a7647ff5b282fde1e577f10bd7d64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x130 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE0 MOD SAR 0xE6 0x1F PC PUSH32 0x27E8444777267C8487BDDF7A7647FF5B282FDE1E577F10BD7D64736F6C634300 SDIV 0xF STOP ORIGIN ", + "sourceMap": "52:213:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52:213:17;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806323b872dd1461003b578063a9059cbb146100c1575b600080fd5b6100a76004803603606081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610127565b604051808215151515815260200191505060405180910390f35b61010d600480360360408110156100d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610130565b604051808215151515815260200191505060405180910390f35b60009392505050565b60009291505056fea265627a7a72315820e0061de61f587f27e8444777267c8487bddf7a7647ff5b282fde1e577f10bd7d64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x127 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x130 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xE0 MOD SAR 0xE6 0x1F PC PUSH32 0x27E8444777267C8487BDDF7A7647FF5B282FDE1E577F10BD7D64736F6C634300 SDIV 0xF STOP ORIGIN ", + "sourceMap": "52:213:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;52:213:17;;;;;;;;;;;;;;;;;;;;;;;;74:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;74:107:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;187:76;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;187:76:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;74:107;169:4;74:107;;;;;:::o;187:76::-;255:4;187:76;;;;:::o" + }, + "methodIdentifiers": { + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "contracts/interfaces/ITokenRegistry.sol": { + "ITokenRegistry": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "Coordinator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "finaliseTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "numTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pendingRegistrations", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "registeredTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "requestTokenRegistration", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506102da806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806350de1b0f1461006757806355857ed9146100ab5780638e499bcf146100ef5780639a0ba2ea1461010d578063cd4852e51461017b578063f35213fc146101d7575b600080fd5b6100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610221565b005b6100ed600480360360208110156100c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b6100f7610227565b6040518082815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b810190808035906020019092919050505061022d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bd6004803603602081101561019157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610260565b604051808215151515815260200191505060405180910390f35b6101df610280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b50565b50565b60015481565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820376a2523f550399d0a313deb25f5f850e3c80c2a27f76e95125f6ddef0a056f564736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x1D7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x221 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x224 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF7 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x22D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x260 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DF PUSH2 0x280 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLDATACOPY PUSH11 0x2523F550399D0A313DEB25 CREATE2 0xF8 POP 0xE3 0xC8 0xC 0x2A 0x27 0xF7 PUSH15 0x95125F6DDEF0A056F564736F6C6343 STOP SDIV 0xF STOP ORIGIN ", + "sourceMap": "64:443:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64:443:18;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c806350de1b0f1461006757806355857ed9146100ab5780638e499bcf146100ef5780639a0ba2ea1461010d578063cd4852e51461017b578063f35213fc146101d7575b600080fd5b6100a96004803603602081101561007d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610221565b005b6100ed600480360360208110156100c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610224565b005b6100f7610227565b6040518082815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b810190808035906020019092919050505061022d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bd6004803603602081101561019157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610260565b604051808215151515815260200191505060405180910390f35b6101df610280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b50565b50565b60015481565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea265627a7a72315820376a2523f550399d0a313deb25f5f850e3c80c2a27f76e95125f6ddef0a056f564736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x50DE1B0F EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x55857ED9 EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x8E499BCF EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x9A0BA2EA EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xCD4852E5 EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0xF35213FC EQ PUSH2 0x1D7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x221 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x224 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF7 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x139 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x22D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x260 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DF PUSH2 0x280 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLDATACOPY PUSH11 0x2523F550399D0A313DEB25 CREATE2 0xF8 POP 0xE3 0xC8 0xC 0x2A 0x27 0xF7 PUSH15 0x95125F6DDEF0A056F564736F6C6343 STOP SDIV 0xF STOP ORIGIN ", + "sourceMap": "64:443:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;64:443:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;438:67;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;438:67:18;;;;;;;;;;;;;;;;;;;:::i;:::-;;366:66;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;366:66:18;;;;;;;;;;;;;;;;;;;:::i;:::-;;126:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;214:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;214:51:18;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;156:52;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;156:52:18;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;438:67;;:::o;366:66::-;;:::o;126:24::-;;;;:::o;214:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;156:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;94:26::-;;;;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "Coordinator()": "f35213fc", + "finaliseTokenRegistration(address)": "50de1b0f", + "numTokens()": "8e499bcf", + "pendingRegistrations(address)": "cd4852e5", + "registeredTokens(uint256)": "9a0ba2ea", + "requestTokenRegistration(address)": "55857ed9" + } + } + } + }, + "contracts/libs/ECVerify.sol": { + "ECVerify": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sig", + "type": "bytes" + } + ], + "name": "ecrecovery", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ecrecovery", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sig", + "type": "bytes" + }, + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "ecverify", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "61052d610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c806339cdde321461005057806377d32e941461014d57806398ea1c5114610252575b600080fd5b6101336004803603606081101561006657600080fd5b81019080803590602001909291908035906020019064010000000081111561008d57600080fd5b82018360208201111561009f57600080fd5b803590602001918460018302840111640100000000831117156100c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e1565b604051808215151515815260200191505060405180910390f35b6102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029f6004803603608081101561026857600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610446565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102ed8484610324565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490509392505050565b600080600080604185511461033f5760009350505050610440565b602085015192506040850151915060ff6041860151169050601b8160ff16101561036a57601b810190505b601b8160ff16141580156103825750601c8160ff1614155b156103935760009350505050610440565b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156103f2573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561043857600080fd5b809450505050505b92915050565b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156104a6573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104ec57600080fd5b8091505094935050505056fea265627a7a72315820bee3e1ebc2a54dd34b2fb69e032ef6fde6996ed5378f09b9d6fdc6c72250439d64736f6c634300050f0032", + "opcodes": "PUSH2 0x52D PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39CDDE32 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x77D32E94 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x98EA1C51 EQ PUSH2 0x252 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x210 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x2ED DUP5 DUP5 PUSH2 0x324 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x41 DUP6 MLOAD EQ PUSH2 0x33F JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x440 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0xFF PUSH1 0x41 DUP7 ADD MLOAD AND SWAP1 POP PUSH1 0x1B DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x36A JUMPI PUSH1 0x1B DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x1B DUP2 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x382 JUMPI POP PUSH1 0x1C DUP2 PUSH1 0xFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x440 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xBE 0xE3 0xE1 0xEB 0xC2 0xA5 0x4D 0xD3 0x4B 0x2F 0xB6 SWAP15 SUB 0x2E 0xF6 REVERT 0xE6 SWAP10 PUSH15 0xD5378F09B9D6FDC6C72250439D6473 PUSH16 0x6C634300050F00320000000000000000 ", + "sourceMap": "27:1356:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c806339cdde321461005057806377d32e941461014d57806398ea1c5114610252575b600080fd5b6101336004803603606081101561006657600080fd5b81019080803590602001909291908035906020019064010000000081111561008d57600080fd5b82018360208201111561009f57600080fd5b803590602001918460018302840111640100000000831117156100c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102e1565b604051808215151515815260200191505060405180910390f35b6102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610324565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029f6004803603608081101561026857600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610446565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006102ed8484610324565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490509392505050565b600080600080604185511461033f5760009350505050610440565b602085015192506040850151915060ff6041860151169050601b8160ff16101561036a57601b810190505b601b8160ff16141580156103825750601c8160ff1614155b156103935760009350505050610440565b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156103f2573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561043857600080fd5b809450505050505b92915050565b60008060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156104a6573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104ec57600080fd5b8091505094935050505056fea265627a7a72315820bee3e1ebc2a54dd34b2fb69e032ef6fde6996ed5378f09b9d6fdc6c72250439d64736f6c634300050f0032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39CDDE32 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x77D32E94 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x98EA1C51 EQ PUSH2 0x252 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x210 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x324 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x29F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x446 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x2ED DUP5 DUP5 PUSH2 0x324 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x41 DUP6 MLOAD EQ PUSH2 0x33F JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x440 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0xFF PUSH1 0x41 DUP7 ADD MLOAD AND SWAP1 POP PUSH1 0x1B DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0x36A JUMPI PUSH1 0x1B DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x1B DUP2 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x382 JUMPI POP PUSH1 0x1C DUP2 PUSH1 0xFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x440 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD SUB MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xBE 0xE3 0xE1 0xEB 0xC2 0xA5 0x4D 0xD3 0x4B 0x2F 0xB6 SWAP15 SUB 0x2E 0xF6 REVERT 0xE6 SWAP10 PUSH15 0xD5378F09B9D6FDC6C72250439D6473 PUSH16 0x6C634300050F00320000000000000000 ", + "sourceMap": "27:1356:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1205:176;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1205:176:19;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1205:176:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1205:176:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1205:176:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1205:176:19;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;50:804;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;50:804:19;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;50:804:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;50:804:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;50:804:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;50:804:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;860:339;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;860:339:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1205:176;1316:4;1353:21;1364:4;1370:3;1353:10;:21::i;:::-;1343:31;;:6;:31;;;1336:38;;1205:176;;;;;:::o;50:804::-;147:7;170:9;189;208:7;244:2;230:3;:10;:16;226:66;;277:3;262:19;;;;;;;226:66;345:2;340:3;336:12;330:19;325:24;;382:2;377:3;373:12;367:19;362:24;;429:3;423:2;418:3;414:12;408:19;404:29;399:34;;524:2;520:1;:6;;;516:44;;;547:2;542:7;;;;516:44;579:2;574:1;:7;;;;:18;;;;;590:2;585:1;:7;;;;574:18;570:68;;;623:3;608:19;;;;;;;570:68;697:14;714:24;724:4;730:1;733;736;714:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;714:24:19;;;;;;;;697:41;;818:3;800:22;;:6;:22;;;;792:31;;;;;;841:6;834:13;;;;;;50:804;;;;;:::o;860:339::-;970:7;1042:14;1059:24;1069:4;1075:1;1078;1081;1059:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1059:24:19;;;;;;;;1042:41;;1163:3;1145:22;;:6;:22;;;;1137:31;;;;;;1186:6;1179:13;;;860:339;;;;;;:::o" + }, + "methodIdentifiers": { + "ecrecovery(bytes32,bytes)": "77d32e94", + "ecrecovery(bytes32,uint8,bytes32,bytes32)": "98ea1c51", + "ecverify(bytes32,bytes,address)": "39cdde32" + } + } + } + }, + "contracts/libs/ParamManager.sol": { + "ParamManager": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "ACCOUNTS_TREE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BALANCES_TREE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BURN_ADDRESS", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "CHAIN_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DEPOSIT_MANAGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "LOGGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_DEPOSIT_SUBTREE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_DEPTH", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_TXS_PER_BATCH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MERKLE_UTILS", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MIN_GAS_LIMIT_LEFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PARAM_MANAGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ROLLUP_CORE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "STAKE_AMOUNT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TEST_TOKEN", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TIME_TO_FINALISE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_REGISTRY", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "WITHDRAW_MANAGER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZERO_BYTES32", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_CHAIN_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MAX_DEPOSIT_SUBTREE", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MAX_DEPTH", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MAX_TXS_PER_BATCH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_MIN_GAS_LIMIT_LEFT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_STAKE_AMOUNT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_TIME_TO_FINALISE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "_ZERO_BYTES32", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6108a9610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106101b35760003560e01c80636d74b23d11610103578063c2ed4caa116100a1578063e69e93ea1161007b578063e69e93ea14610482578063f8989c36146104a0578063faf5625f146104be578063fccc2813146104dc576101b3565b8063c2ed4caa14610422578063ca4a98f214610440578063d52782f81461045e576101b3565b80638a5b1d7a116100dd5780638a5b1d7a146103a45780639f9956fe146103c2578063a27154ba146103e0578063a8b2d00114610404576101b3565b80636d74b23d1461034a578063777737011461036857806385e1f4d014610386576101b3565b80634a1eb5911161017057806359624eee1161014a57806359624eee146102cc5780635d4cbd0d146102ea578063626835f51461030857806364201df614610326576101b3565b80634a1eb5911461026c5780634a6153e81461028a578063554056e4146102a8576101b3565b8063069321b0146101b8578063106e9921146101d6578063203303fb146101f45780632c82595f14610212578063366fa7061461023057806337a9c9831461024e575b600080fd5b6101c0610526565b6040518082815260200191505060405180910390f35b6101de610531565b6040518082815260200191505060405180910390f35b6101fc61053c565b6040518082815260200191505060405180910390f35b61021a610575565b6040518082815260200191505060405180910390f35b6102386105b2565b6040518082815260200191505060405180910390f35b6102566105b9565b6040518082815260200191505060405180910390f35b6102746105f6565b6040518082815260200191505060405180910390f35b6102926105ff565b6040518082815260200191505060405180910390f35b6102b0610604565b604051808260ff1660ff16815260200191505060405180910390f35b6102d461060d565b6040518082815260200191505060405180910390f35b6102f2610614565b6040518082815260200191505060405180910390f35b61031061061f565b6040518082815260200191505060405180910390f35b61032e61065c565b604051808260ff1660ff16815260200191505060405180910390f35b610352610661565b6040518082815260200191505060405180910390f35b61037061069e565b6040518082815260200191505060405180910390f35b61038e6106db565b6040518082815260200191505060405180910390f35b6103ac610718565b6040518082815260200191505060405180910390f35b6103ca610755565b6040518082815260200191505060405180910390f35b6103e861075a565b604051808260ff1660ff16815260200191505060405180910390f35b61040c610763565b6040518082815260200191505060405180910390f35b61042a6107a0565b6040518082815260200191505060405180910390f35b6104486107a7565b6040518082815260200191505060405180910390f35b6104666107e4565b604051808260ff1660ff16815260200191505060405180910390f35b61048a6107e9565b6040518082815260200191505060405180910390f35b6104a8610826565b6040518082815260200191505060405180910390f35b6104c6610863565b6040518082815260200191505060405180910390f35b6104e461086c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060001b905090565b6000620186a0905090565b60405180807f6f7072752d3132330000000000000000000000000000000000000000000000008152506008019050604051809103902081565b600060405180807f6c6f67676572000000000000000000000000000000000000000000000000000081525060060190506040518091039020905090565b6000801b81565b600060405180807f6465706f7369745f6d616e616765720000000000000000000000000000000000815250600f0190506040518091039020905090565b6000600a905090565b600a81565b60006002905090565b62093a8081565b600062093a80905090565b600060405180807f62616c616e6365735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600281565b600060405180807f6d65726b6c655f6c696200000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b600060405180807f77697468647261775f6d616e616765720000000000000000000000000000000081525060100190506040518091039020905090565b600060405180807f6f7072752d31323300000000000000000000000000000000000000000000000081525060080190506040518091039020905090565b600060405180807f746f6b656e5f7265676973747279000000000000000000000000000000000000815250600e0190506040518091039020905090565b602081565b60006004905090565b600060405180807f726f6c6c75705f636f7265000000000000000000000000000000000000000000815250600b0190506040518091039020905090565b620186a081565b600060405180807f6163636f756e74735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600481565b600060405180807f706172616d5f6d616e6167657200000000000000000000000000000000000000815250600d0190506040518091039020905090565b600060405180807f746573745f746f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b60006020905090565b60008090509056fea265627a7a72315820907e7eb31dd7f3da93604135d9052af252c852962fe76dd9531a1031fad4c97664736f6c634300050f0032", + "opcodes": "PUSH2 0x8A9 PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D74B23D GT PUSH2 0x103 JUMPI DUP1 PUSH4 0xC2ED4CAA GT PUSH2 0xA1 JUMPI DUP1 PUSH4 0xE69E93EA GT PUSH2 0x7B JUMPI DUP1 PUSH4 0xE69E93EA EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0xF8989C36 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0xFAF5625F EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0xFCCC2813 EQ PUSH2 0x4DC JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0xC2ED4CAA EQ PUSH2 0x422 JUMPI DUP1 PUSH4 0xCA4A98F2 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0xD52782F8 EQ PUSH2 0x45E JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x8A5B1D7A GT PUSH2 0xDD JUMPI DUP1 PUSH4 0x8A5B1D7A EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9F9956FE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xA8B2D001 EQ PUSH2 0x404 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x6D74B23D EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x77773701 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x85E1F4D0 EQ PUSH2 0x386 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x4A1EB591 GT PUSH2 0x170 JUMPI DUP1 PUSH4 0x59624EEE GT PUSH2 0x14A JUMPI DUP1 PUSH4 0x59624EEE EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x5D4CBD0D EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x626835F5 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0x64201DF6 EQ PUSH2 0x326 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x4A1EB591 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x4A6153E8 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x554056E4 EQ PUSH2 0x2A8 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x106E9921 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x203303FB EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x2C82595F EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x366FA706 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x37A9C983 EQ PUSH2 0x24E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C0 PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DE PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FC PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x575 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x238 PUSH2 0x5B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x292 PUSH2 0x5FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B0 PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x310 PUSH2 0x61F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x32E PUSH2 0x65C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x352 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x370 PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38E PUSH2 0x6DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AC PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3CA PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E8 PUSH2 0x75A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH2 0x763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x42A PUSH2 0x7A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x448 PUSH2 0x7A7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x466 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x48A PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A8 PUSH2 0x826 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C6 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E4 PUSH2 0x86C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x186A0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6F7072752D313233000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x8 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6C6F676765720000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x6 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6465706F7369745F6D616E616765720000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xF ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x93A80 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x93A80 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x62616C616E6365735F7472656500000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xD ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6D65726B6C655F6C696200000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xA ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x77697468647261775F6D616E6167657200000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x10 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6F7072752D313233000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x8 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x746F6B656E5F7265676973747279000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xE ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x726F6C6C75705F636F7265000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xB ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x186A0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6163636F756E74735F7472656500000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xD ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x706172616D5F6D616E6167657200000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xD ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x746573745F746F6B656E00000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xA ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP1 PUSH31 0x7EB31DD7F3DA93604135D9052AF252C852962FE76DD9531A1031FAD4C97664 PUSH20 0x6F6C634300050F00320000000000000000000000 ", + "sourceMap": "27:2788:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106101b35760003560e01c80636d74b23d11610103578063c2ed4caa116100a1578063e69e93ea1161007b578063e69e93ea14610482578063f8989c36146104a0578063faf5625f146104be578063fccc2813146104dc576101b3565b8063c2ed4caa14610422578063ca4a98f214610440578063d52782f81461045e576101b3565b80638a5b1d7a116100dd5780638a5b1d7a146103a45780639f9956fe146103c2578063a27154ba146103e0578063a8b2d00114610404576101b3565b80636d74b23d1461034a578063777737011461036857806385e1f4d014610386576101b3565b80634a1eb5911161017057806359624eee1161014a57806359624eee146102cc5780635d4cbd0d146102ea578063626835f51461030857806364201df614610326576101b3565b80634a1eb5911461026c5780634a6153e81461028a578063554056e4146102a8576101b3565b8063069321b0146101b8578063106e9921146101d6578063203303fb146101f45780632c82595f14610212578063366fa7061461023057806337a9c9831461024e575b600080fd5b6101c0610526565b6040518082815260200191505060405180910390f35b6101de610531565b6040518082815260200191505060405180910390f35b6101fc61053c565b6040518082815260200191505060405180910390f35b61021a610575565b6040518082815260200191505060405180910390f35b6102386105b2565b6040518082815260200191505060405180910390f35b6102566105b9565b6040518082815260200191505060405180910390f35b6102746105f6565b6040518082815260200191505060405180910390f35b6102926105ff565b6040518082815260200191505060405180910390f35b6102b0610604565b604051808260ff1660ff16815260200191505060405180910390f35b6102d461060d565b6040518082815260200191505060405180910390f35b6102f2610614565b6040518082815260200191505060405180910390f35b61031061061f565b6040518082815260200191505060405180910390f35b61032e61065c565b604051808260ff1660ff16815260200191505060405180910390f35b610352610661565b6040518082815260200191505060405180910390f35b61037061069e565b6040518082815260200191505060405180910390f35b61038e6106db565b6040518082815260200191505060405180910390f35b6103ac610718565b6040518082815260200191505060405180910390f35b6103ca610755565b6040518082815260200191505060405180910390f35b6103e861075a565b604051808260ff1660ff16815260200191505060405180910390f35b61040c610763565b6040518082815260200191505060405180910390f35b61042a6107a0565b6040518082815260200191505060405180910390f35b6104486107a7565b6040518082815260200191505060405180910390f35b6104666107e4565b604051808260ff1660ff16815260200191505060405180910390f35b61048a6107e9565b6040518082815260200191505060405180910390f35b6104a8610826565b6040518082815260200191505060405180910390f35b6104c6610863565b6040518082815260200191505060405180910390f35b6104e461086c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060001b905090565b6000620186a0905090565b60405180807f6f7072752d3132330000000000000000000000000000000000000000000000008152506008019050604051809103902081565b600060405180807f6c6f67676572000000000000000000000000000000000000000000000000000081525060060190506040518091039020905090565b6000801b81565b600060405180807f6465706f7369745f6d616e616765720000000000000000000000000000000000815250600f0190506040518091039020905090565b6000600a905090565b600a81565b60006002905090565b62093a8081565b600062093a80905090565b600060405180807f62616c616e6365735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600281565b600060405180807f6d65726b6c655f6c696200000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b600060405180807f77697468647261775f6d616e616765720000000000000000000000000000000081525060100190506040518091039020905090565b600060405180807f6f7072752d31323300000000000000000000000000000000000000000000000081525060080190506040518091039020905090565b600060405180807f746f6b656e5f7265676973747279000000000000000000000000000000000000815250600e0190506040518091039020905090565b602081565b60006004905090565b600060405180807f726f6c6c75705f636f7265000000000000000000000000000000000000000000815250600b0190506040518091039020905090565b620186a081565b600060405180807f6163636f756e74735f7472656500000000000000000000000000000000000000815250600d0190506040518091039020905090565b600481565b600060405180807f706172616d5f6d616e6167657200000000000000000000000000000000000000815250600d0190506040518091039020905090565b600060405180807f746573745f746f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020905090565b60006020905090565b60008090509056fea265627a7a72315820907e7eb31dd7f3da93604135d9052af252c852962fe76dd9531a1031fad4c97664736f6c634300050f0032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D74B23D GT PUSH2 0x103 JUMPI DUP1 PUSH4 0xC2ED4CAA GT PUSH2 0xA1 JUMPI DUP1 PUSH4 0xE69E93EA GT PUSH2 0x7B JUMPI DUP1 PUSH4 0xE69E93EA EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0xF8989C36 EQ PUSH2 0x4A0 JUMPI DUP1 PUSH4 0xFAF5625F EQ PUSH2 0x4BE JUMPI DUP1 PUSH4 0xFCCC2813 EQ PUSH2 0x4DC JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0xC2ED4CAA EQ PUSH2 0x422 JUMPI DUP1 PUSH4 0xCA4A98F2 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0xD52782F8 EQ PUSH2 0x45E JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x8A5B1D7A GT PUSH2 0xDD JUMPI DUP1 PUSH4 0x8A5B1D7A EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x9F9956FE EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xA27154BA EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0xA8B2D001 EQ PUSH2 0x404 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x6D74B23D EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x77773701 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x85E1F4D0 EQ PUSH2 0x386 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x4A1EB591 GT PUSH2 0x170 JUMPI DUP1 PUSH4 0x59624EEE GT PUSH2 0x14A JUMPI DUP1 PUSH4 0x59624EEE EQ PUSH2 0x2CC JUMPI DUP1 PUSH4 0x5D4CBD0D EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x626835F5 EQ PUSH2 0x308 JUMPI DUP1 PUSH4 0x64201DF6 EQ PUSH2 0x326 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x4A1EB591 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x4A6153E8 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x554056E4 EQ PUSH2 0x2A8 JUMPI PUSH2 0x1B3 JUMP JUMPDEST DUP1 PUSH4 0x69321B0 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x106E9921 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x203303FB EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x2C82595F EQ PUSH2 0x212 JUMPI DUP1 PUSH4 0x366FA706 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0x37A9C983 EQ PUSH2 0x24E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C0 PUSH2 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DE PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FC PUSH2 0x53C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x575 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x238 PUSH2 0x5B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x256 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x274 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x292 PUSH2 0x5FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B0 PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D4 PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F2 PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x310 PUSH2 0x61F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x32E PUSH2 0x65C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x352 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x370 PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38E PUSH2 0x6DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AC PUSH2 0x718 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3CA PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E8 PUSH2 0x75A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH2 0x763 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x42A PUSH2 0x7A0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x448 PUSH2 0x7A7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x466 PUSH2 0x7E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x48A PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A8 PUSH2 0x826 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C6 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E4 PUSH2 0x86C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x186A0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6F7072752D313233000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x8 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6C6F676765720000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x6 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6465706F7369745F6D616E616765720000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xF ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x93A80 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x93A80 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x62616C616E6365735F7472656500000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xD ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6D65726B6C655F6C696200000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xA ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x77697468647261775F6D616E6167657200000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x10 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6F7072752D313233000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x8 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x746F6B656E5F7265676973747279000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xE ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x726F6C6C75705F636F7265000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xB ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x186A0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x6163636F756E74735F7472656500000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xD ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x706172616D5F6D616E6167657200000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xD ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x746573745F746F6B656E00000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0xA ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP1 PUSH31 0x7EB31DD7F3DA93604135D9052AF252C852962FE76DD9531A1031FAD4C97664 PUSH20 0x6F6C634300050F00320000000000000000000000 ", + "sourceMap": "27:2788:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2722:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1998:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1442:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;720:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2609:106;;;:::i;:::-;;;;;;;;;;;;;;;;;;;54:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2161:101;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2107:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1333:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1730:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1787:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;609:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1280:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;817:101;;;:::i;:::-;;;;;;;;;;;;;;;;;;;169:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1506:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1035:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2268:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1191:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;391:101;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1939:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;498:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1148:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;924:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;286:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2317:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2504:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2722:91;2767:7;2649:66;2793:13;;2786:20;;2722:91;:::o;1998:103::-;2049:7;1985:6;2068:26;;1998:103;:::o;1442:57::-;1478:21;;;;;;;;;;;;;;;;;;;1442:57;:::o;720:91::-;759:7;785:19;;;;;;;;;;;;;;;;;;;778:26;;720:91;:::o;2609:106::-;2649:66;2609:106;;;:::o;54:109::-;102:7;128:28;;;;;;;;;;;;;;;;;;;121:35;;54:109;:::o;2161:101::-;2211:7;2152:2;2230:25;;2161:101;:::o;2107:47::-;2152:2;2107:47;:::o;1333:103::-;1385:5;1325:1;1402:27;;1333:103;:::o;1730:50::-;1774:6;1730:50;:::o;1787:99::-;1836:7;1774:6;1855:24;;1787:99;:::o;609:105::-;655:7;681:26;;;;;;;;;;;;;;;;;;;674:33;;609:105;:::o;1280:46::-;1325:1;1280:46;:::o;817:101::-;862:7;888:23;;;;;;;;;;;;;;;;;;;881:30;;817:101;:::o;169:111::-;218:7;244:29;;;;;;;;;;;;;;;;;;;237:36;;169:111;:::o;1506:83::-;1547:7;1478:21;;;;;;;;;;;;;;;;;;;1566:16;;1506:83;:::o;1035:107::-;1082:7;1108:27;;;;;;;;;;;;;;;;;;;1101:34;;1035:107;:::o;2268:42::-;2308:2;2268:42;:::o;1191:83::-;1233:5;1183:1;1250:17;;1191:83;:::o;391:101::-;435:7;461:24;;;;;;;;;;;;;;;;;;;454:31;;391:101;:::o;1939:52::-;1985:6;1939:52;:::o;498:105::-;544:7;570:26;;;;;;;;;;;;;;;;;;;563:33;;498:105;:::o;1148:36::-;1183:1;1148:36;:::o;924:105::-;970:7;996:26;;;;;;;;;;;;;;;;;;;989:33;;924:105;:::o;286:99::-;329:7;355:23;;;;;;;;;;;;;;;;;;;348:30;;286:99;:::o;2317:91::-;2362:7;2308:2;2381:20;;2317:91;:::o;2504:99::-;2549:15;2455:42;2576:20;;2504:99;:::o" + }, + "methodIdentifiers": { + "ACCOUNTS_TREE()": "ca4a98f2", + "BALANCES_TREE()": "626835f5", + "BURN_ADDRESS()": "fccc2813", + "CHAIN_ID()": "85e1f4d0", + "DEPOSIT_MANAGER()": "37a9c983", + "LOGGER()": "2c82595f", + "MAX_DEPOSIT_SUBTREE()": "554056e4", + "MAX_DEPTH()": "a27154ba", + "MAX_TXS_PER_BATCH()": "4a1eb591", + "MERKLE_UTILS()": "6d74b23d", + "MIN_GAS_LIMIT_LEFT()": "106e9921", + "PARAM_MANAGER()": "e69e93ea", + "ROLLUP_CORE()": "a8b2d001", + "STAKE_AMOUNT()": "faf5625f", + "TEST_TOKEN()": "f8989c36", + "TIME_TO_FINALISE()": "5d4cbd0d", + "TOKEN_REGISTRY()": "8a5b1d7a", + "WITHDRAW_MANAGER()": "77773701", + "ZERO_BYTES32()": "069321b0", + "_CHAIN_ID()": "203303fb", + "_MAX_DEPOSIT_SUBTREE()": "64201df6", + "_MAX_DEPTH()": "d52782f8", + "_MAX_TXS_PER_BATCH()": "4a6153e8", + "_MIN_GAS_LIMIT_LEFT()": "c2ed4caa", + "_STAKE_AMOUNT()": "9f9956fe", + "_TIME_TO_FINALISE()": "59624eee", + "_ZERO_BYTES32()": "366fa706" + } + } + } + }, + "contracts/libs/RollupUtils.sol": { + "RollupUtils": { + "abi": [ + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "name": "BalanceFromAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "name": "BytesFromAccount", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction", + "name": "_tx", + "type": "tuple" + } + ], + "name": "BytesFromTx", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "account", + "type": "tuple" + } + ], + "name": "HashFromAccount", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "from", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "to", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "amount", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct Types.Transaction", + "name": "_tx", + "type": "tuple" + } + ], + "name": "HashFromTx", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "internalType": "struct Types.PDALeaf", + "name": "_PDA_Leaf", + "type": "tuple" + } + ], + "name": "PDALeafToHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "original_account", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "new_balance", + "type": "uint256" + } + ], + "name": "UpdateBalanceInAccount", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "ID", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "internalType": "struct Types.UserAccount", + "name": "updated_account", + "type": "tuple" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "pub", + "type": "bytes" + } + ], + "name": "calculateAddress", + "outputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "610c5f610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c806361efb43e1161006557806361efb43e14610157578063ae97e1bf14610187578063dbcbdf9f146101b7578063e8a4c04e146101e757610092565b8063073568bd146100975780630d68f924146100c757806312296263146100f757806326b3285d14610127575b600080fd5b6100b160048036036100ac91908101906106c3565b610217565b6040516100be9190610a17565b60405180910390f35b6100e160048036036100dc91908101906106c3565b610225565b6040516100ee919061097b565b60405180910390f35b610111600480360361010c91908101906106ec565b61023e565b60405161011e91906109fc565b60405180910390f35b610141600480360361013c9190810190610641565b610259565b60405161014e919061097b565b60405180910390f35b610171600480360361016c91908101906106c3565b61028d565b60405161017e91906109b8565b60405180910390f35b6101a1600480360361019c9190810190610682565b6102cc565b6040516101ae919061097b565b60405180910390f35b6101d160048036036101cc9190810190610682565b6102e5565b6040516101de91906109b8565b60405180910390f35b61020160048036036101fc9190810190610600565b61030e565b60405161020e9190610960565b60405180910390f35b600081604001519050919050565b60006102308261028d565b805190602001209050919050565b61024661032a565b8183604001818152505082905092915050565b600081600001516040516020016102709190610996565b604051602081830303815290604052805190602001209050919050565b606081600001518260400151836060015184602001516040516020016102b69493929190610a32565b6040516020818303038152906040529050919050565b60006102d7826102e5565b805190602001209050919050565b6060816040516020016102f891906109da565b6040516020818303038152906040529050919050565b6000808280519060200120905080600052600051915050919050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600082601f83011261036357600080fd5b813561037661037182610aa4565b610a77565b9150808252602083016020830185838301111561039257600080fd5b61039d838284610b9b565b50505092915050565b600082601f8301126103b757600080fd5b81356103ca6103c582610ad0565b610a77565b915080825260208301602083018583830111156103e657600080fd5b6103f1838284610b9b565b50505092915050565b60006020828403121561040c57600080fd5b6104166020610a77565b9050600082013567ffffffffffffffff81111561043257600080fd5b61043e84828501610352565b60008301525092915050565b6000610160828403121561045d57600080fd5b61046760a0610a77565b90506000610477848285016104ee565b600083015250608061048b848285016104ee565b6020830152506101006104a0848285016105d6565b6040830152506101206104b5848285016105eb565b60608301525061014082013567ffffffffffffffff8111156104d657600080fd5b6104e284828501610352565b60808301525092915050565b60006080828403121561050057600080fd5b61050a6080610a77565b9050600061051a848285016105d6565b600083015250602061052e848285016105d6565b6020830152506040610542848285016105d6565b6040830152506060610556848285016105d6565b60608301525092915050565b60006080828403121561057457600080fd5b61057e6080610a77565b9050600061058e848285016105d6565b60008301525060206105a2848285016105d6565b60208301525060406105b6848285016105d6565b60408301525060606105ca848285016105d6565b60608301525092915050565b6000813590506105e581610bee565b92915050565b6000813590506105fa81610c05565b92915050565b60006020828403121561061257600080fd5b600082013567ffffffffffffffff81111561062c57600080fd5b610638848285016103a6565b91505092915050565b60006020828403121561065357600080fd5b600082013567ffffffffffffffff81111561066d57600080fd5b610679848285016103fa565b91505092915050565b60006020828403121561069457600080fd5b600082013567ffffffffffffffff8111156106ae57600080fd5b6106ba8482850161044a565b91505092915050565b6000608082840312156106d557600080fd5b60006106e384828501610562565b91505092915050565b60008060a083850312156106ff57600080fd5b600061070d85828601610562565b925050608061071e858286016105d6565b9150509250929050565b61073181610b45565b82525050565b61074081610b57565b82525050565b600061075182610b07565b61075b8185610b34565b935061076b818560208601610baa565b61077481610bdd565b840191505092915050565b600061078a82610afc565b6107948185610b12565b93506107a4818560208601610baa565b6107ad81610bdd565b840191505092915050565b60006107c382610afc565b6107cd8185610b23565b93506107dd818560208601610baa565b6107e681610bdd565b840191505092915050565b60006101608301600083015161080a60008601826108c0565b50602083015161081d60808601826108c0565b506040830151610831610100860182610915565b506060830151610845610120860182610951565b50608083015184820361014086015261085e828261077f565b9150508091505092915050565b6080820160008201516108816000850182610942565b5060208201516108946020850182610942565b5060408201516108a76040850182610942565b5060608201516108ba6060850182610942565b50505050565b6080820160008201516108d66000850182610915565b5060208201516108e96020850182610915565b5060408201516108fc6040850182610915565b50606082015161090f6060850182610915565b50505050565b61091e81610b81565b82525050565b61092d81610b81565b82525050565b61093c81610b81565b82525050565b61094b81610b81565b82525050565b61095a81610b8b565b82525050565b60006020820190506109756000830184610728565b92915050565b60006020820190506109906000830184610737565b92915050565b600060208201905081810360008301526109b081846107b8565b905092915050565b600060208201905081810360008301526109d28184610746565b905092915050565b600060208201905081810360008301526109f481846107f1565b905092915050565b6000608082019050610a11600083018461086b565b92915050565b6000602082019050610a2c6000830184610933565b92915050565b6000608082019050610a476000830187610924565b610a546020830186610924565b610a616040830185610924565b610a6e6060830184610924565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715610a9a57600080fd5b8060405250919050565b600067ffffffffffffffff821115610abb57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610ae757600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610b5082610b61565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015610bc8578082015181840152602081019050610bad565b83811115610bd7576000848401525b50505050565b6000601f19601f8301169050919050565b610bf781610b81565b8114610c0257600080fd5b50565b610c0e81610b8b565b8114610c1957600080fd5b5056fea365627a7a72315820d1ba011e41e9b19b42a7e7c9dbc80ef1dcf510f963f18d08ece559a7d69269eb6c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH2 0xC5F PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x92 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61EFB43E GT PUSH2 0x65 JUMPI DUP1 PUSH4 0x61EFB43E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xAE97E1BF EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xDBCBDF9F EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xE8A4C04E EQ PUSH2 0x1E7 JUMPI PUSH2 0x92 JUMP JUMPDEST DUP1 PUSH4 0x73568BD EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xD68F924 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x12296263 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x26B3285D EQ PUSH2 0x127 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0xAC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBE SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0xDC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x225 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEE SWAP2 SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x10C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11E SWAP2 SWAP1 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x13C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x641 JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x28D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0x9B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x9B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0x960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x230 DUP3 PUSH2 0x28D JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x246 PUSH2 0x32A JUMP JUMPDEST DUP2 DUP4 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x270 SWAP2 SWAP1 PUSH2 0x996 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2B6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA32 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D7 DUP3 PUSH2 0x2E5 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2F8 SWAP2 SWAP1 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 MLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x376 PUSH2 0x371 DUP3 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x39D DUP4 DUP3 DUP5 PUSH2 0xB9B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3CA PUSH2 0x3C5 DUP3 PUSH2 0xAD0 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F1 DUP4 DUP3 DUP5 PUSH2 0xB9B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x416 PUSH1 0x20 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43E DUP5 DUP3 DUP6 ADD PUSH2 0x352 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 PUSH1 0xA0 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x477 DUP5 DUP3 DUP6 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x48B DUP5 DUP3 DUP6 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x4A0 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x4B5 DUP5 DUP3 DUP6 ADD PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E2 DUP5 DUP3 DUP6 ADD PUSH2 0x352 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50A PUSH1 0x80 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x51A DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x52E DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x542 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x556 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x57E PUSH1 0x80 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58E DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x5A2 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x5B6 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x5CA DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5E5 DUP2 PUSH2 0xBEE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5FA DUP2 PUSH2 0xC05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x638 DUP5 DUP3 DUP6 ADD PUSH2 0x3A6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x3FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BA DUP5 DUP3 DUP6 ADD PUSH2 0x44A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E3 DUP5 DUP3 DUP6 ADD PUSH2 0x562 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x70D DUP6 DUP3 DUP7 ADD PUSH2 0x562 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x71E DUP6 DUP3 DUP7 ADD PUSH2 0x5D6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x731 DUP2 PUSH2 0xB45 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x740 DUP2 PUSH2 0xB57 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x751 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH2 0x75B DUP2 DUP6 PUSH2 0xB34 JUMP JUMPDEST SWAP4 POP PUSH2 0x76B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x774 DUP2 PUSH2 0xBDD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP3 PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x794 DUP2 DUP6 PUSH2 0xB12 JUMP JUMPDEST SWAP4 POP PUSH2 0x7A4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x7AD DUP2 PUSH2 0xBDD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C3 DUP3 PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x7CD DUP2 DUP6 PUSH2 0xB23 JUMP JUMPDEST SWAP4 POP PUSH2 0x7DD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0xBDD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x80A PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x8C0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x81D PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x8C0 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x831 PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x845 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x951 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x85E DUP3 DUP3 PUSH2 0x77F JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x881 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x894 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x8A7 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x8BA PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x8D6 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x8E9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x8FC PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x90F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x91E DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x92D DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x93C DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x94B DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x95A DUP2 PUSH2 0xB8B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x975 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x728 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x990 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x737 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9B0 DUP2 DUP5 PUSH2 0x7B8 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9D2 DUP2 DUP5 PUSH2 0x746 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9F4 DUP2 DUP5 PUSH2 0x7F1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xA11 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x86B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xA2C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x933 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xA47 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x924 JUMP JUMPDEST PUSH2 0xA54 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x924 JUMP JUMPDEST PUSH2 0xA61 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x924 JUMP JUMPDEST PUSH2 0xA6E PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x924 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xAE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB50 DUP3 PUSH2 0xB61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBC8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xBAD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBF7 DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP2 EQ PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xC0E DUP2 PUSH2 0xB8B JUMP JUMPDEST DUP2 EQ PUSH2 0xC19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xD1 0xBA ADD 0x1E COINBASE 0xE9 0xB1 SWAP12 TIMESTAMP 0xA7 0xE7 0xC9 0xDB 0xC8 0xE CALL 0xDC CREATE2 LT 0xF9 PUSH4 0xF18D08EC 0xE5 MSIZE 0xA7 0xD6 SWAP3 PUSH10 0xEB6C6578706572696D65 PUSH15 0x74616CF564736F6C634300050F0040 ", + "sourceMap": "97:2061:21:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c806361efb43e1161006557806361efb43e14610157578063ae97e1bf14610187578063dbcbdf9f146101b7578063e8a4c04e146101e757610092565b8063073568bd146100975780630d68f924146100c757806312296263146100f757806326b3285d14610127575b600080fd5b6100b160048036036100ac91908101906106c3565b610217565b6040516100be9190610a17565b60405180910390f35b6100e160048036036100dc91908101906106c3565b610225565b6040516100ee919061097b565b60405180910390f35b610111600480360361010c91908101906106ec565b61023e565b60405161011e91906109fc565b60405180910390f35b610141600480360361013c9190810190610641565b610259565b60405161014e919061097b565b60405180910390f35b610171600480360361016c91908101906106c3565b61028d565b60405161017e91906109b8565b60405180910390f35b6101a1600480360361019c9190810190610682565b6102cc565b6040516101ae919061097b565b60405180910390f35b6101d160048036036101cc9190810190610682565b6102e5565b6040516101de91906109b8565b60405180910390f35b61020160048036036101fc9190810190610600565b61030e565b60405161020e9190610960565b60405180910390f35b600081604001519050919050565b60006102308261028d565b805190602001209050919050565b61024661032a565b8183604001818152505082905092915050565b600081600001516040516020016102709190610996565b604051602081830303815290604052805190602001209050919050565b606081600001518260400151836060015184602001516040516020016102b69493929190610a32565b6040516020818303038152906040529050919050565b60006102d7826102e5565b805190602001209050919050565b6060816040516020016102f891906109da565b6040516020818303038152906040529050919050565b6000808280519060200120905080600052600051915050919050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600082601f83011261036357600080fd5b813561037661037182610aa4565b610a77565b9150808252602083016020830185838301111561039257600080fd5b61039d838284610b9b565b50505092915050565b600082601f8301126103b757600080fd5b81356103ca6103c582610ad0565b610a77565b915080825260208301602083018583830111156103e657600080fd5b6103f1838284610b9b565b50505092915050565b60006020828403121561040c57600080fd5b6104166020610a77565b9050600082013567ffffffffffffffff81111561043257600080fd5b61043e84828501610352565b60008301525092915050565b6000610160828403121561045d57600080fd5b61046760a0610a77565b90506000610477848285016104ee565b600083015250608061048b848285016104ee565b6020830152506101006104a0848285016105d6565b6040830152506101206104b5848285016105eb565b60608301525061014082013567ffffffffffffffff8111156104d657600080fd5b6104e284828501610352565b60808301525092915050565b60006080828403121561050057600080fd5b61050a6080610a77565b9050600061051a848285016105d6565b600083015250602061052e848285016105d6565b6020830152506040610542848285016105d6565b6040830152506060610556848285016105d6565b60608301525092915050565b60006080828403121561057457600080fd5b61057e6080610a77565b9050600061058e848285016105d6565b60008301525060206105a2848285016105d6565b60208301525060406105b6848285016105d6565b60408301525060606105ca848285016105d6565b60608301525092915050565b6000813590506105e581610bee565b92915050565b6000813590506105fa81610c05565b92915050565b60006020828403121561061257600080fd5b600082013567ffffffffffffffff81111561062c57600080fd5b610638848285016103a6565b91505092915050565b60006020828403121561065357600080fd5b600082013567ffffffffffffffff81111561066d57600080fd5b610679848285016103fa565b91505092915050565b60006020828403121561069457600080fd5b600082013567ffffffffffffffff8111156106ae57600080fd5b6106ba8482850161044a565b91505092915050565b6000608082840312156106d557600080fd5b60006106e384828501610562565b91505092915050565b60008060a083850312156106ff57600080fd5b600061070d85828601610562565b925050608061071e858286016105d6565b9150509250929050565b61073181610b45565b82525050565b61074081610b57565b82525050565b600061075182610b07565b61075b8185610b34565b935061076b818560208601610baa565b61077481610bdd565b840191505092915050565b600061078a82610afc565b6107948185610b12565b93506107a4818560208601610baa565b6107ad81610bdd565b840191505092915050565b60006107c382610afc565b6107cd8185610b23565b93506107dd818560208601610baa565b6107e681610bdd565b840191505092915050565b60006101608301600083015161080a60008601826108c0565b50602083015161081d60808601826108c0565b506040830151610831610100860182610915565b506060830151610845610120860182610951565b50608083015184820361014086015261085e828261077f565b9150508091505092915050565b6080820160008201516108816000850182610942565b5060208201516108946020850182610942565b5060408201516108a76040850182610942565b5060608201516108ba6060850182610942565b50505050565b6080820160008201516108d66000850182610915565b5060208201516108e96020850182610915565b5060408201516108fc6040850182610915565b50606082015161090f6060850182610915565b50505050565b61091e81610b81565b82525050565b61092d81610b81565b82525050565b61093c81610b81565b82525050565b61094b81610b81565b82525050565b61095a81610b8b565b82525050565b60006020820190506109756000830184610728565b92915050565b60006020820190506109906000830184610737565b92915050565b600060208201905081810360008301526109b081846107b8565b905092915050565b600060208201905081810360008301526109d28184610746565b905092915050565b600060208201905081810360008301526109f481846107f1565b905092915050565b6000608082019050610a11600083018461086b565b92915050565b6000602082019050610a2c6000830184610933565b92915050565b6000608082019050610a476000830187610924565b610a546020830186610924565b610a616040830185610924565b610a6e6060830184610924565b95945050505050565b6000604051905081810181811067ffffffffffffffff82111715610a9a57600080fd5b8060405250919050565b600067ffffffffffffffff821115610abb57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115610ae757600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610b5082610b61565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b83811015610bc8578082015181840152602081019050610bad565b83811115610bd7576000848401525b50505050565b6000601f19601f8301169050919050565b610bf781610b81565b8114610c0257600080fd5b50565b610c0e81610b8b565b8114610c1957600080fd5b5056fea365627a7a72315820d1ba011e41e9b19b42a7e7c9dbc80ef1dcf510f963f18d08ece559a7d69269eb6c6578706572696d656e74616cf564736f6c634300050f0040", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x92 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x61EFB43E GT PUSH2 0x65 JUMPI DUP1 PUSH4 0x61EFB43E EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0xAE97E1BF EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0xDBCBDF9F EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0xE8A4C04E EQ PUSH2 0x1E7 JUMPI PUSH2 0x92 JUMP JUMPDEST DUP1 PUSH4 0x73568BD EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xD68F924 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x12296263 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0x26B3285D EQ PUSH2 0x127 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0xAC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x217 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBE SWAP2 SWAP1 PUSH2 0xA17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0xDC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x225 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEE SWAP2 SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x10C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x23E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11E SWAP2 SWAP1 PUSH2 0x9FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x13C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x641 JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x16C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x6C3 JUMP JUMPDEST PUSH2 0x28D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0x9B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x19C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1AE SWAP2 SWAP1 PUSH2 0x97B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1CC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x682 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x9B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x201 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x1FC SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x600 JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20E SWAP2 SWAP1 PUSH2 0x960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x230 DUP3 PUSH2 0x28D JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x246 PUSH2 0x32A JUMP JUMPDEST DUP2 DUP4 PUSH1 0x40 ADD DUP2 DUP2 MSTORE POP POP DUP3 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x270 SWAP2 SWAP1 PUSH2 0x996 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2B6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA32 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D7 DUP3 PUSH2 0x2E5 JUMP JUMPDEST DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2F8 SWAP2 SWAP1 PUSH2 0x9DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 MSTORE PUSH1 0x0 MLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x376 PUSH2 0x371 DUP3 PUSH2 0xAA4 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x39D DUP4 DUP3 DUP5 PUSH2 0xB9B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3CA PUSH2 0x3C5 DUP3 PUSH2 0xAD0 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP4 ADD DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F1 DUP4 DUP3 DUP5 PUSH2 0xB9B JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x416 PUSH1 0x20 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43E DUP5 DUP3 DUP6 ADD PUSH2 0x352 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x467 PUSH1 0xA0 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x477 DUP5 DUP3 DUP6 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x48B DUP5 DUP3 DUP6 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH2 0x100 PUSH2 0x4A0 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x120 PUSH2 0x4B5 DUP5 DUP3 DUP6 ADD PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x140 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E2 DUP5 DUP3 DUP6 ADD PUSH2 0x352 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x50A PUSH1 0x80 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x51A DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x52E DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x542 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x556 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x57E PUSH1 0x80 PUSH2 0xA77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x58E DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x5A2 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x5B6 DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x5CA DUP5 DUP3 DUP6 ADD PUSH2 0x5D6 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5E5 DUP2 PUSH2 0xBEE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5FA DUP2 PUSH2 0xC05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x638 DUP5 DUP3 DUP6 ADD PUSH2 0x3A6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x679 DUP5 DUP3 DUP6 ADD PUSH2 0x3FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6BA DUP5 DUP3 DUP6 ADD PUSH2 0x44A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x6E3 DUP5 DUP3 DUP6 ADD PUSH2 0x562 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x70D DUP6 DUP3 DUP7 ADD PUSH2 0x562 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x71E DUP6 DUP3 DUP7 ADD PUSH2 0x5D6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x731 DUP2 PUSH2 0xB45 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x740 DUP2 PUSH2 0xB57 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x751 DUP3 PUSH2 0xB07 JUMP JUMPDEST PUSH2 0x75B DUP2 DUP6 PUSH2 0xB34 JUMP JUMPDEST SWAP4 POP PUSH2 0x76B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x774 DUP2 PUSH2 0xBDD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP3 PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x794 DUP2 DUP6 PUSH2 0xB12 JUMP JUMPDEST SWAP4 POP PUSH2 0x7A4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x7AD DUP2 PUSH2 0xBDD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C3 DUP3 PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x7CD DUP2 DUP6 PUSH2 0xB23 JUMP JUMPDEST SWAP4 POP PUSH2 0x7DD DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xBAA JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0xBDD JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x80A PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x8C0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x81D PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x8C0 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x831 PUSH2 0x100 DUP7 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x845 PUSH2 0x120 DUP7 ADD DUP3 PUSH2 0x951 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH2 0x140 DUP7 ADD MSTORE PUSH2 0x85E DUP3 DUP3 PUSH2 0x77F JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x881 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x894 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x8A7 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x8BA PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x942 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x8D6 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x8E9 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x8FC PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x90F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x915 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x91E DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x92D DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x93C DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x94B DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x95A DUP2 PUSH2 0xB8B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x975 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x728 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x990 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x737 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9B0 DUP2 DUP5 PUSH2 0x7B8 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9D2 DUP2 DUP5 PUSH2 0x746 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9F4 DUP2 DUP5 PUSH2 0x7F1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xA11 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x86B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xA2C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x933 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0xA47 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x924 JUMP JUMPDEST PUSH2 0xA54 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x924 JUMP JUMPDEST PUSH2 0xA61 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x924 JUMP JUMPDEST PUSH2 0xA6E PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x924 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xAE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB50 DUP3 PUSH2 0xB61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBC8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xBAD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xBD7 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBF7 DUP2 PUSH2 0xB81 JUMP JUMPDEST DUP2 EQ PUSH2 0xC02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xC0E DUP2 PUSH2 0xB8B JUMP JUMPDEST DUP2 EQ PUSH2 0xC19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG3 PUSH6 0x627A7A723158 KECCAK256 0xD1 0xBA ADD 0x1E COINBASE 0xE9 0xB1 SWAP12 TIMESTAMP 0xA7 0xE7 0xC9 0xDB 0xC8 0xE CALL 0xDC CREATE2 LT 0xF9 PUSH4 0xF18D08EC 0xE5 MSIZE 0xA7 0xD6 SWAP3 PUSH10 0xEB6C6578706572696D65 PUSH15 0x74616CF564736F6C634300050F0040 ", + "sourceMap": "97:2061:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:159;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;860:177;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;420:269;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;183:176;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1043:310;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1574:159;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1415:153;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1917:239;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;695:159;802:7;832;:15;;;825:22;;695:159;;;:::o;860:177::-;964:7;1004:25;1021:7;1004:16;:25::i;:::-;994:36;;;;;;987:43;;860:177;;;:::o;420:269::-;559:40;;:::i;:::-;638:11;611:16;:24;;:38;;;;;666:16;659:23;;420:269;;;;:::o;183:176::-;283:7;334:9;:16;;;323:28;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;323:28:21;;;313:39;;;;;;306:46;;183:176;;;:::o;1043:310::-;1148:12;1223:7;:10;;;1251:7;:15;;;1284:7;:13;;;1315:7;:17;;;1195:151;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1195:151:21;;;1176:170;;1043:310;;;:::o;1574:159::-;1669:7;1709:16;1721:3;1709:11;:16::i;:::-;1699:27;;;;;;1692:34;;1574:159;;;:::o;1415:153::-;1511:12;1557:3;1546:15;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1546:15:21;;;1539:22;;1415:153;;;:::o;1917:239::-;2006:12;2034;2059:3;2049:14;;;;;;2034:29;;2106:4;2103:1;2096:15;2138:1;2132:8;2124:16;;2082:68;;;;:::o;97:2061::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6:432:-1:-;;103:3;96:4;88:6;84:17;80:27;70:2;;121:1;118;111:12;70:2;158:6;145:20;180:60;195:44;232:6;195:44;;;180:60;;;171:69;;260:6;253:5;246:21;296:4;288:6;284:17;329:4;322:5;318:16;364:3;355:6;350:3;346:16;343:25;340:2;;;381:1;378;371:12;340:2;391:41;425:6;420:3;415;391:41;;;63:375;;;;;;;;447:440;;548:3;541:4;533:6;529:17;525:27;515:2;;566:1;563;556:12;515:2;603:6;590:20;625:64;640:48;681:6;640:48;;;625:64;;;616:73;;709:6;702:5;695:21;745:4;737:6;733:17;778:4;771:5;767:16;813:3;804:6;799:3;795:16;792:25;789:2;;;830:1;827;820:12;789:2;840:41;874:6;869:3;864;840:41;;;508:379;;;;;;;;922:416;;1036:4;1024:9;1019:3;1015:19;1011:30;1008:2;;;1054:1;1051;1044:12;1008:2;1072:20;1087:4;1072:20;;;1063:29;;1172:1;1161:9;1157:17;1144:31;1195:18;1187:6;1184:30;1181:2;;;1227:1;1224;1217:12;1181:2;1262:54;1312:3;1303:6;1292:9;1288:22;1262:54;;;1255:4;1248:5;1244:16;1237:80;1102:226;1002:336;;;;;1376:1059;;1494:6;1482:9;1477:3;1473:19;1469:32;1466:2;;;1514:1;1511;1504:12;1466:2;1532:20;1547:4;1532:20;;;1523:29;;1602:1;1634:74;1704:3;1695:6;1684:9;1680:22;1634:74;;;1627:4;1620:5;1616:16;1609:100;1562:158;1768:3;1802:74;1872:3;1863:6;1852:9;1848:22;1802:74;;;1795:4;1788:5;1784:16;1777:100;1730:158;1943:3;1977:49;2022:3;2013:6;2002:9;1998:22;1977:49;;;1970:4;1963:5;1959:16;1952:75;1898:140;2090:3;2124:48;2168:3;2159:6;2148:9;2144:22;2124:48;;;2117:4;2110:5;2106:16;2099:74;2048:136;2267:3;2256:9;2252:19;2239:33;2292:18;2284:6;2281:30;2278:2;;;2324:1;2321;2314:12;2278:2;2359:54;2409:3;2400:6;2389:9;2385:22;2359:54;;;2352:4;2345:5;2341:16;2334:80;2194:231;1460:975;;;;;2473:762;;2587:4;2575:9;2570:3;2566:19;2562:30;2559:2;;;2605:1;2602;2595:12;2559:2;2623:20;2638:4;2623:20;;;2614:29;;2691:1;2723:49;2768:3;2759:6;2748:9;2744:22;2723:49;;;2716:4;2709:5;2705:16;2698:75;2653:131;2839:2;2872:49;2917:3;2908:6;2897:9;2893:22;2872:49;;;2865:4;2858:5;2854:16;2847:75;2794:139;2986:2;3019:49;3064:3;3055:6;3044:9;3040:22;3019:49;;;3012:4;3005:5;3001:16;2994:75;2943:137;3131:2;3164:49;3209:3;3200:6;3189:9;3185:22;3164:49;;;3157:4;3150:5;3146:16;3139:75;3090:135;2553:682;;;;;3273:766;;3391:4;3379:9;3374:3;3370:19;3366:30;3363:2;;;3409:1;3406;3399:12;3363:2;3427:20;3442:4;3427:20;;;3418:29;;3495:1;3527:49;3572:3;3563:6;3552:9;3548:22;3527:49;;;3520:4;3513:5;3509:16;3502:75;3457:131;3643:2;3676:49;3721:3;3712:6;3701:9;3697:22;3676:49;;;3669:4;3662:5;3658:16;3651:75;3598:139;3790:2;3823:49;3868:3;3859:6;3848:9;3844:22;3823:49;;;3816:4;3809:5;3805:16;3798:75;3747:137;3935:2;3968:49;4013:3;4004:6;3993:9;3989:22;3968:49;;;3961:4;3954:5;3950:16;3943:75;3894:135;3357:682;;;;;4046:130;;4126:6;4113:20;4104:29;;4138:33;4165:5;4138:33;;;4098:78;;;;;4183:128;;4262:6;4249:20;4240:29;;4274:32;4300:5;4274:32;;;4234:77;;;;;4318:345;;4431:2;4419:9;4410:7;4406:23;4402:32;4399:2;;;4447:1;4444;4437:12;4399:2;4510:1;4499:9;4495:17;4482:31;4533:18;4525:6;4522:30;4519:2;;;4565:1;4562;4555:12;4519:2;4585:62;4639:7;4630:6;4619:9;4615:22;4585:62;;;4575:72;;4461:192;4393:270;;;;;4670:377;;4799:2;4787:9;4778:7;4774:23;4770:32;4767:2;;;4815:1;4812;4805:12;4767:2;4878:1;4867:9;4863:17;4850:31;4901:18;4893:6;4890:30;4887:2;;;4933:1;4930;4923:12;4887:2;4953:78;5023:7;5014:6;5003:9;4999:22;4953:78;;;4943:88;;4829:208;4761:286;;;;;5054:385;;5187:2;5175:9;5166:7;5162:23;5158:32;5155:2;;;5203:1;5200;5193:12;5155:2;5266:1;5255:9;5251:17;5238:31;5289:18;5281:6;5278:30;5275:2;;;5321:1;5318;5311:12;5275:2;5341:82;5415:7;5406:6;5395:9;5391:22;5341:82;;;5331:92;;5217:212;5149:290;;;;;5446:300;;5579:3;5567:9;5558:7;5554:23;5550:33;5547:2;;;5596:1;5593;5586:12;5547:2;5631:1;5648:82;5722:7;5713:6;5702:9;5698:22;5648:82;;;5638:92;;5610:126;5541:205;;;;;5753:426;;;5903:3;5891:9;5882:7;5878:23;5874:33;5871:2;;;5920:1;5917;5910:12;5871:2;5955:1;5972:82;6046:7;6037:6;6026:9;6022:22;5972:82;;;5962:92;;5934:126;6091:3;6110:53;6155:7;6146:6;6135:9;6131:22;6110:53;;;6100:63;;6070:99;5865:314;;;;;;6186:121;6277:24;6295:5;6277:24;;;6272:3;6265:37;6259:48;;;6314:121;6405:24;6423:5;6405:24;;;6400:3;6393:37;6387:48;;;6442:359;;6560:38;6592:5;6560:38;;;6610:78;6681:6;6676:3;6610:78;;;6603:85;;6693:52;6738:6;6733:3;6726:4;6719:5;6715:16;6693:52;;;6766:29;6788:6;6766:29;;;6761:3;6757:39;6750:46;;6540:261;;;;;;6808:315;;6904:34;6932:5;6904:34;;;6950:60;7003:6;6998:3;6950:60;;;6943:67;;7015:52;7060:6;7055:3;7048:4;7041:5;7037:16;7015:52;;;7088:29;7110:6;7088:29;;;7083:3;7079:39;7072:46;;6884:239;;;;;;7130:335;;7236:34;7264:5;7236:34;;;7282:70;7345:6;7340:3;7282:70;;;7275:77;;7357:52;7402:6;7397:3;7390:4;7383:5;7379:16;7357:52;;;7430:29;7452:6;7430:29;;;7425:3;7421:39;7414:46;;7216:249;;;;;;7531:1159;;7690:6;7685:3;7681:16;7775:4;7768:5;7764:16;7758:23;7787:117;7898:4;7893:3;7889:14;7875:12;7787:117;;;7712:198;7981:4;7974:5;7970:16;7964:23;7993:117;8104:4;8099:3;8095:14;8081:12;7993:117;;;7920:196;8194:4;8187:5;8183:16;8177:23;8206:65;8263:6;8258:3;8254:16;8240:12;8206:65;;;8126:151;8352:4;8345:5;8341:16;8335:23;8364:63;8419:6;8414:3;8410:16;8396:12;8364:63;;;8287:146;8511:4;8504:5;8500:16;8494:23;8565:3;8559:4;8555:14;8546:6;8541:3;8537:16;8530:40;8585:67;8647:4;8633:12;8585:67;;;8577:75;;8443:221;8681:4;8674:11;;7663:1027;;;;;;8756:839;8915:4;8910:3;8906:14;8996:4;8989:5;8985:16;8979:23;9008:71;9073:4;9068:3;9064:14;9050:12;9008:71;;;8935:150;9163:4;9156:5;9152:16;9146:23;9175:71;9240:4;9235:3;9231:14;9217:12;9175:71;;;9095:157;9328:4;9321:5;9317:16;9311:23;9340:71;9405:4;9400:3;9396:14;9382:12;9340:71;;;9262:155;9491:4;9484:5;9480:16;9474:23;9503:71;9568:4;9563:3;9559:14;9545:12;9503:71;;;9427:153;8888:707;;;;9661:785;9798:4;9793:3;9789:14;9879:4;9872:5;9868:16;9862:23;9891:63;9948:4;9943:3;9939:14;9925:12;9891:63;;;9818:142;10038:4;10031:5;10027:16;10021:23;10050:63;10107:4;10102:3;10098:14;10084:12;10050:63;;;9970:149;10195:4;10188:5;10184:16;10178:23;10207:63;10264:4;10259:3;10255:14;10241:12;10207:63;;;10129:147;10350:4;10343:5;10339:16;10333:23;10362:63;10419:4;10414:3;10410:14;10396:12;10362:63;;;10286:145;9771:675;;;;10453:103;10526:24;10544:5;10526:24;;;10521:3;10514:37;10508:48;;;10563:113;10646:24;10664:5;10646:24;;;10641:3;10634:37;10628:48;;;10683:121;10774:24;10792:5;10774:24;;;10769:3;10762:37;10756:48;;;10811:111;10892:24;10910:5;10892:24;;;10887:3;10880:37;10874:48;;;10929:100;11000:23;11017:5;11000:23;;;10995:3;10988:36;10982:47;;;11036:229;;11162:2;11151:9;11147:18;11139:26;;11176:79;11252:1;11241:9;11237:17;11228:6;11176:79;;;11133:132;;;;;11272:229;;11398:2;11387:9;11383:18;11375:26;;11412:79;11488:1;11477:9;11473:17;11464:6;11412:79;;;11369:132;;;;;11508:289;;11640:2;11629:9;11625:18;11617:26;;11690:9;11684:4;11680:20;11676:1;11665:9;11661:17;11654:47;11715:72;11782:4;11773:6;11715:72;;;11707:80;;11611:186;;;;;11804:313;;11948:2;11937:9;11933:18;11925:26;;11998:9;11992:4;11988:20;11984:1;11973:9;11969:17;11962:47;12023:84;12102:4;12093:6;12023:84;;;12015:92;;11919:198;;;;;12124:377;;12300:2;12289:9;12285:18;12277:26;;12350:9;12344:4;12340:20;12336:1;12325:9;12321:17;12314:47;12375:116;12486:4;12477:6;12375:116;;;12367:124;;12271:230;;;;;12508:346;;12692:3;12681:9;12677:19;12669:27;;12707:137;12841:1;12830:9;12826:17;12817:6;12707:137;;;12663:191;;;;;12861:229;;12987:2;12976:9;12972:18;12964:26;;13001:79;13077:1;13066:9;13062:17;13053:6;13001:79;;;12958:132;;;;;13097:547;;13299:3;13288:9;13284:19;13276:27;;13314:71;13382:1;13371:9;13367:17;13358:6;13314:71;;;13396:72;13464:2;13453:9;13449:18;13440:6;13396:72;;;13479;13547:2;13536:9;13532:18;13523:6;13479:72;;;13562;13630:2;13619:9;13615:18;13606:6;13562:72;;;13270:374;;;;;;;;13651:256;;13713:2;13707:9;13697:19;;13751:4;13743:6;13739:17;13850:6;13838:10;13835:22;13814:18;13802:10;13799:34;13796:62;13793:2;;;13871:1;13868;13861:12;13793:2;13891:10;13887:2;13880:22;13691:216;;;;;13914:317;;14053:18;14045:6;14042:30;14039:2;;;14085:1;14082;14075:12;14039:2;14152:4;14148:9;14141:4;14133:6;14129:17;14125:33;14117:41;;14216:4;14210;14206:15;14198:23;;13976:255;;;;14238:321;;14381:18;14373:6;14370:30;14367:2;;;14413:1;14410;14403:12;14367:2;14480:4;14476:9;14469:4;14461:6;14457:17;14453:33;14445:41;;14544:4;14538;14534:15;14526:23;;14304:255;;;;14566:117;;14655:5;14649:12;14639:22;;14620:63;;;;14690:121;;14783:5;14777:12;14767:22;;14748:63;;;;14819:152;;14923:6;14918:3;14911:19;14960:4;14955:3;14951:14;14936:29;;14904:67;;;;;14980:162;;15094:6;15089:3;15082:19;15131:4;15126:3;15122:14;15107:29;;15075:67;;;;;15151:170;;15273:6;15268:3;15261:19;15310:4;15305:3;15301:14;15286:29;;15254:67;;;;;15329:91;;15391:24;15409:5;15391:24;;;15380:35;;15374:46;;;;15427:72;;15489:5;15478:16;;15472:27;;;;15506:121;;15579:42;15572:5;15568:54;15557:65;;15551:76;;;;15634:72;;15696:5;15685:16;;15679:27;;;;15713:88;;15785:10;15778:5;15774:22;15763:33;;15757:44;;;;15809:145;15890:6;15885:3;15880;15867:30;15946:1;15937:6;15932:3;15928:16;15921:27;15860:94;;;;15963:268;16028:1;16035:101;16049:6;16046:1;16043:13;16035:101;;;16125:1;16120:3;16116:11;16110:18;16106:1;16101:3;16097:11;16090:39;16071:2;16068:1;16064:10;16059:15;;16035:101;;;16151:6;16148:1;16145:13;16142:2;;;16216:1;16207:6;16202:3;16198:16;16191:27;16142:2;16012:219;;;;;16239:97;;16327:2;16323:7;16318:2;16311:5;16307:14;16303:28;16293:38;;16287:49;;;;16344:117;16413:24;16431:5;16413:24;;;16406:5;16403:35;16393:2;;16452:1;16449;16442:12;16393:2;16387:74;;16468:115;16536:23;16553:5;16536:23;;;16529:5;16526:34;16516:2;;16574:1;16571;16564:12;16516:2;16510:73;" + }, + "methodIdentifiers": { + "BalanceFromAccount(Types.UserAccount)": "073568bd", + "BytesFromAccount(Types.UserAccount)": "61efb43e", + "BytesFromTx(Types.Transaction)": "dbcbdf9f", + "HashFromAccount(Types.UserAccount)": "0d68f924", + "HashFromTx(Types.Transaction)": "ae97e1bf", + "PDALeafToHash(Types.PDALeaf)": "26b3285d", + "UpdateBalanceInAccount(Types.UserAccount,uint256)": "12296263", + "calculateAddress(bytes)": "e8a4c04e" + } + } + } + }, + "contracts/libs/Types.sol": { + "Types": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820d5e54a17e1ba6653c6271ac202f31a78ee2f997bc93c807036f909a5715e9c2d64736f6c634300050f0032", + "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xD5 0xE5 0x4A OR 0xE1 0xBA PUSH7 0x53C6271AC202F3 BYTE PUSH25 0xEE2F997BC93C807036F909A5715E9C2D64736F6C634300050F STOP ORIGIN ", + "sourceMap": "55:1729:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820d5e54a17e1ba6653c6271ac202f31a78ee2f997bc93c807036f909a5715e9c2d64736f6c634300050f0032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xD5 0xE5 0x4A OR 0xE1 0xBA PUSH7 0x53C6271AC202F3 BYTE PUSH25 0xEE2F997BC93C807036F909A5715E9C2D64736F6C634300050F STOP ORIGIN ", + "sourceMap": "55:1729:22:-;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "contracts/logger.sol": { + "Logger": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakeSlashed", + "type": "uint256" + } + ], + "name": "BatchRollback", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "left", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "right", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "DepositLeafMerged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "AccountID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "token", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "accountHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "name": "DepositQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "depositSubTreeRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pathToSubTree", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newBalanceRoot", + "type": "bytes32" + } + ], + "name": "DepositsFinalised", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txroot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "updatedRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "NewBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "RegisteredToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "RegistrationRequest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "totalBatchesSlashed", + "type": "uint256" + } + ], + "name": "RollbackFinalisation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "committed", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "StakeWithdraw", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "txRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "stakeSlashed", + "type": "uint256" + } + ], + "name": "logBatchRollback", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "depositSubTreeRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "pathToSubTree", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "newBalanceRoot", + "type": "bytes32" + } + ], + "name": "logDepositFinalised", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "left", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "right", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "newRoot", + "type": "bytes32" + } + ], + "name": "logDepositLeafMerged", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "accountID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "token", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "accountHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "pubkey", + "type": "bytes" + } + ], + "name": "logDepositQueued", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "committer", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "txroot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "updatedRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "logNewBatch", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenType", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "logRegisteredToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + } + ], + "name": "logRegistrationRequest", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "totalBatchesSlashed", + "type": "uint256" + } + ], + "name": "logRollbackFinalisation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "committed", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "batch_id", + "type": "uint256" + } + ], + "name": "logStakeWithdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5061085c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a723158204d5ead8eb4b2ed3effa4ba65d4b6e1131933f9fe12c12a20148864f3e5ed5dbd64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x85C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4D 0x5E 0xAD DUP15 0xB4 0xB2 0xED RETURNDATACOPY SELFDESTRUCT LOG4 0xBA PUSH6 0xD4B6E1131933 0xF9 INVALID SLT 0xC1 0x2A KECCAK256 EQ DUP9 PUSH5 0xF3E5ED5DBD PUSH5 0x736F6C6343 STOP SDIV 0xF STOP ORIGIN ", + "sourceMap": "27:3040:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:3040:23;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c8063b4ba86b311610066578063b4ba86b31461025b578063b94be668146102c7578063cea4592f14610309578063d54404ae1461036b578063dbd63fb7146103c357610093565b80634c7637d21461009857806356901d5a146100dc57806388870639146101df578063aeedf0c71461022d575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610405565b005b6101dd600480360360c08110156100f257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061046b565b005b61022b600480360360408110156101f557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610563565b005b6102596004803603602081101561024357600080fd5b81019080803590602001909291905050506105d2565b005b6102c5600480360360a081101561027157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061060c565b005b610307600480360360608110156102dd57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610696565b005b6103696004803603608081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506106e2565b005b6103c16004803603606081101561038157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610763565b005b610403600480360360608110156103d957600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506107db565b005b7fdc79fc57451962cfe3916e686997a49229af75ce2055deb4c0f0fdf3d5d2e7c181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7f5e3c736713ea7acda22f3939c97804d64b57ea194c562d8e5359eda538c7ebfa868686868686604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a1505050505050565b7f5dbaa701a7acef513f72a61799f7e50f4653f462b9f780d88d1b9bec89de21688282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b7f8efd02dfe309f172ea08425236aa43cec05abc25ebbb9cd4ed1de0d5048fc91a816040518082815260200191505060405180910390a150565b7fff0d01a3ea09eec8d9dc11b606f70fbf5aa373d5647db792e5886fc4285c38fc8585858585604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a15050505050565b7f70c2b28c317ffe78d554d6d3027adf905ad3c4dd5d7511cf0898667e90b0298783838360405180848152602001838152602001828152602001935050505060405180910390a1505050565b7f1914387dd72c107202016df3d09390ff777fa6399bf12f0e5a0ed11a0b0650bb84848484604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b7fb00cb3d8b4494806e139df1041902f1984526ffe765fa4d7e12d64f4a47362fe838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505050565b7f3ef414c5acdc760eeb769e53a23288afa7ca68aa4f0391d7fdc076b9d16b659183838360405180848152602001838152602001828152602001935050505060405180910390a150505056fea265627a7a723158204d5ead8eb4b2ed3effa4ba65d4b6e1131933f9fe12c12a20148864f3e5ed5dbd64736f6c634300050f0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB4BA86B3 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB4BA86B3 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xB94BE668 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xCEA4592F EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xD54404AE EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xDBD63FB7 EQ PUSH2 0x3C3 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x4C7637D2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x56901D5A EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x88870639 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xAEEDF0C7 EQ PUSH2 0x22D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x405 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x22B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x563 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5D2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x60C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x696 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x369 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x403 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7DB JUMP JUMPDEST STOP JUMPDEST PUSH32 0xDC79FC57451962CFE3916E686997A49229AF75CE2055DEB4C0F0FDF3D5D2E7C1 DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x5E3C736713EA7ACDA22F3939C97804D64B57EA194C562D8E5359EDA538C7EBFA DUP7 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x501 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x549 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5DBAA701A7ACEF513F72A61799F7E50F4653F462B9F780D88D1B9BEC89DE2168 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH32 0x8EFD02DFE309F172EA08425236AA43CEC05ABC25EBBB9CD4ED1DE0D5048FC91A DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0xFF0D01A3EA09EEC8D9DC11B606F70FBF5AA373D5647DB792E5886FC4285C38FC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x70C2B28C317FFE78D554D6D3027ADF905AD3C4DD5D7511CF0898667E90B02987 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x1914387DD72C107202016DF3D09390FF777FA6399BF12F0E5A0ED11A0B0650BB DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0xB00CB3D8B4494806E139DF1041902F1984526FFE765FA4D7E12D64F4A47362FE DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH32 0x3EF414C5ACDC760EEB769E53A23288AFA7CA68AA4F0391D7FDC076B9D16B6591 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4D 0x5E 0xAD DUP15 0xB4 0xB2 0xED RETURNDATACOPY SELFDESTRUCT LOG4 0xBA PUSH6 0xD4B6E1131933 0xF9 INVALID SLT 0xC1 0x2A KECCAK256 EQ DUP9 PUSH5 0xF3E5ED5DBD PUSH5 0x736F6C6343 STOP SDIV 0xF STOP ORIGIN ", + "sourceMap": "27:3040:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27:3040:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:118;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1722:118:23;;;;;;;;;;;;;;;;;;;:::i;:::-;;2032:377;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2032:377:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2032:377:23;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2032:377:23;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2032:377:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2032:377:23;;;;;;;;;;;;;;;:::i;:::-;;1509:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1509:152:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1301:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1301:132:23;;;;;;;;;;;;;;;;;:::i;:::-;;901:332;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;901:332:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2788:277;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2788:277:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;258:206;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;258:206:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;549:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;549:180:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2491:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2491:156:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1722:118;1799:34;1819:13;1799:34;;;;;;;;;;;;;;;;;;;;;;1722:118;:::o;2032:377::-;2247:155;2274:9;2297:11;2322:6;2342:5;2361:11;2386:6;2247:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2247:155:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2032:377;;;;;;:::o;1509:152::-;1613:41;1629:9;1640:13;1613:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:152;;:::o;1301:132::-;1385:41;1406:19;1385:41;;;;;;;;;;;;;;;;;;1301:132;:::o;901:332::-;1089:137;1116:8;1138:9;1161;1184:6;1204:12;1089:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;901:332;;;;;:::o;2788:277::-;2944:114;2975:18;3007:13;3034:14;2944:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:277;;;:::o;258:206::-;410:47;419:9;430:6;438:11;451:5;410:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;258:206;;;;:::o;549:180::-;680:42;694:9;705:6;713:8;680:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;549:180;;;:::o;2491:156::-;2601:39;2619:4;2625:5;2632:7;2601:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2491:156;;;:::o" + }, + "methodIdentifiers": { + "logBatchRollback(uint256,address,bytes32,bytes32,uint256)": "b4ba86b3", + "logDepositFinalised(bytes32,uint256,bytes32)": "b94be668", + "logDepositLeafMerged(bytes32,bytes32,bytes32)": "dbd63fb7", + "logDepositQueued(uint256,address,uint256,uint256,bytes32,bytes)": "56901d5a", + "logNewBatch(address,bytes32,bytes32,uint256)": "cea4592f", + "logRegisteredToken(uint256,address)": "88870639", + "logRegistrationRequest(address)": "4c7637d2", + "logRollbackFinalisation(uint256)": "aeedf0c7", + "logStakeWithdraw(address,uint256,uint256)": "d54404ae" + } + } + } + }, + "solidity-bytes-utils/contracts/BytesLib.sol": { + "BytesLib": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098db943c66a75023881bb800557e11eb09e45e88b1bda0ae9c8c2ab2db56a5fd64736f6c634300050f0032", + "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP9 0xDB SWAP5 EXTCODECOPY PUSH7 0xA75023881BB800 SSTORE PUSH31 0x11EB09E45E88B1BDA0AE9C8C2AB2DB56A5FD64736F6C634300050F00320000 ", + "sourceMap": "325:18425:24:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582098db943c66a75023881bb800557e11eb09e45e88b1bda0ae9c8c2ab2db56a5fd64736f6c634300050f0032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP9 0xDB SWAP5 EXTCODECOPY PUSH7 0xA75023881BB800 SSTORE PUSH31 0x11EB09E45E88B1BDA0AE9C8C2AB2DB56A5FD64736F6C634300050F00320000 ", + "sourceMap": "325:18425:24:-;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + } + }, + "errors": [ + { + "component": "general", + "formattedMessage": "contracts/MerkleTreeUtils.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", + "message": "Experimental features are turned on. Do not use experimental features on live deployments.", + "severity": "warning", + "sourceLocation": { + "end": 58, + "file": "contracts/MerkleTreeUtils.sol", + "start": 25 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/libs/RollupUtils.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", + "message": "Experimental features are turned on. Do not use experimental features on live deployments.", + "severity": "warning", + "sourceLocation": { + "end": 58, + "file": "contracts/libs/RollupUtils.sol", + "start": 25 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/DepositManager.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", + "message": "Experimental features are turned on. Do not use experimental features on live deployments.", + "severity": "warning", + "sourceLocation": { + "end": 58, + "file": "contracts/DepositManager.sol", + "start": 25 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/Rollup.sol:2:1: Warning: Experimental features are turned on. Do not use experimental features on live deployments.\npragma experimental ABIEncoderV2;\n^-------------------------------^\n", + "message": "Experimental features are turned on. Do not use experimental features on live deployments.", + "severity": "warning", + "sourceLocation": { + "end": 58, + "file": "contracts/Rollup.sol", + "start": 25 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/MerkleTreeUtils.sol:66:5: Warning: Function state mutability can be restricted to view\n function getMerkleRoot(bytes[] calldata _dataBlocks)\n ^ (Relevant source part starts here and spans across multiple lines).\n", + "message": "Function state mutability can be restricted to view", + "severity": "warning", + "sourceLocation": { + "end": 3442, + "file": "contracts/MerkleTreeUtils.sol", + "start": 1969 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/MerkleTreeUtils.sol:141:5: Warning: Function state mutability can be restricted to pure\n function computeInclusionProofRootWithLeaf(\n ^ (Relevant source part starts here and spans across multiple lines).\n", + "message": "Function state mutability can be restricted to pure", + "severity": "warning", + "sourceLocation": { + "end": 5634, + "file": "contracts/MerkleTreeUtils.sol", + "start": 4888 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/MerkleTreeUtils.sol:170:5: Warning: Function state mutability can be restricted to pure\n function verify(\n ^ (Relevant source part starts here and spans across multiple lines).\n", + "message": "Function state mutability can be restricted to pure", + "severity": "warning", + "sourceLocation": { + "end": 6426, + "file": "contracts/MerkleTreeUtils.sol", + "start": 6040 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/MerkleTreeUtils.sol:290:5: Warning: Function state mutability can be restricted to pure\n function pathToIndex(uint256 path, uint256 height)\n ^ (Relevant source part starts here and spans across multiple lines).\n", + "message": "Function state mutability can be restricted to pure", + "severity": "warning", + "sourceLocation": { + "end": 10412, + "file": "contracts/MerkleTreeUtils.sol", + "start": 10056 + }, + "type": "Warning" + }, + { + "component": "general", + "formattedMessage": "contracts/Tree.sol:126:5: Warning: Function state mutability can be restricted to view\n function getSiblings(uint256 _path) public returns (bytes32[] memory) {\n ^ (Relevant source part starts here and spans across multiple lines).\n", + "message": "Function state mutability can be restricted to view", + "severity": "warning", + "sourceLocation": { + "end": 5297, + "file": "contracts/Tree.sol", + "start": 4571 + }, + "type": "Warning" + } + ], + "sources": { + "@openzeppelin/contracts/GSN/Context.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", + "exportedSymbols": { + "Context": [ + 26 + ] + }, + "id": 27, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 26, + "linearizedBaseContracts": [ + 26 + ], + "name": "Context", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4, + "nodeType": "Block", + "src": "726:3:0", + "statements": [] + }, + "documentation": null, + "id": 5, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "714:2:0" + }, + "returnParameters": { + "id": 3, + "nodeType": "ParameterList", + "parameters": [], + "src": "726:0:0" + }, + "scope": 26, + "src": "702:27:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 13, + "nodeType": "Block", + "src": "850:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 10, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "867:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "867:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 9, + "id": 12, + "nodeType": "Return", + "src": "860:17:0" + } + ] + }, + "documentation": null, + "id": 14, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [], + "src": "807:2:0" + }, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 14, + "src": "833:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 7, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "832:17:0" + }, + "scope": 26, + "src": "788:96:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 24, + "nodeType": "Block", + "src": "947:165:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 19, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "957:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 20, + "nodeType": "ExpressionStatement", + "src": "957:4:0" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 21, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "1097:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 22, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1097:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 18, + "id": 23, + "nodeType": "Return", + "src": "1090:15:0" + } + ] + }, + "documentation": null, + "id": 25, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [], + "src": "907:2:0" + }, + "returnParameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "933:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 16, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "933:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "932:14:0" + }, + "scope": 26, + "src": "890:222:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 27, + "src": "525:589:0" + } + ], + "src": "0:1115:0" + }, + "id": 0 + }, + "@openzeppelin/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 213 + ] + }, + "id": 214, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 28, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.", + "fullyImplemented": true, + "id": 213, + "linearizedBaseContracts": [ + 213 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 52, + "nodeType": "Block", + "src": "901:109:1", + "statements": [ + { + "assignments": [ + 38 + ], + "declarations": [ + { + "constant": false, + "id": 38, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 52, + "src": "911:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "911:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 42, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 39, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "923:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 40, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "927:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "923:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "911:17:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 44, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "946:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 45, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "951:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "946:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 47, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "954:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + }, + "value": "SafeMath: addition overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + } + ], + "id": 43, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "938:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "938:46:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49, + "nodeType": "ExpressionStatement", + "src": "938:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 50, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1002:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 36, + "id": 51, + "nodeType": "Return", + "src": "995:8:1" + } + ] + }, + "documentation": "@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.", + "id": 53, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 53, + "src": "847:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "847:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 53, + "src": "858:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 31, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "858:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "846:22:1" + }, + "returnParameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 53, + "src": "892:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "892:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "891:9:1" + }, + "scope": 213, + "src": "834:176:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "1341:67:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 63, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "1362:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 64, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "1365:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1368:32:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 62, + "name": "sub", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 69, + 96 + ], + "referencedDeclaration": 96, + "src": "1358:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1358:43:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 61, + "id": 67, + "nodeType": "Return", + "src": "1351:50:1" + } + ] + }, + "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.", + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1287:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 57, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1298:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 56, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1298:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1286:22:1" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 60, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1332:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 59, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1331:9:1" + }, + "scope": 213, + "src": "1274:134:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 95, + "nodeType": "Block", + "src": "1827:92:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 81, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "1845:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 82, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1850:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1845:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 84, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "1853:12:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 80, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1837:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1837:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 86, + "nodeType": "ExpressionStatement", + "src": "1837:29:1" + }, + { + "assignments": [ + 88 + ], + "declarations": [ + { + "constant": false, + "id": 88, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 95, + "src": "1876:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 87, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1876:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 92, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 89, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1888:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 90, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "1892:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1888:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1876:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 93, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1911:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 79, + "id": 94, + "nodeType": "Return", + "src": "1904:8:1" + } + ] + }, + "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.\n * _Available since v2.4.0._", + "id": 96, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "1745:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 70, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1745:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 73, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "1756:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 72, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1756:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 75, + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "1767:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 74, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1767:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1744:50:1" + }, + "returnParameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "1818:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1818:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1817:9:1" + }, + "scope": 213, + "src": "1732:187:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 129, + "nodeType": "Block", + "src": "2226:392:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 105, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "2458:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2463:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2458:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 111, + "nodeType": "IfStatement", + "src": "2454:45:1", + "trueBody": { + "id": 110, + "nodeType": "Block", + "src": "2466:33:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2487:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 104, + "id": 109, + "nodeType": "Return", + "src": "2480:8:1" + } + ] + } + }, + { + "assignments": [ + 113 + ], + "declarations": [ + { + "constant": false, + "id": 113, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "2509:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2509:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 117, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 114, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "2521:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 115, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2525:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2521:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2509:17:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 119, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2544:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 120, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "2548:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2544:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 122, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2553:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2544:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2556:35:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + }, + "value": "SafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + } + ], + "id": 118, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "2536:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2536:56:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 126, + "nodeType": "ExpressionStatement", + "src": "2536:56:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 127, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "2610:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 104, + "id": 128, + "nodeType": "Return", + "src": "2603:8:1" + } + ] + }, + "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.", + "id": 130, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 98, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "2172:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 97, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2172:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 100, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "2183:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 99, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2183:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2171:22:1" + }, + "returnParameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 103, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 130, + "src": "2217:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2217:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2216:9:1" + }, + "scope": 213, + "src": "2159:459:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 145, + "nodeType": "Block", + "src": "3140:63:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 140, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "3161:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 141, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "3164:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3167:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 139, + "name": "div", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 146, + 173 + ], + "referencedDeclaration": 173, + "src": "3157:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3157:39:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 138, + "id": 144, + "nodeType": "Return", + "src": "3150:46:1" + } + ] + }, + "documentation": "@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", + "id": 146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "3086:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3086:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "3097:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 133, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3085:22:1" + }, + "returnParameters": { + "id": 138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 137, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "3131:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3131:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3130:9:1" + }, + "scope": 213, + "src": "3073:130:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 172, + "nodeType": "Block", + "src": "3813:243:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 158, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "3897:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3901:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3897:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 161, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 152, + "src": "3904:12:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 157, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "3889:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3889:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 163, + "nodeType": "ExpressionStatement", + "src": "3889:28:1" + }, + { + "assignments": [ + 165 + ], + "declarations": [ + { + "constant": false, + "id": 165, + "name": "c", + "nodeType": "VariableDeclaration", + "scope": 172, + "src": "3927:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3927:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 169, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 166, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "3939:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 167, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 150, + "src": "3943:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3939:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3927:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 170, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "4048:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 156, + "id": 171, + "nodeType": "Return", + "src": "4041:8:1" + } + ] + }, + "documentation": "@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", + "id": 173, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "3731:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 150, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "3742:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3742:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 152, + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "3753:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 151, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3753:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3730:50:1" + }, + "returnParameters": { + "id": 156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 155, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 173, + "src": "3804:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3804:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3803:9:1" + }, + "scope": 213, + "src": "3718:338:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 188, + "nodeType": "Block", + "src": "4567:61:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 183, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "4588:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 184, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "4591:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4594:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 182, + "name": "mod", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 189, + 212 + ], + "referencedDeclaration": 212, + "src": "4584:3:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4584:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 181, + "id": 187, + "nodeType": "Return", + "src": "4577:44:1" + } + ] + }, + "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", + "id": 189, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 175, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "4513:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 177, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "4524:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4524:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4512:22:1" + }, + "returnParameters": { + "id": 181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 180, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 189, + "src": "4558:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 179, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4557:9:1" + }, + "scope": 213, + "src": "4500:128:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 211, + "nodeType": "Block", + "src": "5227:68:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 201, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5245:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5250:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5245:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 204, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "5253:12:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "5237:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5237:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "5237:29:1" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 207, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "5283:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 208, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5287:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5283:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 199, + "id": 210, + "nodeType": "Return", + "src": "5276:12:1" + } + ] + }, + "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", + "id": 212, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 191, + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "5145:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5145:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "5156:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5156:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "5167:26:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 194, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5167:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5144:50:1" + }, + "returnParameters": { + "id": 199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 198, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "5218:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5218:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5217:9:1" + }, + "scope": 213, + "src": "5132:163:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 214, + "src": "589:4708:1" + } + ], + "src": "0:5298:1" + }, + "id": 1 + }, + "@openzeppelin/contracts/ownership/Ownable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/ownership/Ownable.sol", + "exportedSymbols": { + "Ownable": [ + 331 + ] + }, + "id": 332, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 215, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", + "file": "../GSN/Context.sol", + "id": 216, + "nodeType": "ImportDirective", + "scope": 332, + "sourceUnit": 27, + "src": "25:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 217, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "435:7:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 218, + "nodeType": "InheritanceSpecifier", + "src": "435:7:2" + } + ], + "contractDependencies": [ + 26 + ], + "contractKind": "contract", + "documentation": "@dev Contract module which provides a basic access control mechanism, where\nthere is an account (an owner) that can be granted exclusive access to\nspecific functions.\n * This module is used through inheritance. It will make available the modifier\n`onlyOwner`, which can be applied to your functions to restrict their use to\nthe owner.", + "fullyImplemented": true, + "id": 331, + "linearizedBaseContracts": [ + 331, + 26 + ], + "name": "Ownable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 220, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 331, + "src": "449:22:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 219, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "449:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 226, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 222, + "indexed": true, + "name": "previousOwner", + "nodeType": "VariableDeclaration", + "scope": 226, + "src": "505:29:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "505:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 224, + "indexed": true, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 226, + "src": "536:24:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "536:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "504:57:2" + }, + "src": "478:84:2" + }, + { + "body": { + "id": 245, + "nodeType": "Block", + "src": "688:135:2", + "statements": [ + { + "assignments": [ + 230 + ], + "declarations": [ + { + "constant": false, + "id": 230, + "name": "msgSender", + "nodeType": "VariableDeclaration", + "scope": 245, + "src": "698:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 229, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "698:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 233, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 231, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "718:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "718:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "698:32:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 234, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "740:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 235, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "749:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "740:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 237, + "nodeType": "ExpressionStatement", + "src": "740:18:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "802:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "794:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "794:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 242, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 230, + "src": "806:9:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 238, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "773:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "773:43:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 244, + "nodeType": "EmitStatement", + "src": "768:48:2" + } + ] + }, + "documentation": "@dev Initializes the contract setting the deployer as the initial owner.", + "id": 246, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 227, + "nodeType": "ParameterList", + "parameters": [], + "src": "676:2:2" + }, + "returnParameters": { + "id": 228, + "nodeType": "ParameterList", + "parameters": [], + "src": "688:0:2" + }, + "scope": 331, + "src": "664:159:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 253, + "nodeType": "Block", + "src": "946:30:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 251, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "963:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 250, + "id": 252, + "nodeType": "Return", + "src": "956:13:2" + } + ] + }, + "documentation": "@dev Returns the address of the current owner.", + "id": 254, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 247, + "nodeType": "ParameterList", + "parameters": [], + "src": "913:2:2" + }, + "returnParameters": { + "id": 250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 249, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 254, + "src": "937:7:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "937:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "936:9:2" + }, + "scope": 331, + "src": "899:77:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 263, + "nodeType": "Block", + "src": "1085:82:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 257, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 275, + "src": "1103:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1103:9:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1114:34:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + }, + "value": "Ownable: caller is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "id": 256, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1095:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1095:54:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 261, + "nodeType": "ExpressionStatement", + "src": "1095:54:2" + }, + { + "id": 262, + "nodeType": "PlaceholderStatement", + "src": "1159:1:2" + } + ] + }, + "documentation": "@dev Throws if called by any account other than the owner.", + "id": 264, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [], + "src": "1082:2:2" + }, + "src": "1064:103:2", + "visibility": "internal" + }, + { + "body": { + "id": 274, + "nodeType": "Block", + "src": "1296:46:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 269, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "1313:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1313:12:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 271, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "1329:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1313:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 268, + "id": 273, + "nodeType": "Return", + "src": "1306:29:2" + } + ] + }, + "documentation": "@dev Returns true if the caller is the current owner.", + "id": 275, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 265, + "nodeType": "ParameterList", + "parameters": [], + "src": "1266:2:2" + }, + "returnParameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 267, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 275, + "src": "1290:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 266, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1290:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1289:6:2" + }, + "scope": 331, + "src": "1250:92:2", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 293, + "nodeType": "Block", + "src": "1730:91:2", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 281, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "1766:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1782:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1774:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1774:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 280, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "1745:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1745:40:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 286, + "nodeType": "EmitStatement", + "src": "1740:45:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 287, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "1795:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1812:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1804:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1804:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1795:19:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 292, + "nodeType": "ExpressionStatement", + "src": "1795:19:2" + } + ] + }, + "documentation": "@dev Leaves the contract without owner. It will not be possible to call\n`onlyOwner` functions anymore. Can only be called by the current owner.\n * NOTE: Renouncing ownership will leave the contract without an owner,\nthereby removing any functionality that is only available to the owner.", + "id": 294, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 278, + "modifierName": { + "argumentTypes": null, + "id": 277, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "1720:9:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1720:9:2" + } + ], + "name": "renounceOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 276, + "nodeType": "ParameterList", + "parameters": [], + "src": "1710:2:2" + }, + "returnParameters": { + "id": 279, + "nodeType": "ParameterList", + "parameters": [], + "src": "1730:0:2" + }, + "scope": 331, + "src": "1684:137:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 305, + "nodeType": "Block", + "src": "2032:45:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 302, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "2061:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 301, + "name": "_transferOwnership", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "2042:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2042:28:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 304, + "nodeType": "ExpressionStatement", + "src": "2042:28:2" + } + ] + }, + "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).\nCan only be called by the current owner.", + "id": 306, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 299, + "modifierName": { + "argumentTypes": null, + "id": 298, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "2022:9:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2022:9:2" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 296, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "1997:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1997:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1996:18:2" + }, + "returnParameters": { + "id": 300, + "nodeType": "ParameterList", + "parameters": [], + "src": "2032:0:2" + }, + "scope": 331, + "src": "1970:107:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 329, + "nodeType": "Block", + "src": "2233:170:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 312, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "2251:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2271:1:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2263:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2263:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2251:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "id": 317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2275:40:2", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + }, + "value": "Ownable: new owner is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "id": 311, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "2243:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2243:73:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 319, + "nodeType": "ExpressionStatement", + "src": "2243:73:2" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 321, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "2352:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 322, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "2360:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 320, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 226, + "src": "2331:20:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2331:38:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 324, + "nodeType": "EmitStatement", + "src": "2326:43:2" + }, + { + "expression": { + "argumentTypes": null, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 325, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 220, + "src": "2379:6:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 326, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "2388:8:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2379:17:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 328, + "nodeType": "ExpressionStatement", + "src": "2379:17:2" + } + ] + }, + "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).", + "id": 330, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 308, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 330, + "src": "2206:16:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2206:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2205:18:2" + }, + "returnParameters": { + "id": 310, + "nodeType": "ParameterList", + "parameters": [], + "src": "2233:0:2" + }, + "scope": 331, + "src": "2178:225:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 332, + "src": "415:1990:2" + } + ], + "src": "0:2406:2" + }, + "id": 2 + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "ERC20": [ + 736 + ] + }, + "id": 737, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 333, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", + "file": "../../GSN/Context.sol", + "id": 334, + "nodeType": "ImportDirective", + "scope": 737, + "sourceUnit": 27, + "src": "25:31:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 335, + "nodeType": "ImportDirective", + "scope": 737, + "sourceUnit": 806, + "src": "57:22:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 336, + "nodeType": "ImportDirective", + "scope": 737, + "sourceUnit": 214, + "src": "80:33:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 337, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 26, + "src": "1286:7:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$26", + "typeString": "contract Context" + } + }, + "id": 338, + "nodeType": "InheritanceSpecifier", + "src": "1286:7:3" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 339, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 805, + "src": "1295:6:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$805", + "typeString": "contract IERC20" + } + }, + "id": 340, + "nodeType": "InheritanceSpecifier", + "src": "1295:6:3" + } + ], + "contractDependencies": [ + 26, + 805 + ], + "contractKind": "contract", + "documentation": "@dev Implementation of the {IERC20} interface.\n * This implementation is agnostic to the way tokens are created. This means\nthat a supply mechanism has to be added in a derived contract using {_mint}.\nFor a generic mechanism see {ERC20Mintable}.\n * TIP: For a detailed writeup see our guide\nhttps://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\nto implement supply mechanisms].\n * We have followed general OpenZeppelin guidelines: functions revert instead\nof returning `false` on failure. This behavior is nonetheless conventional\nand does not conflict with the expectations of ERC20 applications.\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\nThis allows applications to reconstruct the allowance for all accounts just\nby listening to said events. Other implementations of the EIP may not emit\nthese events, as it isn't required by the specification.\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\nfunctions have been added to mitigate the well-known issues around setting\nallowances. See {IERC20-approve}.", + "fullyImplemented": true, + "id": 736, + "linearizedBaseContracts": [ + 736, + 805, + 26 + ], + "name": "ERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 343, + "libraryName": { + "contractScope": null, + "id": 341, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 213, + "src": "1314:8:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$213", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1308:27:3", + "typeName": { + "id": 342, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1327:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 347, + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 736, + "src": "1341:46:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 346, + "keyType": { + "id": 344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1350:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1341:28:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 345, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1361:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 353, + "name": "_allowances", + "nodeType": "VariableDeclaration", + "scope": 736, + "src": "1394:69:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 352, + "keyType": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1403:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1394:49:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 351, + "keyType": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1423:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1414:28:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1434:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 355, + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 736, + "src": "1470:28:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 354, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1470:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 362, + "nodeType": "Block", + "src": "1612:36:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 360, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "1629:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 359, + "id": 361, + "nodeType": "Return", + "src": "1622:19:3" + } + ] + }, + "documentation": "@dev See {IERC20-totalSupply}.", + "id": 363, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 356, + "nodeType": "ParameterList", + "parameters": [], + "src": "1579:2:3" + }, + "returnParameters": { + "id": 359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 358, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 363, + "src": "1603:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1603:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1602:9:3" + }, + "scope": 736, + "src": "1559:89:3", + "stateMutability": "view", + "superFunction": 743, + "visibility": "public" + }, + { + "body": { + "id": 374, + "nodeType": "Block", + "src": "1772:42:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 370, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "1789:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 372, + "indexExpression": { + "argumentTypes": null, + "id": 371, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "1799:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1789:18:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 369, + "id": 373, + "nodeType": "Return", + "src": "1782:25:3" + } + ] + }, + "documentation": "@dev See {IERC20-balanceOf}.", + "id": 375, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 365, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 375, + "src": "1725:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1725:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1724:17:3" + }, + "returnParameters": { + "id": 369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 368, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 375, + "src": "1763:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1763:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1762:9:3" + }, + "scope": 736, + "src": "1706:108:3", + "stateMutability": "view", + "superFunction": 750, + "visibility": "public" + }, + { + "body": { + "id": 393, + "nodeType": "Block", + "src": "2092:80:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 385, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2112:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2112:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 387, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "2126:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 379, + "src": "2137:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 384, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2102:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2102:42:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "ExpressionStatement", + "src": "2102:42:3" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2161:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 383, + "id": 392, + "nodeType": "Return", + "src": "2154:11:3" + } + ] + }, + "documentation": "@dev See {IERC20-transfer}.\n * Requirements:\n * - `recipient` cannot be the zero address.\n- the caller must have a balance of at least `amount`.", + "id": 394, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 377, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "2035:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 376, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2035:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 379, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "2054:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 378, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2054:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2034:35:3" + }, + "returnParameters": { + "id": 383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 382, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 394, + "src": "2086:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 381, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2086:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2085:6:3" + }, + "scope": 736, + "src": "2017:155:3", + "stateMutability": "nonpayable", + "superFunction": 759, + "visibility": "public" + }, + { + "body": { + "id": 409, + "nodeType": "Block", + "src": "2311:51:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 403, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "2328:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 405, + "indexExpression": { + "argumentTypes": null, + "id": 404, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 396, + "src": "2340:5:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2328:18:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 407, + "indexExpression": { + "argumentTypes": null, + "id": 406, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 398, + "src": "2347:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2328:27:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 402, + "id": 408, + "nodeType": "Return", + "src": "2321:34:3" + } + ] + }, + "documentation": "@dev See {IERC20-allowance}.", + "id": 410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 396, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "2249:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 395, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2249:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 398, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "2264:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 397, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2264:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2248:32:3" + }, + "returnParameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 401, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "2302:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 400, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2302:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2301:9:3" + }, + "scope": 736, + "src": "2230:132:3", + "stateMutability": "view", + "superFunction": 768, + "visibility": "public" + }, + { + "body": { + "id": 428, + "nodeType": "Block", + "src": "2572:77:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 420, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "2591:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2591:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 422, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "2605:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 423, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "2614:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 419, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "2582:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2582:39:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 425, + "nodeType": "ExpressionStatement", + "src": "2582:39:3" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2638:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 418, + "id": 427, + "nodeType": "Return", + "src": "2631:11:3" + } + ] + }, + "documentation": "@dev See {IERC20-approve}.\n * Requirements:\n * - `spender` cannot be the zero address.", + "id": 429, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "2517:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2517:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "2534:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2534:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2516:33:3" + }, + "returnParameters": { + "id": 418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 417, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 429, + "src": "2566:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2566:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2565:6:3" + }, + "scope": 736, + "src": "2500:149:3", + "stateMutability": "nonpayable", + "superFunction": 777, + "visibility": "public" + }, + { + "body": { + "id": 464, + "nodeType": "Block", + "src": "3202:205:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "3222:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 442, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "3230:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 443, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "3241:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 440, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "3212:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3212:36:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 445, + "nodeType": "ExpressionStatement", + "src": "3212:36:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 447, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "3267:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 448, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3275:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3275:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 457, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 435, + "src": "3327:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3335:42:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + }, + "value": "ERC20: transfer amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", + "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 450, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "3289:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 452, + "indexExpression": { + "argumentTypes": null, + "id": 451, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 431, + "src": "3301:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3289:19:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 455, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 453, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3309:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3309:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3289:33:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "3289:37:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3289:89:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 446, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3258:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3258:121:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 461, + "nodeType": "ExpressionStatement", + "src": "3258:121:3" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3396:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 439, + "id": 463, + "nodeType": "Return", + "src": "3389:11:3" + } + ] + }, + "documentation": "@dev See {IERC20-transferFrom}.\n * Emits an {Approval} event indicating the updated allowance. This is not\nrequired by the EIP. See the note at the beginning of {ERC20};\n * Requirements:\n- `sender` and `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.\n- the caller must have allowance for `sender`'s tokens of at least\n`amount`.", + "id": 465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 431, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "3129:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 430, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3129:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "3145:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3145:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 435, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "3164:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3164:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3128:51:3" + }, + "returnParameters": { + "id": 439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 465, + "src": "3196:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 437, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3196:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3195:6:3" + }, + "scope": 736, + "src": "3107:300:3", + "stateMutability": "nonpayable", + "superFunction": 788, + "visibility": "public" + }, + { + "body": { + "id": 491, + "nodeType": "Block", + "src": "3888:121:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 475, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3907:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3907:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 477, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 467, + "src": "3921:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 485, + "name": "addedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 469, + "src": "3969:10:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 478, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "3930:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 481, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 479, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "3942:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3942:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3930:25:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 483, + "indexExpression": { + "argumentTypes": null, + "id": 482, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 467, + "src": "3956:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3930:34:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "3930:38:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3930:50:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 474, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3898:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3898:83:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 488, + "nodeType": "ExpressionStatement", + "src": "3898:83:3" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3998:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 473, + "id": 490, + "nodeType": "Return", + "src": "3991:11:3" + } + ] + }, + "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\n * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n * Emits an {Approval} event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.", + "id": 492, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "increaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 467, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 492, + "src": "3829:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 466, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3829:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 469, + "name": "addedValue", + "nodeType": "VariableDeclaration", + "scope": 492, + "src": "3846:18:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3846:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3828:37:3" + }, + "returnParameters": { + "id": 473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 472, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 492, + "src": "3882:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 471, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3882:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3881:6:3" + }, + "scope": 736, + "src": "3802:207:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 519, + "nodeType": "Block", + "src": "4587:167:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 502, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "4606:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4606:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 504, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 494, + "src": "4620:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 512, + "name": "subtractedValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 496, + "src": "4668:15:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4685:39:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + }, + "value": "ERC20: decreased allowance below zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", + "typeString": "literal_string \"ERC20: decreased allowance below zero\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 505, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "4629:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 508, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 506, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "4641:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4641:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:25:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 510, + "indexExpression": { + "argumentTypes": null, + "id": 509, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 494, + "src": "4655:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4629:34:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "4629:38:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4629:96:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 501, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "4597:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4597:129:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 516, + "nodeType": "ExpressionStatement", + "src": "4597:129:3" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4743:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 500, + "id": 518, + "nodeType": "Return", + "src": "4736:11:3" + } + ] + }, + "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\n * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n * Emits an {Approval} event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.\n- `spender` must have allowance for the caller of at least\n`subtractedValue`.", + "id": 520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decreaseAllowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "4523:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4523:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 496, + "name": "subtractedValue", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "4540:23:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4540:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4522:42:3" + }, + "returnParameters": { + "id": 500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 499, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 520, + "src": "4581:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 498, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4581:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4580:6:3" + }, + "scope": 736, + "src": "4496:258:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 576, + "nodeType": "Block", + "src": "5307:385:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 530, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "5325:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5343:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5335:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5335:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5325:20:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5347:39:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + }, + "value": "ERC20: transfer from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", + "typeString": "literal_string \"ERC20: transfer from the zero address\"" + } + ], + "id": 529, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "5317:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5317:70:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 537, + "nodeType": "ExpressionStatement", + "src": "5317:70:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 539, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "5405:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5426:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5418:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5418:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5405:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5430:37:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + }, + "value": "ERC20: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", + "typeString": "literal_string \"ERC20: transfer to the zero address\"" + } + ], + "id": 538, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "5397:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5397:71:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 546, + "nodeType": "ExpressionStatement", + "src": "5397:71:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 547, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "5479:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 549, + "indexExpression": { + "argumentTypes": null, + "id": 548, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "5489:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5479:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 554, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5521:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5529:40:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + }, + "value": "ERC20: transfer amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", + "typeString": "literal_string \"ERC20: transfer amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 550, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "5499:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 552, + "indexExpression": { + "argumentTypes": null, + "id": 551, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "5509:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5499:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "5499:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5499:71:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5479:91:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 558, + "nodeType": "ExpressionStatement", + "src": "5479:91:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 559, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "5580:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 561, + "indexExpression": { + "argumentTypes": null, + "id": 560, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "5590:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5580:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 566, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5628:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 562, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "5603:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 564, + "indexExpression": { + "argumentTypes": null, + "id": 563, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "5613:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5603:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "5603:24:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5603:32:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5580:55:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 569, + "nodeType": "ExpressionStatement", + "src": "5580:55:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 571, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "5659:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 572, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "5667:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 573, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 526, + "src": "5678:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 570, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "5650:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5650:35:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 575, + "nodeType": "EmitStatement", + "src": "5645:40:3" + } + ] + }, + "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\n * This is internal function is equivalent to {transfer}, and can be used to\ne.g. implement automatic token fees, slashing mechanisms, etc.\n * Emits a {Transfer} event.\n * Requirements:\n * - `sender` cannot be the zero address.\n- `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.", + "id": 577, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 522, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5247:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5247:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5263:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5263:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 526, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 577, + "src": "5282:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5282:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5246:51:3" + }, + "returnParameters": { + "id": 528, + "nodeType": "ParameterList", + "parameters": [], + "src": "5307:0:3" + }, + "scope": 736, + "src": "5228:464:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 619, + "nodeType": "Block", + "src": "6019:245:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 585, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "6037:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6056:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6048:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6048:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6037:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6060:33:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + }, + "value": "ERC20: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", + "typeString": "literal_string \"ERC20: mint to the zero address\"" + } + ], + "id": 584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "6029:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6029:65:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 592, + "nodeType": "ExpressionStatement", + "src": "6029:65:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 593, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "6105:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 596, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 581, + "src": "6137:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 594, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "6120:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "6120:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6120:24:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6105:39:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 599, + "nodeType": "ExpressionStatement", + "src": "6105:39:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 600, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "6154:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 602, + "indexExpression": { + "argumentTypes": null, + "id": 601, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "6164:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6154:18:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 607, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 581, + "src": "6198:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 603, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "6175:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 605, + "indexExpression": { + "argumentTypes": null, + "id": 604, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "6185:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6175:18:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "6175:22:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6175:30:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6154:51:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 610, + "nodeType": "ExpressionStatement", + "src": "6154:51:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6237:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6229:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6229:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 615, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 579, + "src": "6241:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 616, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 581, + "src": "6250:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 611, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "6220:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6220:37:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 618, + "nodeType": "EmitStatement", + "src": "6215:42:3" + } + ] + }, + "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\nthe total supply.\n * Emits a {Transfer} event with `from` set to the zero address.\n * Requirements\n * - `to` cannot be the zero address.", + "id": 620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 582, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 579, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 620, + "src": "5977:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5977:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 581, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 620, + "src": "5994:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 580, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5994:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5976:33:3" + }, + "returnParameters": { + "id": 583, + "nodeType": "ParameterList", + "parameters": [], + "src": "6019:0:3" + }, + "scope": 736, + "src": "5962:302:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 663, + "nodeType": "Block", + "src": "6640:285:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 628, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "6658:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6677:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6669:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6669:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6658:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6681:35:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + }, + "value": "ERC20: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", + "typeString": "literal_string \"ERC20: burn from the zero address\"" + } + ], + "id": 627, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "6650:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6650:67:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 635, + "nodeType": "ExpressionStatement", + "src": "6650:67:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 636, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "6728:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 638, + "indexExpression": { + "argumentTypes": null, + "id": 637, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "6738:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6728:18:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 643, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 624, + "src": "6772:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:36:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + }, + "value": "ERC20: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", + "typeString": "literal_string \"ERC20: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 639, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "6749:9:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 641, + "indexExpression": { + "argumentTypes": null, + "id": 640, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "6759:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6749:18:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "6749:22:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6749:68:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6728:89:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 647, + "nodeType": "ExpressionStatement", + "src": "6728:89:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 648, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "6827:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 651, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 624, + "src": "6859:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 649, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 355, + "src": "6842:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "6842:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6842:24:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6827:39:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 654, + "nodeType": "ExpressionStatement", + "src": "6827:39:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 656, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "6890:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6907:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6899:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6899:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 660, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 624, + "src": "6911:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 655, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "6881:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6881:37:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 662, + "nodeType": "EmitStatement", + "src": "6876:42:3" + } + ] + }, + "documentation": "@dev Destroys `amount` tokens from `account`, reducing the\ntotal supply.\n * Emits a {Transfer} event with `to` set to the zero address.\n * Requirements\n * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.", + "id": 664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 625, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 622, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "6598:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6598:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 624, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "6615:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6615:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6597:33:3" + }, + "returnParameters": { + "id": 626, + "nodeType": "ParameterList", + "parameters": [], + "src": "6640:0:3" + }, + "scope": 736, + "src": "6583:342:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 705, + "nodeType": "Block", + "src": "7425:257:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 674, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "7443:5:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7460:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7452:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7452:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7443:19:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7464:38:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + }, + "value": "ERC20: approve from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", + "typeString": "literal_string \"ERC20: approve from the zero address\"" + } + ], + "id": 673, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "7435:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7435:68:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "7435:68:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 683, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 668, + "src": "7521:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7540:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7532:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7532:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7521:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7544:36:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + }, + "value": "ERC20: approve to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", + "typeString": "literal_string \"ERC20: approve to the zero address\"" + } + ], + "id": 682, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "7513:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7513:68:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 690, + "nodeType": "ExpressionStatement", + "src": "7513:68:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 691, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "7592:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 694, + "indexExpression": { + "argumentTypes": null, + "id": 692, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "7604:5:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7592:18:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 695, + "indexExpression": { + "argumentTypes": null, + "id": 693, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 668, + "src": "7611:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7592:27:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 696, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "7622:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7592:36:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 698, + "nodeType": "ExpressionStatement", + "src": "7592:36:3" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 700, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "7652:5:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 701, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 668, + "src": "7659:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 702, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "7668:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 699, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "7643:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7643:32:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 704, + "nodeType": "EmitStatement", + "src": "7638:37:3" + } + ] + }, + "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n * This is internal function is equivalent to `approve`, and can be used to\ne.g. set automatic allowances for certain subsystems, etc.\n * Emits an {Approval} event.\n * Requirements:\n * - `owner` cannot be the zero address.\n- `spender` cannot be the zero address.", + "id": 706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 666, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "7368:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 665, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7368:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 668, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "7383:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7383:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 670, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "7400:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7400:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7367:48:3" + }, + "returnParameters": { + "id": 672, + "nodeType": "ParameterList", + "parameters": [], + "src": "7425:0:3" + }, + "scope": 736, + "src": "7350:332:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 734, + "nodeType": "Block", + "src": "7921:168:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 714, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "7937:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 715, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "7946:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 713, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 664, + "src": "7931:5:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7931:22:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 717, + "nodeType": "ExpressionStatement", + "src": "7931:22:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 719, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "7972:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 720, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "7981:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7981:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 729, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "8034:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", + "id": 730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8042:38:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + }, + "value": "ERC20: burn amount exceeds allowance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", + "typeString": "literal_string \"ERC20: burn amount exceeds allowance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 722, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 353, + "src": "7995:11:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 724, + "indexExpression": { + "argumentTypes": null, + "id": 723, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "8007:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7995:20:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 727, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 725, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14, + "src": "8016:10:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8016:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7995:34:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "7995:38:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7995:86:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 718, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "7963:8:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7963:119:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 733, + "nodeType": "ExpressionStatement", + "src": "7963:119:3" + } + ] + }, + "documentation": "@dev Destroys `amount` tokens from `account`.`amount` is then deducted\nfrom the caller's allowance.\n * See {_burn} and {_approve}.", + "id": 735, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 711, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 708, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "7879:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7879:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 710, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 735, + "src": "7896:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 709, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7896:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7878:33:3" + }, + "returnParameters": { + "id": 712, + "nodeType": "ParameterList", + "parameters": [], + "src": "7921:0:3" + }, + "scope": 736, + "src": "7860:229:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 737, + "src": "1268:6823:3" + } + ], + "src": "0:8092:3" + }, + "id": 3 + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 805 + ] + }, + "id": 806, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 738, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": "@dev Interface of the ERC20 standard as defined in the EIP. Does not include\nthe optional functions; to access them see {ERC20Detailed}.", + "fullyImplemented": false, + "id": 805, + "linearizedBaseContracts": [ + 805 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": "@dev Returns the amount of tokens in existence.", + "id": 743, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 739, + "nodeType": "ParameterList", + "parameters": [], + "src": "290:2:4" + }, + "returnParameters": { + "id": 742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 741, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 743, + "src": "316:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "315:9:4" + }, + "scope": 805, + "src": "270:55:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": "@dev Returns the amount of tokens owned by `account`.", + "id": 750, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 745, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 750, + "src": "427:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "427:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "426:17:4" + }, + "returnParameters": { + "id": 749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 748, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 750, + "src": "467:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 747, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "467:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "466:9:4" + }, + "scope": 805, + "src": "408:68:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": "@dev Moves `amount` tokens from the caller's account to `recipient`.\n * Returns a boolean value indicating whether the operation succeeded.\n * Emits a {Transfer} event.", + "id": 759, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 752, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "714:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 751, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "714:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 754, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "733:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 753, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "733:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "713:35:4" + }, + "returnParameters": { + "id": 758, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 757, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 759, + "src": "767:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 756, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "767:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "766:6:4" + }, + "scope": 805, + "src": "696:77:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": "@dev Returns the remaining number of tokens that `spender` will be\nallowed to spend on behalf of `owner` through {transferFrom}. This is\nzero by default.\n * This value changes when {approve} or {transferFrom} are called.", + "id": 768, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 761, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "1067:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1067:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "1082:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 762, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1082:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1066:32:4" + }, + "returnParameters": { + "id": 767, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 766, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 768, + "src": "1122:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 765, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1122:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1121:9:4" + }, + "scope": 805, + "src": "1048:83:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": "@dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n * Returns a boolean value indicating whether the operation succeeded.\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\nthat someone may use both the old and the new allowance by unfortunate\ntransaction ordering. One possible solution to mitigate this race\ncondition is to first reduce the spender's allowance to 0 and set the\ndesired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n * Emits an {Approval} event.", + "id": 777, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 770, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 777, + "src": "1801:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1801:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 772, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 777, + "src": "1818:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 771, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1818:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1800:33:4" + }, + "returnParameters": { + "id": 776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 775, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 777, + "src": "1852:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 774, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1852:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1851:6:4" + }, + "scope": 805, + "src": "1784:74:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": null, + "documentation": "@dev Moves `amount` tokens from `sender` to `recipient` using the\nallowance mechanism. `amount` is then deducted from the caller's\nallowance.\n * Returns a boolean value indicating whether the operation succeeded.\n * Emits a {Transfer} event.", + "id": 788, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 779, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 788, + "src": "2187:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 778, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2187:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 781, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 788, + "src": "2203:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 780, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2203:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 783, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 788, + "src": "2222:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 782, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2222:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2186:51:4" + }, + "returnParameters": { + "id": 787, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 786, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 788, + "src": "2256:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 785, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2256:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2255:6:4" + }, + "scope": 805, + "src": "2165:97:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": "@dev Emitted when `value` tokens are moved from one account (`from`) to\nanother (`to`).\n * Note that `value` may be zero.", + "id": 796, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 795, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 790, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 796, + "src": "2446:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 789, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2446:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 792, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 796, + "src": "2468:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 791, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2468:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 794, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 796, + "src": "2488:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 793, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2488:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2445:57:4" + }, + "src": "2431:72:4" + }, + { + "anonymous": false, + "documentation": "@dev Emitted when the allowance of a `spender` for an `owner` is set by\na call to {approve}. `value` is the new allowance.", + "id": 804, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 803, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 798, + "indexed": true, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "2677:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 797, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2677:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 800, + "indexed": true, + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "2700:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2700:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 802, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "2725:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2725:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2676:63:4" + }, + "src": "2662:78:4" + } + ], + "scope": 806, + "src": "176:2566:4" + } + ], + "src": "0:2743:4" + }, + "id": 4 + }, + "contracts/Deployer.sol": { + "ast": { + "absolutePath": "contracts/Deployer.sol", + "exportedSymbols": { + "Deployer": [ + 912 + ] + }, + "id": 913, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 807, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:5" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 809, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 4634, + "src": "25:53:5", + "symbolAliases": [ + { + "foreign": 808, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/NameRegistry.sol", + "file": "./NameRegistry.sol", + "id": 811, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 2725, + "src": "79:60:5", + "symbolAliases": [ + { + "foreign": 810, + "local": "Registry" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Tree.sol", + "file": "./Tree.sol", + "id": 813, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 4241, + "src": "140:46:5", + "symbolAliases": [ + { + "foreign": 812, + "local": "MerkleTree" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/IncrementalTree.sol", + "file": "./IncrementalTree.sol", + "id": 815, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 1703, + "src": "187:54:5", + "symbolAliases": [ + { + "foreign": 814, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/DepositManager.sol", + "file": "./DepositManager.sol", + "id": 817, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 1452, + "src": "242:52:5", + "symbolAliases": [ + { + "foreign": 816, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/TestToken.sol", + "file": "./TestToken.sol", + "id": 819, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 3706, + "src": "295:42:5", + "symbolAliases": [ + { + "foreign": 818, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Rollup.sol", + "file": "./Rollup.sol", + "id": 821, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 3687, + "src": "338:36:5", + "symbolAliases": [ + { + "foreign": 820, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/TokenRegistry.sol", + "file": "./TokenRegistry.sol", + "id": 823, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 3828, + "src": "375:50:5", + "symbolAliases": [ + { + "foreign": 822, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Logger.sol", + "file": "./Logger.sol", + "id": 825, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 1927, + "src": "426:36:5", + "symbolAliases": [ + { + "foreign": 824, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/MerkleTreeUtils.sol", + "file": "./MerkleTreeUtils.sol", + "id": 827, + "nodeType": "ImportDirective", + "scope": 913, + "sourceUnit": 2589, + "src": "463:65:5", + "symbolAliases": [ + { + "foreign": 826, + "local": "MTUtils" + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 1926, + 2588, + 3827 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 912, + "linearizedBaseContracts": [ + 912 + ], + "name": "Deployer", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 836, + "nodeType": "Block", + "src": "743:46:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 833, + "name": "nameregistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 829, + "src": "769:12:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 832, + "name": "deployContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "753:15:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", + "typeString": "function (address) returns (address)" + } + }, + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "753:29:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 835, + "nodeType": "ExpressionStatement", + "src": "753:29:5" + } + ] + }, + "documentation": null, + "id": 837, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 830, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 829, + "name": "nameregistry", + "nodeType": "VariableDeclaration", + "scope": 837, + "src": "714:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 828, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "714:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "713:22:5" + }, + "returnParameters": { + "id": 831, + "nodeType": "ParameterList", + "parameters": [], + "src": "743:0:5" + }, + "scope": 912, + "src": "702:87:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 910, + "nodeType": "Block", + "src": "891:1833:5", + "statements": [ + { + "assignments": [ + 845 + ], + "declarations": [ + { + "constant": false, + "id": 845, + "name": "registry", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "901:17:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + }, + "typeName": { + "contractScope": null, + "id": 844, + "name": "Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2724, + "src": "901:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 849, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 847, + "name": "nameRegistryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "930:16:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 846, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "921:8:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_NameRegistry_$2724_$", + "typeString": "type(contract NameRegistry)" + } + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "921:26:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "901:46:5" + }, + { + "assignments": [ + 851 + ], + "declarations": [ + { + "constant": false, + "id": 851, + "name": "mtUtils", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "957:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 850, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "957:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 857, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "983:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_MerkleTreeUtils_$2588_$", + "typeString": "function () returns (contract MerkleTreeUtils)" + }, + "typeName": { + "contractScope": null, + "id": 853, + "name": "MTUtils", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2588, + "src": "987:7:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + } + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "983:13:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + ], + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "975:22:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "957:40:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 861, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1050:12:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MERKLE_UTILS", + "nodeType": "MemberAccess", + "referencedDeclaration": 4511, + "src": "1050:25:5", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1050:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 864, + "name": "mtUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "1079:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 859, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 845, + "src": "1028:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "registerName", + "nodeType": "MemberAccess", + "referencedDeclaration": 2701, + "src": "1028:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) external returns (bool)" + } + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1028:59:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207265676973746572206d65726b6c65207574696c732074726565", + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1101:38:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4798d864cbc0c4b19e36b971873c42ac3c2e94d11e26b500105d32c96a0b9870", + "typeString": "literal_string \"Could not register merkle utils tree\"" + }, + "value": "Could not register merkle utils tree" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4798d864cbc0c4b19e36b971873c42ac3c2e94d11e26b500105d32c96a0b9870", + "typeString": "literal_string \"Could not register merkle utils tree\"" + } + ], + "id": 858, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1007:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1007:142:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 868, + "nodeType": "ExpressionStatement", + "src": "1007:142:5" + }, + { + "assignments": [ + 870 + ], + "declarations": [ + { + "constant": false, + "id": 870, + "name": "logger", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "1160:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 869, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1160:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 876, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1185:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Logger_$1926_$", + "typeString": "function () returns (contract Logger)" + }, + "typeName": { + "contractScope": null, + "id": 872, + "name": "Logger", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1926, + "src": "1189:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + } + }, + "id": 874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1185:12:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + ], + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1177:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1177:21:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1160:38:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 880, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1251:12:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "LOGGER", + "nodeType": "MemberAccess", + "referencedDeclaration": 4501, + "src": "1251:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1251:21:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 883, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 870, + "src": "1274:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 878, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 845, + "src": "1229:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "registerName", + "nodeType": "MemberAccess", + "referencedDeclaration": 2701, + "src": "1229:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) external returns (bool)" + } + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1229:52:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f74207265676973746572206c6f67676572", + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1295:24:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d4fb77682e809e7c8e853425707e8eb3957aed2a41c17ad8b0227804bef175f4", + "typeString": "literal_string \"Cannot register logger\"" + }, + "value": "Cannot register logger" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d4fb77682e809e7c8e853425707e8eb3957aed2a41c17ad8b0227804bef175f4", + "typeString": "literal_string \"Cannot register logger\"" + } + ], + "id": 877, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1208:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1208:121:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 887, + "nodeType": "ExpressionStatement", + "src": "1208:121:5" + }, + { + "assignments": [ + 889 + ], + "declarations": [ + { + "constant": false, + "id": 889, + "name": "tokenRegistry", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "1340:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1340:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 896, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 893, + "name": "nameRegistryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "1390:16:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1372:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_TokenRegistry_$3827_$", + "typeString": "function (address) returns (contract TokenRegistry)" + }, + "typeName": { + "contractScope": null, + "id": 891, + "name": "TokenRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3827, + "src": "1376:13:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenRegistry_$3827", + "typeString": "contract TokenRegistry" + } + } + }, + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1372:35:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenRegistry_$3827", + "typeString": "contract TokenRegistry" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_TokenRegistry_$3827", + "typeString": "contract TokenRegistry" + } + ], + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1364:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1364:44:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1340:68:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 900, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1461:12:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "TOKEN_REGISTRY", + "nodeType": "MemberAccess", + "referencedDeclaration": 4531, + "src": "1461:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1461:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 903, + "name": "tokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 889, + "src": "1492:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 898, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 845, + "src": "1439:8:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "registerName", + "nodeType": "MemberAccess", + "referencedDeclaration": 2701, + "src": "1439:21:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) external returns (bool)" + } + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1439:67:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "43616e6e6f7420726567697374657220746f6b656e207265676973747279", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1520:32:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_03e0f493f66998825b2a10dd31c27f106e4c6379fb3042020701bbfbe6a70314", + "typeString": "literal_string \"Cannot register token registry\"" + }, + "value": "Cannot register token registry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_03e0f493f66998825b2a10dd31c27f106e4c6379fb3042020701bbfbe6a70314", + "typeString": "literal_string \"Cannot register token registry\"" + } + ], + "id": 897, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1418:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1418:144:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 907, + "nodeType": "ExpressionStatement", + "src": "1418:144:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 908, + "name": "nameRegistryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "1580:16:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 843, + "id": 909, + "nodeType": "Return", + "src": "1573:23:5" + } + ] + }, + "documentation": null, + "id": 911, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deployContracts", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 840, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 839, + "name": "nameRegistryAddr", + "nodeType": "VariableDeclaration", + "scope": 911, + "src": "820:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "820:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "819:26:5" + }, + "returnParameters": { + "id": 843, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 842, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 911, + "src": "878:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 841, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "878:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "877:9:5" + }, + "scope": 912, + "src": "795:1929:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 913, + "src": "678:2048:5" + } + ], + "src": "0:2727:5" + }, + "id": 5 + }, + "contracts/DepositManager.sol": { + "ast": { + "absolutePath": "contracts/DepositManager.sol", + "exportedSymbols": { + "DepositManager": [ + 1451 + ] + }, + "id": 1452, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 914, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:6" + }, + { + "id": 915, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:6" + }, + { + "absolutePath": "contracts/IncrementalTree.sol", + "file": "./IncrementalTree.sol", + "id": 917, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 1703, + "src": "59:54:6", + "symbolAliases": [ + { + "foreign": 916, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/Types.sol", + "file": "./libs/Types.sol", + "id": 919, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 4835, + "src": "114:39:6", + "symbolAliases": [ + { + "foreign": 918, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Logger.sol", + "file": "./Logger.sol", + "id": 921, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 1927, + "src": "154:36:6", + "symbolAliases": [ + { + "foreign": 920, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/RollupUtils.sol", + "file": "./libs/RollupUtils.sol", + "id": 923, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 4761, + "src": "191:51:6", + "symbolAliases": [ + { + "foreign": 922, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/MerkleTreeUtils.sol", + "file": "./MerkleTreeUtils.sol", + "id": 925, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 2589, + "src": "243:65:6", + "symbolAliases": [ + { + "foreign": 924, + "local": "MTUtils" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/NameRegistry.sol", + "file": "./NameRegistry.sol", + "id": 927, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 2725, + "src": "309:60:6", + "symbolAliases": [ + { + "foreign": 926, + "local": "Registry" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/interfaces/ITokenRegistry.sol", + "file": "./interfaces/ITokenRegistry.sol", + "id": 929, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 4304, + "src": "370:63:6", + "symbolAliases": [ + { + "foreign": 928, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/interfaces/IERC20.sol", + "file": "./interfaces/IERC20.sol", + "id": 931, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 4266, + "src": "434:47:6", + "symbolAliases": [ + { + "foreign": 930, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Tree.sol", + "file": "./Tree.sol", + "id": 933, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 4241, + "src": "482:46:6", + "symbolAliases": [ + { + "foreign": 932, + "local": "MerkleTree" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 935, + "nodeType": "ImportDirective", + "scope": 1452, + "sourceUnit": 4634, + "src": "529:53:6", + "symbolAliases": [ + { + "foreign": 934, + "local": null + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1451, + "linearizedBaseContracts": [ + 1451 + ], + "name": "DepositManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 937, + "name": "merkleUtils", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "615:26:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + }, + "typeName": { + "contractScope": null, + "id": 936, + "name": "MTUtils", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2588, + "src": "615:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 939, + "name": "nameRegistry", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "647:28:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + }, + "typeName": { + "contractScope": null, + "id": 938, + "name": "Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2724, + "src": "647:8:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 941, + "name": "balancesTree", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "681:30:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + }, + "typeName": { + "contractScope": null, + "id": 940, + "name": "MerkleTree", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4240, + "src": "681:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 944, + "name": "pendingDeposits", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "717:32:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 942, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "717:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 943, + "length": null, + "nodeType": "ArrayTypeName", + "src": "717:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 946, + "name": "queueNumber", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "755:26:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "755:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 948, + "name": "depositSubtreeHeight", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "787:35:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "787:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 950, + "name": "Coordinator", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "829:26:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "829:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 952, + "name": "logger", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "862:20:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + }, + "typeName": { + "contractScope": null, + "id": 951, + "name": "Logger", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1926, + "src": "862:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 954, + "name": "tokenRegistry", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "888:35:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + }, + "typeName": { + "contractScope": null, + "id": 953, + "name": "ITokenRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4303, + "src": "888:14:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 956, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "929:27:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 955, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4265, + "src": "929:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 958, + "name": "accountsTree", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "962:35:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + }, + "typeName": { + "contractScope": null, + "id": 957, + "name": "IncrementalTree", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1702, + "src": "962:15:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 960, + "name": "isPaused", + "nodeType": "VariableDeclaration", + "scope": 1451, + "src": "1004:13:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 959, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1004:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 969, + "nodeType": "Block", + "src": "1063:53:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 963, + "name": "isPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 960, + "src": "1080:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1092:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1080:17:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 962, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5386, + "src": "1073:6:6", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1073:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 967, + "nodeType": "ExpressionStatement", + "src": "1073:25:6" + }, + { + "id": 968, + "nodeType": "PlaceholderStatement", + "src": "1108:1:6" + } + ] + }, + "documentation": null, + "id": 970, + "name": "isNotWaitingForFinalisation", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 961, + "nodeType": "ParameterList", + "parameters": [], + "src": "1060:2:6" + }, + "src": "1024:92:6", + "visibility": "internal" + }, + { + "body": { + "id": 1036, + "nodeType": "Block", + "src": "1164:622:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 975, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 939, + "src": "1174:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 977, + "name": "_registryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 972, + "src": "1198:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 976, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "1189:8:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_NameRegistry_$2724_$", + "typeString": "type(contract NameRegistry)" + } + }, + "id": 978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1189:23:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "src": "1174:38:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 980, + "nodeType": "ExpressionStatement", + "src": "1174:38:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 981, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 937, + "src": "1222:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 985, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1289:12:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MERKLE_UTILS", + "nodeType": "MemberAccess", + "referencedDeclaration": 4511, + "src": "1289:25:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1289:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 983, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 939, + "src": "1257:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "1257:31:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1257:60:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 982, + "name": "MTUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "1236:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleTreeUtils_$2588_$", + "typeString": "type(contract MerkleTreeUtils)" + } + }, + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1236:91:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "src": "1222:105:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 991, + "nodeType": "ExpressionStatement", + "src": "1222:105:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 992, + "name": "tokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 954, + "src": "1337:13:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 996, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1413:12:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "TOKEN_REGISTRY", + "nodeType": "MemberAccess", + "referencedDeclaration": 4531, + "src": "1413:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1413:29:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 994, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 939, + "src": "1381:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "1381:31:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1381:62:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 993, + "name": "ITokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4303, + "src": "1353:14:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ITokenRegistry_$4303_$", + "typeString": "type(contract ITokenRegistry)" + } + }, + "id": 1000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1353:100:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "src": "1337:116:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "id": 1002, + "nodeType": "ExpressionStatement", + "src": "1337:116:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1003, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 952, + "src": "1463:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1007, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1511:12:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "LOGGER", + "nodeType": "MemberAccess", + "referencedDeclaration": 4501, + "src": "1511:19:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 1009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1511:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1005, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 939, + "src": "1479:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "1479:31:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1479:54:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1004, + "name": "Logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1926, + "src": "1472:6:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Logger_$1926_$", + "typeString": "type(contract Logger)" + } + }, + "id": 1011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1472:62:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "src": "1463:71:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 1013, + "nodeType": "ExpressionStatement", + "src": "1463:71:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1014, + "name": "accountsTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "1544:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1018, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1620:12:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ACCOUNTS_TREE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4481, + "src": "1620:26:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1620:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1016, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 939, + "src": "1588:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 1017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "1588:31:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 1021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1588:61:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1015, + "name": "IncrementalTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "1559:15:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IncrementalTree_$1702_$", + "typeString": "type(contract IncrementalTree)" + } + }, + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1559:100:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "src": "1544:115:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "id": 1024, + "nodeType": "ExpressionStatement", + "src": "1544:115:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1025, + "name": "balancesTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "1669:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1029, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1740:12:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BALANCES_TREE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4491, + "src": "1740:26:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1740:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1027, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 939, + "src": "1708:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "1708:31:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1708:61:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1026, + "name": "MerkleTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4240, + "src": "1684:10:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Tree_$4240_$", + "typeString": "type(contract Tree)" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1684:95:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "src": "1669:110:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "id": 1035, + "nodeType": "ExpressionStatement", + "src": "1669:110:6" + } + ] + }, + "documentation": null, + "id": 1037, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 973, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 972, + "name": "_registryAddr", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "1134:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1134:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1133:23:6" + }, + "returnParameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [], + "src": "1164:0:6" + }, + "scope": 1451, + "src": "1122:664:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1056, + "nodeType": "Block", + "src": "2133:69:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "2154:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2154:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1051, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "2166:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1052, + "name": "_tokenType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "2175:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1053, + "name": "_pubkey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "2187:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1048, + "name": "depositFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1305, + "src": "2143:10:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory)" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2143:52:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1055, + "nodeType": "ExpressionStatement", + "src": "2143:52:6" + } + ] + }, + "documentation": "@notice Adds a deposit for the msg.sender to the deposit queue\n@param _amount Number of tokens that user wants to deposit\n@param _tokenType Type of token user is depositing", + "id": 1057, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1046, + "modifierName": { + "argumentTypes": null, + "id": 1045, + "name": "isNotWaitingForFinalisation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "2101:27:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2101:27:6" + } + ], + "name": "deposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1039, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 1057, + "src": "2019:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2019:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "_tokenType", + "nodeType": "VariableDeclaration", + "scope": 1057, + "src": "2036:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1040, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2036:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "_pubkey", + "nodeType": "VariableDeclaration", + "scope": 1057, + "src": "2056:20:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1042, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2056:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2018:59:6" + }, + "returnParameters": { + "id": 1047, + "nodeType": "ParameterList", + "parameters": [], + "src": "2133:0:6" + }, + "scope": 1451, + "src": "2002:200:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1304, + "nodeType": "Block", + "src": "2651:2823:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1071, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "2711:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2721:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2711:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e206465706f736974206d7573742062652067726561746572207468616e2030", + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2724:38:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aa4f62f27e52105c0833cada7aa0cd742baac0cc7b9322d67b04ae9ad260581c", + "typeString": "literal_string \"token deposit must be greater than 0\"" + }, + "value": "token deposit must be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aa4f62f27e52105c0833cada7aa0cd742baac0cc7b9322d67b04ae9ad260581c", + "typeString": "literal_string \"token deposit must be greater than 0\"" + } + ], + "id": 1070, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "2703:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2703:60:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1076, + "nodeType": "ExpressionStatement", + "src": "2703:60:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1078, + "name": "_destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "2852:12:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1081, + "name": "_pubkey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1065, + "src": "2897:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1079, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "2868:11:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calculateAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 4759, + "src": "2868:28:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) pure returns (address)" + } + }, + "id": 1082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2868:37:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2852:53:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7075626c6963206b657920616e64206164647265737320646f6e2774206d61746368", + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2919:36:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_02304aed1a7d7c2e243536bd2d88c7b92ecf938e38f4a2a90985593b0541f92a", + "typeString": "literal_string \"public key and address don't match\"" + }, + "value": "public key and address don't match" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_02304aed1a7d7c2e243536bd2d88c7b92ecf938e38f4a2a90985593b0541f92a", + "typeString": "literal_string \"public key and address don't match\"" + } + ], + "id": 1077, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "2831:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2831:134:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1086, + "nodeType": "ExpressionStatement", + "src": "2831:134:6" + }, + { + "assignments": [ + 1088 + ], + "declarations": [ + { + "constant": false, + "id": 1088, + "name": "tokenContractAddress", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3011:28:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3011:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1093, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1091, + "name": "_tokenType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1063, + "src": "3086:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1089, + "name": "tokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 954, + "src": "3042:13:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "id": 1090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "registeredTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 4279, + "src": "3042:30:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view external returns (address)" + } + }, + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3042:64:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3011:95:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1094, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "3116:13:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1096, + "name": "tokenContractAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1088, + "src": "3139:20:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1095, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "3132:6:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$4265_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3132:28:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "src": "3116:44:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "id": 1099, + "nodeType": "ExpressionStatement", + "src": "3116:44:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1103, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "3272:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3272:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1106, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5441, + "src": "3292:4:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DepositManager_$1451", + "typeString": "contract DepositManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DepositManager_$1451", + "typeString": "contract DepositManager" + } + ], + "id": 1105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3284:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3284:13:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1108, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "3299:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1101, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 956, + "src": "3245:13:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4254, + "src": "3245:26:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3245:62:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "746f6b656e207472616e73666572206e6f7420617070726f766564", + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3321:29:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d44833cbf3b4f7bf6135d4bb0ca98fe27162dfd7da7142868d43bea1bb1e822d", + "typeString": "literal_string \"token transfer not approved\"" + }, + "value": "token transfer not approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d44833cbf3b4f7bf6135d4bb0ca98fe27162dfd7da7142868d43bea1bb1e822d", + "typeString": "literal_string \"token transfer not approved\"" + } + ], + "id": 1100, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "3224:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3224:136:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1112, + "nodeType": "ExpressionStatement", + "src": "3224:136:6" + }, + { + "assignments": [ + 1116 + ], + "declarations": [ + { + "constant": false, + "id": 1116, + "name": "newPDALeaf", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3405:31:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory_ptr", + "typeString": "struct Types.PDALeaf" + }, + "typeName": { + "contractScope": null, + "id": 1115, + "name": "Types.PDALeaf", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4765, + "src": "3405:13:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_storage_ptr", + "typeString": "struct Types.PDALeaf" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1117, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3405:31:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1118, + "name": "newPDALeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1116, + "src": "3446:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory_ptr", + "typeString": "struct Types.PDALeaf memory" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "pubkey", + "nodeType": "MemberAccess", + "referencedDeclaration": 4764, + "src": "3446:17:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1121, + "name": "_pubkey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1065, + "src": "3466:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "3446:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "id": 1123, + "nodeType": "ExpressionStatement", + "src": "3446:27:6" + }, + { + "assignments": [ + 1125 + ], + "declarations": [ + { + "constant": false, + "id": 1125, + "name": "accID", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3538:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3538:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1133, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1130, + "name": "newPDALeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1116, + "src": "3617:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory_ptr", + "typeString": "struct Types.PDALeaf memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory_ptr", + "typeString": "struct Types.PDALeaf memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1128, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "3591:11:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 1129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "PDALeafToHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 4654, + "src": "3591:25:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_PDALeaf_$4765_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct Types.PDALeaf memory) pure returns (bytes32)" + } + }, + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3591:37:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1126, + "name": "accountsTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 958, + "src": "3554:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "id": 1127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "appendLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1672, + "src": "3554:23:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) external returns (uint256)" + } + }, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3554:84:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3538:100:6" + }, + { + "assignments": [ + 1137 + ], + "declarations": [ + { + "constant": false, + "id": 1137, + "name": "newAccount", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3681:35:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 1136, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "3681:17:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1138, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3681:35:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1139, + "name": "newAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "3726:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 1141, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4812, + "src": "3726:18:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1142, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "3747:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3726:28:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1144, + "nodeType": "ExpressionStatement", + "src": "3726:28:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1145, + "name": "newAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "3764:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 1147, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4810, + "src": "3764:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1148, + "name": "_tokenType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1063, + "src": "3787:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3764:33:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1150, + "nodeType": "ExpressionStatement", + "src": "3764:33:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1151, + "name": "newAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "3807:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 1153, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 4814, + "src": "3807:16:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3826:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3807:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1156, + "nodeType": "ExpressionStatement", + "src": "3807:20:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1157, + "name": "newAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "3837:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 1159, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "ID", + "nodeType": "MemberAccess", + "referencedDeclaration": 4808, + "src": "3837:13:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1160, + "name": "accID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1125, + "src": "3853:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3837:21:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1162, + "nodeType": "ExpressionStatement", + "src": "3837:21:6" + }, + { + "assignments": [ + 1164 + ], + "declarations": [ + { + "constant": false, + "id": 1164, + "name": "accountHash", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "3901:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1163, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3901:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1169, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1167, + "name": "newAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "3951:10:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1165, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "3923:11:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "HashFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4697, + "src": "3923:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes32)" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3923:39:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3901:61:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1173, + "name": "accountHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "4023:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1170, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4002:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4002:20:6", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) returns (uint256)" + } + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4002:33:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1175, + "nodeType": "ExpressionStatement", + "src": "4002:33:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1179, + "name": "accID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1125, + "src": "4108:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1180, + "name": "_destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1059, + "src": "4127:12:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1181, + "name": "_amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1061, + "src": "4153:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1182, + "name": "_tokenType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1063, + "src": "4174:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1183, + "name": "accountHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "4198:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1184, + "name": "_pubkey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1065, + "src": "4223:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1176, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 952, + "src": "4071:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logDepositQueued", + "nodeType": "MemberAccess", + "referencedDeclaration": 1877, + "src": "4071:23:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,address,uint256,uint256,bytes32,bytes memory) external" + } + }, + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4071:169:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "4071:169:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4251:13:6", + "subExpression": { + "argumentTypes": null, + "id": 1187, + "name": "queueNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 946, + "src": "4251:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1189, + "nodeType": "ExpressionStatement", + "src": "4251:13:6" + }, + { + "assignments": [ + 1191 + ], + "declarations": [ + { + "constant": false, + "id": 1191, + "name": "tmpDepositSubtreeHeight", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "4274:31:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4274:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1193, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4308:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4274:35:6" + }, + { + "assignments": [ + 1195 + ], + "declarations": [ + { + "constant": false, + "id": 1195, + "name": "tmp", + "nodeType": "VariableDeclaration", + "scope": 1304, + "src": "4319:11:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1194, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4319:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1197, + "initialValue": { + "argumentTypes": null, + "id": 1196, + "name": "queueNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 946, + "src": "4333:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4319:25:6" + }, + { + "body": { + "id": 1282, + "nodeType": "Block", + "src": "4375:801:6", + "statements": [ + { + "assignments": [ + 1206 + ], + "declarations": [ + { + "constant": false, + "id": 1206, + "name": "deposits", + "nodeType": "VariableDeclaration", + "scope": 1282, + "src": "4389:25:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 1204, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4389:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1205, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4389:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1212, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4431:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "id": 1209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4417:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 1207, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4421:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1208, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4421:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4417:16:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4389:44:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1213, + "name": "deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "4447:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1215, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4456:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4447:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1216, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4461:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1221, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1217, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4477:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1218, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4477:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4502:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4477:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4461:43:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4447:57:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1223, + "nodeType": "ExpressionStatement", + "src": "4447:57:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1224, + "name": "deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "4518:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1226, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4527:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4518:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1227, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4532:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1232, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1228, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4548:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1229, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4548:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4573:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4548:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4532:43:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4518:57:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1234, + "nodeType": "ExpressionStatement", + "src": "4518:57:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1235, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4590:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1240, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1236, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4606:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1237, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4606:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4631:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4606:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4590:43:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1243, + "name": "deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "4675:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1245, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4684:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4675:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1246, + "name": "deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "4704:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1248, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4713:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4704:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1241, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 937, + "src": "4636:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getParent", + "nodeType": "MemberAccess", + "referencedDeclaration": 2497, + "src": "4636:21:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure external returns (bytes32)" + } + }, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4636:93:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4590:139:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1251, + "nodeType": "ExpressionStatement", + "src": "4590:139:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1253, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "4821:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4821:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4846:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4821:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1252, + "name": "removeDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "4807:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4807:41:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1258, + "nodeType": "ExpressionStatement", + "src": "4807:41:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1259, + "name": "tmp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "4862:3:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1260, + "name": "tmp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "4868:3:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4874:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4868:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4862:13:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1264, + "nodeType": "ExpressionStatement", + "src": "4862:13:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4944:25:6", + "subExpression": { + "argumentTypes": null, + "id": 1265, + "name": "tmpDepositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "4944:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1267, + "nodeType": "ExpressionStatement", + "src": "4944:25:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1271, + "name": "deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "5075:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1273, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5084:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5075:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1274, + "name": "deposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "5104:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 1276, + "indexExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5113:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5104:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1277, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "5133:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1279, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5149:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5133:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1268, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 952, + "src": "5030:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logDepositLeafMerged", + "nodeType": "MemberAccess", + "referencedDeclaration": 1901, + "src": "5030:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32) external" + } + }, + "id": 1280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5030:135:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1281, + "nodeType": "ExpressionStatement", + "src": "5030:135:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1198, + "name": "tmp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "4361:3:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4367:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "4361:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4372:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4361:12:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1283, + "nodeType": "WhileStatement", + "src": "4354:822:6" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1284, + "name": "tmpDepositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "5189:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 1285, + "name": "depositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "5215:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5189:46:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1292, + "nodeType": "IfStatement", + "src": "5185:123:6", + "trueBody": { + "id": 1291, + "nodeType": "Block", + "src": "5237:71:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1287, + "name": "depositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "5251:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1288, + "name": "tmpDepositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1191, + "src": "5274:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5251:46:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1290, + "nodeType": "ExpressionStatement", + "src": "5251:46:6" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1293, + "name": "depositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "5321:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1294, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "5345:12:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_DEPOSIT_SUBTREE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4553, + "src": "5345:32:6", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint8_$", + "typeString": "function () pure returns (uint8)" + } + }, + "id": 1296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5345:34:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5321:58:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1303, + "nodeType": "IfStatement", + "src": "5317:151:6", + "trueBody": { + "id": 1302, + "nodeType": "Block", + "src": "5381:87:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1298, + "name": "isPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 960, + "src": "5442:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5453:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5442:15:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1301, + "nodeType": "ExpressionStatement", + "src": "5442:15:6" + } + ] + } + } + ] + }, + "documentation": "@notice Adds a deposit for an address to the deposit queue\n@param _destination Address for which we are depositing\n@param _amount Number of tokens that user wants to deposit\n@param _tokenType Type of token user is depositing", + "id": 1305, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 1068, + "modifierName": { + "argumentTypes": null, + "id": 1067, + "name": "isNotWaitingForFinalisation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "2623:27:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2623:27:6" + } + ], + "name": "depositFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1059, + "name": "_destination", + "nodeType": "VariableDeclaration", + "scope": 1305, + "src": "2506:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1058, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2506:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1061, + "name": "_amount", + "nodeType": "VariableDeclaration", + "scope": 1305, + "src": "2536:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2536:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1063, + "name": "_tokenType", + "nodeType": "VariableDeclaration", + "scope": 1305, + "src": "2561:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2561:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1065, + "name": "_pubkey", + "nodeType": "VariableDeclaration", + "scope": 1305, + "src": "2589:20:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1064, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2589:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2496:119:6" + }, + "returnParameters": { + "id": 1069, + "nodeType": "ParameterList", + "parameters": [], + "src": "2651:0:6" + }, + "scope": 1451, + "src": "2477:2997:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1382, + "nodeType": "Block", + "src": "6050:1363:6", + "statements": [ + { + "assignments": [ + 1315 + ], + "declarations": [ + { + "constant": false, + "id": 1315, + "name": "emptySubtreeRoot", + "nodeType": "VariableDeclaration", + "scope": 1382, + "src": "6060:24:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1314, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6060:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1320, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1318, + "name": "_subTreeDepth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1307, + "src": "6107:13:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1316, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 937, + "src": "6087:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2052, + "src": "6087:19:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view external returns (bytes32)" + } + }, + "id": 1319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6087:34:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6060:61:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1324, + "name": "balancesTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "6309:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "id": 1325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4161, + "src": "6309:20:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6309:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1327, + "name": "emptySubtreeRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "6349:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1328, + "name": "_zero_account_mp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "6383:16:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 1329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "6383:26:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 1330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "6383:40:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1331, + "name": "_zero_account_mp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "6441:16:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 1332, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4820, + "src": "6441:25:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1322, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 937, + "src": "6269:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verifyLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 2407, + "src": "6269:22:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32,uint256,bytes32[] memory) view external returns (bool)" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6269:211:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "70726f6f6620696e76616c6964", + "id": 1334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6494:15:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20c51a3fd8dc9dfc717483bcde91be45d19b31a6c88ed4ece67801242daf6282", + "typeString": "literal_string \"proof invalid\"" + }, + "value": "proof invalid" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_20c51a3fd8dc9dfc717483bcde91be45d19b31a6c88ed4ece67801242daf6282", + "typeString": "literal_string \"proof invalid\"" + } + ], + "id": 1321, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "6248:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6248:271:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1336, + "nodeType": "ExpressionStatement", + "src": "6248:271:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1340, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "6790:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1342, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6806:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6790:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1343, + "name": "_zero_account_mp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "6822:16:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 1344, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "6822:26:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 1345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "6822:40:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1346, + "name": "_zero_account_mp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "6876:16:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 1347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4820, + "src": "6876:25:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 1337, + "name": "balancesTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "6754:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "storeLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4068, + "src": "6754:22:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint256,bytes32[] memory) external" + } + }, + "id": 1348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6754:157:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1349, + "nodeType": "ExpressionStatement", + "src": "6754:157:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6979:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1350, + "name": "removeDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "6965:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6965:16:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1353, + "nodeType": "ExpressionStatement", + "src": "6965:16:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1354, + "name": "queueNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 946, + "src": "7053:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1355, + "name": "queueNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 946, + "src": "7067:11:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7081:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "id": 1357, + "name": "depositSubtreeHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 948, + "src": "7084:20:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7081:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7067:37:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7053:51:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1361, + "nodeType": "ExpressionStatement", + "src": "7053:51:6" + }, + { + "assignments": [ + 1363 + ], + "declarations": [ + { + "constant": false, + "id": 1363, + "name": "newRoot", + "nodeType": "VariableDeclaration", + "scope": 1382, + "src": "7114:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1362, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7114:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1367, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1364, + "name": "balancesTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 941, + "src": "7132:12:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "id": 1365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4161, + "src": "7132:20:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7132:22:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7114:40:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1371, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "7231:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1373, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7247:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7231:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1374, + "name": "_zero_account_mp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1309, + "src": "7263:16:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 1375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "7263:26:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 1376, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "7263:40:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1377, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "7317:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1368, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 952, + "src": "7191:6:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logDepositFinalised", + "nodeType": "MemberAccess", + "referencedDeclaration": 1925, + "src": "7191:26:6", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,uint256,bytes32) external" + } + }, + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7191:143:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1379, + "nodeType": "ExpressionStatement", + "src": "7191:143:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1380, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1363, + "src": "7399:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1313, + "id": 1381, + "nodeType": "Return", + "src": "7392:14:6" + } + ] + }, + "documentation": "@notice Merges the deposit tree with the balance tree by\n superimposing the deposit subtree on the balance tree\n@param _subTreeDepth Deposit tree depth or depth of subtree that is being deposited\n@param _zero_account_mp Merkle proof proving the node at which we are inserting the deposit subtree consists of all empty leaves\n@return Updates in-state merkle tree root", + "id": 1383, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finaliseDeposits", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1307, + "name": "_subTreeDepth", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "5939:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5939:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1309, + "name": "_zero_account_mp", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "5970:48:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof" + }, + "typeName": { + "contractScope": null, + "id": 1308, + "name": "Types.AccountMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4821, + "src": "5970:24:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_storage_ptr", + "typeString": "struct Types.AccountMerkleProof" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5929:95:6" + }, + "returnParameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1312, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "6041:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1311, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6041:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6040:9:6" + }, + "scope": 1451, + "src": "5904:1509:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1449, + "nodeType": "Block", + "src": "7667:577:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1389, + "name": "_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "7698:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1390, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "7707:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7707:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7698:31:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "617272617920696e646578206973206f7574206f6620626f756e6473", + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7743:30:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_adb93caa60558e9660634534c5102dd0a0b8d7a686b545db224a7333310254af", + "typeString": "literal_string \"array index is out of bounds\"" + }, + "value": "array index is out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_adb93caa60558e9660634534c5102dd0a0b8d7a686b545db224a7333310254af", + "typeString": "literal_string \"array index is out of bounds\"" + } + ], + "id": 1388, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "7677:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7677:106:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1395, + "nodeType": "ExpressionStatement", + "src": "7677:106:6" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1396, + "name": "_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "7838:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7848:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7838:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1426, + "nodeType": "IfStatement", + "src": "7834:219:6", + "trueBody": { + "id": 1425, + "nodeType": "Block", + "src": "7851:202:6", + "statements": [ + { + "body": { + "id": 1422, + "nodeType": "Block", + "src": "7922:101:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "7940:25:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1412, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "7947:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1414, + "indexExpression": { + "argumentTypes": null, + "id": 1413, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "7963:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7947:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1416, + "nodeType": "ExpressionStatement", + "src": "7940:25:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "7984:24:6", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1417, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "7984:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7984:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1421, + "nodeType": "ExpressionStatement", + "src": "7984:24:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1403, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "7885:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1404, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "7889:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1405, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7889:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7914:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7889:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7885:30:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1423, + "initializationExpression": { + "assignments": [ + 1400 + ], + "declarations": [ + { + "constant": false, + "id": 1400, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1423, + "src": "7870:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7870:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1402, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7882:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "7870:13:6" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "7917:3:6", + "subExpression": { + "argumentTypes": null, + "id": 1409, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1400, + "src": "7917:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1411, + "nodeType": "ExpressionStatement", + "src": "7917:3:6" + }, + "nodeType": "ForStatement", + "src": "7865:158:6" + }, + { + "expression": null, + "functionReturnParameters": 1387, + "id": 1424, + "nodeType": "Return", + "src": "8036:7:6" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1427, + "name": "_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "8067:6:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1428, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "8077:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1429, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8077:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8102:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8077:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8067:36:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1448, + "nodeType": "IfStatement", + "src": "8063:175:6", + "trueBody": { + "id": 1447, + "nodeType": "Block", + "src": "8105:133:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "8119:50:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1433, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "8126:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1438, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1434, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "8142:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1435, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8142:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8167:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8142:26:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8126:43:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1440, + "nodeType": "ExpressionStatement", + "src": "8119:50:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "8183:24:6", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1441, + "name": "pendingDeposits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 944, + "src": "8183:15:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8183:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1445, + "nodeType": "ExpressionStatement", + "src": "8183:24:6" + }, + { + "expression": null, + "functionReturnParameters": 1387, + "id": 1446, + "nodeType": "Return", + "src": "8221:7:6" + } + ] + } + } + ] + }, + "documentation": "@notice Removes a deposit from the pendingDeposits queue and shifts the queue\n@param _index Index of the element to remove\n@return Remaining elements of the array", + "id": 1450, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removeDeposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1385, + "name": "_index", + "nodeType": "VariableDeclaration", + "scope": 1450, + "src": "7642:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7642:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7641:16:6" + }, + "returnParameters": { + "id": 1387, + "nodeType": "ParameterList", + "parameters": [], + "src": "7667:0:6" + }, + "scope": 1451, + "src": "7619:625:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1452, + "src": "585:7661:6" + } + ], + "src": "0:8247:6" + }, + "id": 6 + }, + "contracts/IncrementalTree.sol": { + "ast": { + "absolutePath": "contracts/IncrementalTree.sol", + "exportedSymbols": { + "IncrementalTree": [ + 1702 + ] + }, + "id": 1703, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1453, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:7" + }, + { + "absolutePath": "contracts/MerkleTreeUtils.sol", + "file": "./MerkleTreeUtils.sol", + "id": 1455, + "nodeType": "ImportDirective", + "scope": 1703, + "sourceUnit": 2589, + "src": "26:65:7", + "symbolAliases": [ + { + "foreign": 1454, + "local": "MTUtils" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 1457, + "nodeType": "ImportDirective", + "scope": 1703, + "sourceUnit": 4634, + "src": "92:53:7", + "symbolAliases": [ + { + "foreign": 1456, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/NameRegistry.sol", + "file": "./NameRegistry.sol", + "id": 1459, + "nodeType": "ImportDirective", + "scope": 1703, + "sourceUnit": 2725, + "src": "146:60:7", + "symbolAliases": [ + { + "foreign": 1458, + "local": "Registry" + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1702, + "linearizedBaseContracts": [ + 1702 + ], + "name": "IncrementalTree", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1464, + "name": "DEPTH", + "nodeType": "VariableDeclaration", + "scope": 1702, + "src": "240:40:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "240:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1461, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "256:12:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_DEPTH", + "nodeType": "MemberAccess", + "referencedDeclaration": 4542, + "src": "256:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint8_$", + "typeString": "function () pure returns (uint8)" + } + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "256:24:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1466, + "name": "nameRegistry", + "nodeType": "VariableDeclaration", + "scope": 1702, + "src": "286:28:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + }, + "typeName": { + "contractScope": null, + "id": 1465, + "name": "Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2724, + "src": "286:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1468, + "name": "merkleUtils", + "nodeType": "VariableDeclaration", + "scope": 1702, + "src": "320:26:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + }, + "typeName": { + "contractScope": null, + "id": 1467, + "name": "MTUtils", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2588, + "src": "320:7:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1470, + "name": "tree", + "nodeType": "VariableDeclaration", + "scope": 1702, + "src": "353:22:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree" + }, + "typeName": { + "contractScope": null, + "id": 1469, + "name": "MerkleTree", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1478, + "src": "353:10:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage_ptr", + "typeString": "struct IncrementalTree.MerkleTree" + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "IncrementalTree.MerkleTree", + "id": 1478, + "members": [ + { + "constant": false, + "id": 1472, + "name": "root", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "480:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1471, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "480:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1474, + "name": "height", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "540:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "540:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1477, + "name": "filledSubtrees", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "729:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 1475, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "729:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1476, + "length": null, + "nodeType": "ArrayTypeName", + "src": "729:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "MerkleTree", + "nodeType": "StructDefinition", + "scope": 1702, + "src": "424:336:7", + "visibility": "public" + }, + { + "constant": false, + "id": 1481, + "name": "nextLeafIndex", + "nodeType": "VariableDeclaration", + "scope": 1702, + "src": "803:32:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "803:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30", + "id": 1480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "834:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "body": { + "id": 1549, + "nodeType": "Block", + "src": "884:490:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1486, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "894:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "filledSubtrees", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "894:19:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1492, + "name": "DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1464, + "src": "930:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "916:13:7", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 1489, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "920:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1490, + "length": null, + "nodeType": "ArrayTypeName", + "src": "920:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "916:20:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + }, + "src": "894:42:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1495, + "nodeType": "ExpressionStatement", + "src": "894:42:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1496, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1466, + "src": "946:12:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1498, + "name": "_registryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "970:13:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1497, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "961:8:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_NameRegistry_$2724_$", + "typeString": "type(contract NameRegistry)" + } + }, + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "961:23:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "src": "946:38:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 1501, + "nodeType": "ExpressionStatement", + "src": "946:38:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1502, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "994:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1506, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1061:12:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MERKLE_UTILS", + "nodeType": "MemberAccess", + "referencedDeclaration": 4511, + "src": "1061:25:7", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1061:27:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1504, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1466, + "src": "1029:12:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "1029:31:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 1509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1029:60:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1503, + "name": "MTUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "1008:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleTreeUtils_$2588_$", + "typeString": "type(contract MerkleTreeUtils)" + } + }, + "id": 1510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1008:91:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "src": "994:105:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1512, + "nodeType": "ExpressionStatement", + "src": "994:105:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1514, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "1145:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getZeroRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2032, + "src": "1145:23:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 1516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1145:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1517, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "1184:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMaxTreeDepth", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "1184:27:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1184:29:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1513, + "name": "setMerkleRootAndHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "1109:22:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1109:114:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1521, + "nodeType": "ExpressionStatement", + "src": "1109:114:7" + }, + { + "assignments": [ + 1523 + ], + "declarations": [ + { + "constant": false, + "id": 1523, + "name": "zero", + "nodeType": "VariableDeclaration", + "scope": 1549, + "src": "1233:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1233:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1528, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1268:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 1524, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "1248:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2052, + "src": "1248:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view external returns (bytes32)" + } + }, + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1248:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1233:37:7" + }, + { + "body": { + "id": 1547, + "nodeType": "Block", + "src": "1314:54:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1539, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1328:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1542, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "filledSubtrees", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "1328:19:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1543, + "indexExpression": { + "argumentTypes": null, + "id": 1541, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "1348:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1328:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1544, + "name": "zero", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1523, + "src": "1353:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1328:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1546, + "nodeType": "ExpressionStatement", + "src": "1328:29:7" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1533, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "1298:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1534, + "name": "DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1464, + "src": "1302:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1298:9:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1548, + "initializationExpression": { + "assignments": [ + 1530 + ], + "declarations": [ + { + "constant": false, + "id": 1530, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1548, + "src": "1285:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1529, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1285:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1532, + "initialValue": { + "argumentTypes": null, + "hexValue": "31", + "id": 1531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1295:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1285:11:7" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1309:3:7", + "subExpression": { + "argumentTypes": null, + "id": 1536, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1530, + "src": "1309:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1538, + "nodeType": "ExpressionStatement", + "src": "1309:3:7" + }, + "nodeType": "ForStatement", + "src": "1280:88:7" + } + ] + }, + "documentation": null, + "id": 1550, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "name": "_registryAddr", + "nodeType": "VariableDeclaration", + "scope": 1550, + "src": "854:21:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "854:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "853:23:7" + }, + "returnParameters": { + "id": 1485, + "nodeType": "ParameterList", + "parameters": [], + "src": "884:0:7" + }, + "scope": 1702, + "src": "842:532:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1671, + "nodeType": "Block", + "src": "1573:913:7", + "statements": [ + { + "assignments": [ + 1558 + ], + "declarations": [ + { + "constant": false, + "id": 1558, + "name": "currentIndex", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "1583:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1583:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1560, + "initialValue": { + "argumentTypes": null, + "id": 1559, + "name": "nextLeafIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "1606:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1583:36:7" + }, + { + "assignments": [ + 1562 + ], + "declarations": [ + { + "constant": false, + "id": 1562, + "name": "depth", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "1630:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1630:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1567, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1564, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1654:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1565, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 1474, + "src": "1654:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1646:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1646:20:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1630:36:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1569, + "name": "currentIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1697:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "32", + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1720:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + } + ], + "id": 1570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1712:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1712:10:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "id": 1573, + "name": "depth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1562, + "src": "1724:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1712:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1697:32:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e6372656d656e74616c4d65726b6c65547265653a20747265652069732066756c6c", + "id": 1576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1743:37:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55910c61e27c2e402ef0e5413c0cbc8b1f4b3d34bb5862a86b869065e417ea9f", + "typeString": "literal_string \"IncrementalMerkleTree: tree is full\"" + }, + "value": "IncrementalMerkleTree: tree is full" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_55910c61e27c2e402ef0e5413c0cbc8b1f4b3d34bb5862a86b869065e417ea9f", + "typeString": "literal_string \"IncrementalMerkleTree: tree is full\"" + } + ], + "id": 1568, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1676:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1676:114:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1578, + "nodeType": "ExpressionStatement", + "src": "1676:114:7" + }, + { + "assignments": [ + 1580 + ], + "declarations": [ + { + "constant": false, + "id": 1580, + "name": "currentLevelHash", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "1800:24:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1579, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1800:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1582, + "initialValue": { + "argumentTypes": null, + "id": 1581, + "name": "_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1552, + "src": "1827:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1800:32:7" + }, + { + "assignments": [ + 1584 + ], + "declarations": [ + { + "constant": false, + "id": 1584, + "name": "left", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "1842:12:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1583, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1842:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1585, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1842:12:7" + }, + { + "assignments": [ + 1587 + ], + "declarations": [ + { + "constant": false, + "id": 1587, + "name": "right", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "1864:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1586, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1864:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1588, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1864:13:7" + }, + { + "body": { + "id": 1650, + "nodeType": "Block", + "src": "1927:423:7", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1600, + "name": "currentIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1945:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1960:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1945:16:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1965:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1945:21:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1636, + "nodeType": "Block", + "src": "2137:104:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1625, + "name": "left", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "2155:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1626, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "2162:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1627, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "filledSubtrees", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "2162:19:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1629, + "indexExpression": { + "argumentTypes": null, + "id": 1628, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "2182:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2162:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2155:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1631, + "nodeType": "ExpressionStatement", + "src": "2155:29:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1632, + "name": "right", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "2202:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1633, + "name": "currentLevelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "2210:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2202:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1635, + "nodeType": "ExpressionStatement", + "src": "2202:24:7" + } + ] + }, + "id": 1637, + "nodeType": "IfStatement", + "src": "1941:300:7", + "trueBody": { + "id": 1624, + "nodeType": "Block", + "src": "1968:163:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1605, + "name": "left", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "1986:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1606, + "name": "currentLevelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "1993:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1986:23:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1608, + "nodeType": "ExpressionStatement", + "src": "1986:23:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1609, + "name": "right", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "2027:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1612, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "2055:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "argumentTypes": null, + "id": 1610, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "2035:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2052, + "src": "2035:19:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (uint256) view external returns (bytes32)" + } + }, + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2035:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2027:30:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1615, + "nodeType": "ExpressionStatement", + "src": "2027:30:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1616, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "2075:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1619, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "filledSubtrees", + "nodeType": "MemberAccess", + "referencedDeclaration": 1477, + "src": "2075:19:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1620, + "indexExpression": { + "argumentTypes": null, + "id": 1618, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "2095:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2075:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1621, + "name": "currentLevelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "2100:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2075:41:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1623, + "nodeType": "ExpressionStatement", + "src": "2075:41:7" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 1644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1638, + "name": "currentLevelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "2254:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1641, + "name": "left", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1584, + "src": "2295:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1642, + "name": "right", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "2301:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1639, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1468, + "src": "2273:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 1640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getParent", + "nodeType": "MemberAccess", + "referencedDeclaration": 2497, + "src": "2273:21:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure external returns (bytes32)" + } + }, + "id": 1643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2273:34:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2254:53:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1645, + "nodeType": "ExpressionStatement", + "src": "2254:53:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1646, + "name": "currentIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "2321:12:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 1647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2338:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2321:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1649, + "nodeType": "ExpressionStatement", + "src": "2321:18:7" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1593, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "1905:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1594, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1909:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 1474, + "src": "1909:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1905:15:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1651, + "initializationExpression": { + "assignments": [ + 1590 + ], + "declarations": [ + { + "constant": false, + "id": 1590, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1651, + "src": "1892:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1589, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1892:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1592, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1902:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1892:11:7" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1922:3:7", + "subExpression": { + "argumentTypes": null, + "id": 1597, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1590, + "src": "1922:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1599, + "nodeType": "ExpressionStatement", + "src": "1922:3:7" + }, + "nodeType": "ForStatement", + "src": "1887:463:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1652, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "2359:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 1472, + "src": "2359:9:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1655, + "name": "currentLevelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1580, + "src": "2371:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2359:28:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1657, + "nodeType": "ExpressionStatement", + "src": "2359:28:7" + }, + { + "assignments": [ + 1659 + ], + "declarations": [ + { + "constant": false, + "id": 1659, + "name": "n", + "nodeType": "VariableDeclaration", + "scope": 1671, + "src": "2397:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1658, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2397:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1660, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2397:9:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1661, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "2416:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1662, + "name": "nextLeafIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "2420:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2416:17:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1664, + "nodeType": "ExpressionStatement", + "src": "2416:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1665, + "name": "nextLeafIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "2443:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 1666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2460:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2443:18:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1668, + "nodeType": "ExpressionStatement", + "src": "2443:18:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1669, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1659, + "src": "2478:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1556, + "id": 1670, + "nodeType": "Return", + "src": "2471:8:7" + } + ] + }, + "documentation": "@notice Append leaf will append a leaf to the end of the tree\n@return The sibling nodes along the way.", + "id": 1672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "appendLeaf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1552, + "name": "_leaf", + "nodeType": "VariableDeclaration", + "scope": 1672, + "src": "1533:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1551, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1533:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1532:15:7" + }, + "returnParameters": { + "id": 1556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1555, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1672, + "src": "1564:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1564:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1563:9:7" + }, + "scope": 1702, + "src": "1513:973:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1691, + "nodeType": "Block", + "src": "2735:65:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1679, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "2745:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 1472, + "src": "2745:9:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1682, + "name": "_root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1674, + "src": "2757:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2745:17:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1684, + "nodeType": "ExpressionStatement", + "src": "2745:17:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1685, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "2772:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1687, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 1474, + "src": "2772:11:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1688, + "name": "_height", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1676, + "src": "2786:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2772:21:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1690, + "nodeType": "ExpressionStatement", + "src": "2772:21:7" + } + ] + }, + "documentation": "@notice Set the tree root and height of the stored tree\n@param _root The merkle root of the tree\n@param _height The height of the tree", + "id": 1692, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setMerkleRootAndHeight", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1674, + "name": "_root", + "nodeType": "VariableDeclaration", + "scope": 1692, + "src": "2696:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1673, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2696:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1676, + "name": "_height", + "nodeType": "VariableDeclaration", + "scope": 1692, + "src": "2711:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2711:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2695:32:7" + }, + "returnParameters": { + "id": 1678, + "nodeType": "ParameterList", + "parameters": [], + "src": "2735:0:7" + }, + "scope": 1702, + "src": "2664:136:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1700, + "nodeType": "Block", + "src": "2861:33:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1697, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "2878:4:7", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$1478_storage", + "typeString": "struct IncrementalTree.MerkleTree storage ref" + } + }, + "id": 1698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 1472, + "src": "2878:9:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1696, + "id": 1699, + "nodeType": "Return", + "src": "2871:16:7" + } + ] + }, + "documentation": null, + "id": 1701, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTreeRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1693, + "nodeType": "ParameterList", + "parameters": [], + "src": "2826:2:7" + }, + "returnParameters": { + "id": 1696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1695, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1701, + "src": "2852:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1694, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2852:7:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2851:9:7" + }, + "scope": 1702, + "src": "2806:88:7", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 1703, + "src": "209:2687:7" + } + ], + "src": "0:2897:7" + }, + "id": 7 + }, + "contracts/Logger.sol": { + "ast": { + "absolutePath": "contracts/Logger.sol", + "exportedSymbols": { + "Logger": [ + 1926 + ] + }, + "id": 1927, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1704, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:8" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1926, + "linearizedBaseContracts": [ + 1926 + ], + "name": "Logger", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": "*******************\nRollup Contract ********************", + "id": 1714, + "name": "NewBatch", + "nodeType": "EventDefinition", + "parameters": { + "id": 1713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1706, + "indexed": false, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 1714, + "src": "152:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "152:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1708, + "indexed": false, + "name": "txroot", + "nodeType": "VariableDeclaration", + "scope": 1714, + "src": "179:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1707, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "179:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1710, + "indexed": false, + "name": "updatedRoot", + "nodeType": "VariableDeclaration", + "scope": 1714, + "src": "203:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1709, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "203:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1712, + "indexed": false, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 1714, + "src": "232:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1711, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "232:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "142:109:8" + }, + "src": "128:124:8" + }, + { + "body": { + "id": 1732, + "nodeType": "Block", + "src": "395:69:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1726, + "name": "committer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "419:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1727, + "name": "txroot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1718, + "src": "430:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1728, + "name": "updatedRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1720, + "src": "438:11:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1729, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1722, + "src": "451:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1725, + "name": "NewBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "410:8:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes32,uint256)" + } + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "410:47:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1731, + "nodeType": "EmitStatement", + "src": "405:52:8" + } + ] + }, + "documentation": null, + "id": 1733, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logNewBatch", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1716, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 1733, + "src": "288:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "288:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1718, + "name": "txroot", + "nodeType": "VariableDeclaration", + "scope": 1733, + "src": "315:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1717, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "315:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1720, + "name": "updatedRoot", + "nodeType": "VariableDeclaration", + "scope": 1733, + "src": "339:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1719, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "339:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1722, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 1733, + "src": "368:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "368:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:109:8" + }, + "returnParameters": { + "id": 1724, + "nodeType": "ParameterList", + "parameters": [], + "src": "395:0:8" + }, + "scope": 1926, + "src": "258:206:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1741, + "name": "StakeWithdraw", + "nodeType": "EventDefinition", + "parameters": { + "id": 1740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1735, + "indexed": false, + "name": "committed", + "nodeType": "VariableDeclaration", + "scope": 1741, + "src": "490:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1737, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1741, + "src": "509:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1739, + "indexed": false, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 1741, + "src": "525:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "525:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "489:53:8" + }, + "src": "470:73:8" + }, + { + "body": { + "id": 1756, + "nodeType": "Block", + "src": "665:64:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1751, + "name": "committed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1743, + "src": "694:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1752, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1745, + "src": "705:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1753, + "name": "batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1747, + "src": "713:8:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1750, + "name": "StakeWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1741, + "src": "680:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 1754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:42:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1755, + "nodeType": "EmitStatement", + "src": "675:47:8" + } + ] + }, + "documentation": null, + "id": 1757, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logStakeWithdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1743, + "name": "committed", + "nodeType": "VariableDeclaration", + "scope": 1757, + "src": "584:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "584:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1745, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1757, + "src": "611:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1744, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "611:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1747, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 1757, + "src": "635:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1746, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "635:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "574:83:8" + }, + "returnParameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [], + "src": "665:0:8" + }, + "scope": 1926, + "src": "549:180:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1769, + "name": "BatchRollback", + "nodeType": "EventDefinition", + "parameters": { + "id": 1768, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1759, + "indexed": false, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 1769, + "src": "764:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "764:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1761, + "indexed": false, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 1769, + "src": "790:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "790:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1763, + "indexed": false, + "name": "stateRoot", + "nodeType": "VariableDeclaration", + "scope": 1769, + "src": "817:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1762, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "817:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1765, + "indexed": false, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 1769, + "src": "844:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1764, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "844:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1767, + "indexed": false, + "name": "stakeSlashed", + "nodeType": "VariableDeclaration", + "scope": 1769, + "src": "868:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1766, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "868:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "754:140:8" + }, + "src": "735:160:8" + }, + { + "body": { + "id": 1790, + "nodeType": "Block", + "src": "1074:159:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1783, + "name": "batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1771, + "src": "1116:8:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1784, + "name": "committer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "1138:9:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1785, + "name": "stateRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "1161:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1786, + "name": "txRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1777, + "src": "1184:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1787, + "name": "stakeSlashed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "1204:12:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1782, + "name": "BatchRollback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "1089:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (uint256,address,bytes32,bytes32,uint256)" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1089:137:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1789, + "nodeType": "EmitStatement", + "src": "1084:142:8" + } + ] + }, + "documentation": null, + "id": 1791, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logBatchRollback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1780, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1771, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 1791, + "src": "936:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1770, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "936:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1773, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 1791, + "src": "962:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "962:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1775, + "name": "stateRoot", + "nodeType": "VariableDeclaration", + "scope": 1791, + "src": "989:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1774, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "989:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1777, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 1791, + "src": "1016:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1776, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1016:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1779, + "name": "stakeSlashed", + "nodeType": "VariableDeclaration", + "scope": 1791, + "src": "1040:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1040:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "926:140:8" + }, + "returnParameters": { + "id": 1781, + "nodeType": "ParameterList", + "parameters": [], + "src": "1074:0:8" + }, + "scope": 1926, + "src": "901:332:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1795, + "name": "RollbackFinalisation", + "nodeType": "EventDefinition", + "parameters": { + "id": 1794, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1793, + "indexed": false, + "name": "totalBatchesSlashed", + "nodeType": "VariableDeclaration", + "scope": 1795, + "src": "1266:27:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1792, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1266:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1265:29:8" + }, + "src": "1239:56:8" + }, + { + "body": { + "id": 1804, + "nodeType": "Block", + "src": "1370:63:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1801, + "name": "totalBatchesSlashed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "1406:19:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1800, + "name": "RollbackFinalisation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1795, + "src": "1385:20:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1385:41:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1803, + "nodeType": "EmitStatement", + "src": "1380:46:8" + } + ] + }, + "documentation": null, + "id": 1805, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logRollbackFinalisation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1797, + "name": "totalBatchesSlashed", + "nodeType": "VariableDeclaration", + "scope": 1805, + "src": "1334:27:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1334:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1333:29:8" + }, + "returnParameters": { + "id": 1799, + "nodeType": "ParameterList", + "parameters": [], + "src": "1370:0:8" + }, + "scope": 1926, + "src": "1301:132:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1811, + "name": "RegisteredToken", + "nodeType": "EventDefinition", + "parameters": { + "id": 1810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1807, + "indexed": false, + "name": "tokenType", + "nodeType": "VariableDeclaration", + "scope": 1811, + "src": "1461:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1461:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1809, + "indexed": false, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 1811, + "src": "1480:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1480:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1460:42:8" + }, + "src": "1439:64:8" + }, + { + "body": { + "id": 1823, + "nodeType": "Block", + "src": "1598:63:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1819, + "name": "tokenType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1813, + "src": "1629:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1820, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "1640:13:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1818, + "name": "RegisteredToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1811, + "src": "1613:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1613:41:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1822, + "nodeType": "EmitStatement", + "src": "1608:46:8" + } + ] + }, + "documentation": null, + "id": 1824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logRegisteredToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1816, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1813, + "name": "tokenType", + "nodeType": "VariableDeclaration", + "scope": 1824, + "src": "1537:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1537:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1815, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 1824, + "src": "1556:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1536:42:8" + }, + "returnParameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [], + "src": "1598:0:8" + }, + "scope": 1926, + "src": "1509:152:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1828, + "name": "RegistrationRequest", + "nodeType": "EventDefinition", + "parameters": { + "id": 1827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1826, + "indexed": false, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 1828, + "src": "1693:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1693:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1692:23:8" + }, + "src": "1667:49:8" + }, + { + "body": { + "id": 1837, + "nodeType": "Block", + "src": "1784:56:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1834, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1830, + "src": "1819:13:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1833, + "name": "RegistrationRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1828, + "src": "1799:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1799:34:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1836, + "nodeType": "EmitStatement", + "src": "1794:39:8" + } + ] + }, + "documentation": null, + "id": 1838, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logRegistrationRequest", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1831, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1830, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 1838, + "src": "1754:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1754:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1753:23:8" + }, + "returnParameters": { + "id": 1832, + "nodeType": "ParameterList", + "parameters": [], + "src": "1784:0:8" + }, + "scope": 1926, + "src": "1722:118:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1852, + "name": "DepositQueued", + "nodeType": "EventDefinition", + "parameters": { + "id": 1851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1840, + "indexed": false, + "name": "AccountID", + "nodeType": "VariableDeclaration", + "scope": 1852, + "src": "1875:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1839, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1875:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1842, + "indexed": false, + "name": "destination", + "nodeType": "VariableDeclaration", + "scope": 1852, + "src": "1902:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1841, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1902:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1844, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1852, + "src": "1931:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1843, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1931:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1846, + "indexed": false, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1852, + "src": "1955:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1845, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1955:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1848, + "indexed": false, + "name": "accountHash", + "nodeType": "VariableDeclaration", + "scope": 1852, + "src": "1978:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1847, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1978:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1850, + "indexed": false, + "name": "pubkey", + "nodeType": "VariableDeclaration", + "scope": 1852, + "src": "2007:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1849, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2007:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1865:160:8" + }, + "src": "1846:180:8" + }, + { + "body": { + "id": 1876, + "nodeType": "Block", + "src": "2232:177:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1868, + "name": "accountID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "2274:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1869, + "name": "destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "2297:11:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1870, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1858, + "src": "2322:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1871, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1860, + "src": "2342:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1872, + "name": "accountHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1862, + "src": "2361:11:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1873, + "name": "pubkey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1864, + "src": "2386:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1867, + "name": "DepositQueued", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1852, + "src": "2247:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,address,uint256,uint256,bytes32,bytes memory)" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2247:155:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1875, + "nodeType": "EmitStatement", + "src": "2242:160:8" + } + ] + }, + "documentation": null, + "id": 1877, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logDepositQueued", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1865, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1854, + "name": "accountID", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "2067:17:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2067:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1856, + "name": "destination", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "2094:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1855, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2094:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1858, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "2123:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2123:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1860, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "2147:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2147:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1862, + "name": "accountHash", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "2170:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1861, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2170:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1864, + "name": "pubkey", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "2199:19:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1863, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2199:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2057:167:8" + }, + "returnParameters": { + "id": 1866, + "nodeType": "ParameterList", + "parameters": [], + "src": "2232:0:8" + }, + "scope": 1926, + "src": "2032:377:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1885, + "name": "DepositLeafMerged", + "nodeType": "EventDefinition", + "parameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1879, + "indexed": false, + "name": "left", + "nodeType": "VariableDeclaration", + "scope": 1885, + "src": "2439:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1878, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2439:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1881, + "indexed": false, + "name": "right", + "nodeType": "VariableDeclaration", + "scope": 1885, + "src": "2453:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1880, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2453:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1883, + "indexed": false, + "name": "newRoot", + "nodeType": "VariableDeclaration", + "scope": 1885, + "src": "2468:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1882, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2468:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2438:46:8" + }, + "src": "2415:70:8" + }, + { + "body": { + "id": 1900, + "nodeType": "Block", + "src": "2586:61:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1895, + "name": "left", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1887, + "src": "2619:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1896, + "name": "right", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1889, + "src": "2625:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1897, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1891, + "src": "2632:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1894, + "name": "DepositLeafMerged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1885, + "src": "2601:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2601:39:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1899, + "nodeType": "EmitStatement", + "src": "2596:44:8" + } + ] + }, + "documentation": null, + "id": 1901, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logDepositLeafMerged", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1887, + "name": "left", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "2521:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1886, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2521:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1889, + "name": "right", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "2535:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1888, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2535:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1891, + "name": "newRoot", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "2550:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2550:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2520:46:8" + }, + "returnParameters": { + "id": 1893, + "nodeType": "ParameterList", + "parameters": [], + "src": "2586:0:8" + }, + "scope": 1926, + "src": "2491:156:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1909, + "name": "DepositsFinalised", + "nodeType": "EventDefinition", + "parameters": { + "id": 1908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1903, + "indexed": false, + "name": "depositSubTreeRoot", + "nodeType": "VariableDeclaration", + "scope": 1909, + "src": "2686:26:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2686:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1905, + "indexed": false, + "name": "pathToSubTree", + "nodeType": "VariableDeclaration", + "scope": 1909, + "src": "2722:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1904, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2722:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1907, + "indexed": false, + "name": "newBalanceRoot", + "nodeType": "VariableDeclaration", + "scope": 1909, + "src": "2753:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1906, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2753:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2676:105:8" + }, + "src": "2653:129:8" + }, + { + "body": { + "id": 1924, + "nodeType": "Block", + "src": "2929:136:8", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1919, + "name": "depositSubTreeRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1911, + "src": "2975:18:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1920, + "name": "pathToSubTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "3007:13:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1921, + "name": "newBalanceRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1915, + "src": "3034:14:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1918, + "name": "DepositsFinalised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1909, + "src": "2944:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,uint256,bytes32)" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2944:114:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1923, + "nodeType": "EmitStatement", + "src": "2939:119:8" + } + ] + }, + "documentation": null, + "id": 1925, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logDepositFinalised", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1911, + "name": "depositSubTreeRoot", + "nodeType": "VariableDeclaration", + "scope": 1925, + "src": "2826:26:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1910, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2826:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1913, + "name": "pathToSubTree", + "nodeType": "VariableDeclaration", + "scope": 1925, + "src": "2862:21:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2862:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1915, + "name": "newBalanceRoot", + "nodeType": "VariableDeclaration", + "scope": 1925, + "src": "2893:22:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1914, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2893:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2816:105:8" + }, + "returnParameters": { + "id": 1917, + "nodeType": "ParameterList", + "parameters": [], + "src": "2929:0:8" + }, + "scope": 1926, + "src": "2788:277:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1927, + "src": "27:3040:8" + } + ], + "src": "0:3068:8" + }, + "id": 8 + }, + "contracts/MerkleTreeUtils.sol": { + "ast": { + "absolutePath": "contracts/MerkleTreeUtils.sol", + "exportedSymbols": { + "MerkleTreeUtils": [ + 2588 + ] + }, + "id": 2589, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1928, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:9" + }, + { + "id": 1929, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:9" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 1931, + "nodeType": "ImportDirective", + "scope": 2589, + "sourceUnit": 4634, + "src": "59:53:9", + "symbolAliases": [ + { + "foreign": 1930, + "local": null + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2588, + "linearizedBaseContracts": [ + 2588 + ], + "name": "MerkleTreeUtils", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1934, + "name": "defaultHashes", + "nodeType": "VariableDeclaration", + "scope": 2588, + "src": "231:30:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 1932, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "231:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1933, + "length": null, + "nodeType": "ArrayTypeName", + "src": "231:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1936, + "name": "MAX_DEPTH", + "nodeType": "VariableDeclaration", + "scope": 2588, + "src": "267:24:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1935, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "267:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1939, + "name": "ZERO_BYTES32", + "nodeType": "VariableDeclaration", + "scope": 2588, + "src": "297:96:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1937, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "297:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "327:66:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "visibility": "public" + }, + { + "body": { + "id": 1960, + "nodeType": "Block", + "src": "544:186:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1942, + "name": "MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1936, + "src": "554:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1943, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "566:12:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 1944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_DEPTH", + "nodeType": "MemberAccess", + "referencedDeclaration": 4542, + "src": "566:22:9", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint8_$", + "typeString": "function () pure returns (uint8)" + } + }, + "id": 1945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "566:24:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "554:36:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1947, + "nodeType": "ExpressionStatement", + "src": "554:36:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1948, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "600:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1952, + "name": "MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1936, + "src": "630:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "616:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 1949, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "620:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1950, + "length": null, + "nodeType": "ArrayTypeName", + "src": "620:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "616:24:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + }, + "src": "600:40:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1955, + "nodeType": "ExpressionStatement", + "src": "600:40:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1957, + "name": "MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1936, + "src": "713:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1956, + "name": "setDefaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2010, + "src": "696:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "696:27:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1959, + "nodeType": "ExpressionStatement", + "src": "696:27:9" + } + ] + }, + "documentation": "@notice Initialize a new MerkleTree contract, computing the default hashes for the merkle tree (MT)", + "id": 1961, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1940, + "nodeType": "ParameterList", + "parameters": [], + "src": "534:2:9" + }, + "returnParameters": { + "id": 1941, + "nodeType": "ParameterList", + "parameters": [], + "src": "544:0:9" + }, + "scope": 2588, + "src": "523:207:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2009, + "nodeType": "Block", + "src": "855:285:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1966, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "906:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1968, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "920:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "906:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "946:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 1970, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "935:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "935:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "935:13:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1969, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "925:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "925:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "906:43:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1976, + "nodeType": "ExpressionStatement", + "src": "906:43:9" + }, + { + "body": { + "id": 2007, + "nodeType": "Block", + "src": "995:139:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1987, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "1009:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1989, + "indexExpression": { + "argumentTypes": null, + "id": 1988, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1978, + "src": "1023:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1009:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1993, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "1066:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 1997, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1994, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1978, + "src": "1080:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1084:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1080:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1066:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1998, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "1088:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2002, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1999, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1978, + "src": "1102:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1106:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1102:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1088:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 1991, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "1055:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1055:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1055:54:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1990, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "1028:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1028:95:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1009:114:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2006, + "nodeType": "ExpressionStatement", + "src": "1009:114:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1981, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1978, + "src": "979:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 1982, + "name": "depth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "983:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "979:9:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2008, + "initializationExpression": { + "assignments": [ + 1978 + ], + "declarations": [ + { + "constant": false, + "id": 1978, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2008, + "src": "964:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "964:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1980, + "initialValue": { + "argumentTypes": null, + "hexValue": "31", + "id": 1979, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "976:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "964:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "990:3:9", + "subExpression": { + "argumentTypes": null, + "id": 1984, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1978, + "src": "990:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1986, + "nodeType": "ExpressionStatement", + "src": "990:3:9" + }, + "nodeType": "ForStatement", + "src": "959:175:9" + } + ] + }, + "documentation": "@notice Set default hashes", + "id": 2010, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setDefaultHashes", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1963, + "name": "depth", + "nodeType": "VariableDeclaration", + "scope": 2010, + "src": "831:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1962, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "831:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "830:15:9" + }, + "returnParameters": { + "id": 1965, + "nodeType": "ParameterList", + "parameters": [], + "src": "855:0:9" + }, + "scope": 2588, + "src": "805:335:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 2031, + "nodeType": "Block", + "src": "1199:205:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2018, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "1287:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2022, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2019, + "name": "MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1936, + "src": "1301:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1313:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1301:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1287:28:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2023, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "1337:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2027, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2024, + "name": "MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1936, + "src": "1351:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1363:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1351:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1337:28:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2016, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "1255:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1255:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1255:128:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2015, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "1228:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1228:169:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2014, + "id": 2030, + "nodeType": "Return", + "src": "1209:188:9" + } + ] + }, + "documentation": null, + "id": 2032, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getZeroRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2011, + "nodeType": "ParameterList", + "parameters": [], + "src": "1166:2:9" + }, + "returnParameters": { + "id": 2014, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2013, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2032, + "src": "1190:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2012, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1190:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1189:9:9" + }, + "scope": 2588, + "src": "1146:258:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2039, + "nodeType": "Block", + "src": "1467:33:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2037, + "name": "MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1936, + "src": "1484:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2036, + "id": 2038, + "nodeType": "Return", + "src": "1477:16:9" + } + ] + }, + "documentation": null, + "id": 2040, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMaxTreeDepth", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2033, + "nodeType": "ParameterList", + "parameters": [], + "src": "1434:2:9" + }, + "returnParameters": { + "id": 2036, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2035, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2040, + "src": "1458:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2034, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1458:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1457:9:9" + }, + "scope": 2588, + "src": "1410:90:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2051, + "nodeType": "Block", + "src": "1568:44:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2047, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "1585:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2049, + "indexExpression": { + "argumentTypes": null, + "id": 2048, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2042, + "src": "1599:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1585:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2046, + "id": 2050, + "nodeType": "Return", + "src": "1578:27:9" + } + ] + }, + "documentation": null, + "id": 2052, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2042, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 2052, + "src": "1523:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2041, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1523:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1522:15:9" + }, + "returnParameters": { + "id": 2046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2045, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2052, + "src": "1559:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2044, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1559:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1558:9:9" + }, + "scope": 2588, + "src": "1506:106:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2063, + "nodeType": "Block", + "src": "1687:39:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2060, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2054, + "src": "1714:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2059, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "1704:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1704:15:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2058, + "id": 2062, + "nodeType": "Return", + "src": "1697:22:9" + } + ] + }, + "documentation": null, + "id": 2064, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keecakHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2054, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2064, + "src": "1638:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2053, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1638:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1637:19:9" + }, + "returnParameters": { + "id": 2058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2057, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2064, + "src": "1678:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2056, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1678:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1677:9:9" + }, + "scope": 2588, + "src": "1618:108:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2220, + "nodeType": "Block", + "src": "2069:1373:9", + "statements": [ + { + "assignments": [ + 2073 + ], + "declarations": [ + { + "constant": false, + "id": 2073, + "name": "nextLevelLength", + "nodeType": "VariableDeclaration", + "scope": 2220, + "src": "2079:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2079:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2076, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2074, + "name": "_dataBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "2105:11:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 2075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2105:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2079:44:9" + }, + { + "assignments": [ + 2078 + ], + "declarations": [ + { + "constant": false, + "id": 2078, + "name": "currentLevel", + "nodeType": "VariableDeclaration", + "scope": 2220, + "src": "2133:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2133:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2080, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2156:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2133:24:9" + }, + { + "assignments": [ + 2084 + ], + "declarations": [ + { + "constant": false, + "id": 2084, + "name": "nodes", + "nodeType": "VariableDeclaration", + "scope": 2220, + "src": "2167:22:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2082, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2167:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2083, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2167:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2092, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2088, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "2206:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2224:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2206:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2087, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2192:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 2085, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2196:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2086, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2196:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 2091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2192:34:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2167:59:9" + }, + { + "body": { + "id": 2114, + "nodeType": "Block", + "src": "2367:61:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2104, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2381:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2106, + "indexExpression": { + "argumentTypes": null, + "id": 2105, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "2387:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2381:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2108, + "name": "_dataBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "2402:11:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 2110, + "indexExpression": { + "argumentTypes": null, + "id": 2109, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "2414:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2402:14:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata", + "typeString": "bytes calldata" + } + ], + "id": 2107, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "2392:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2381:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2113, + "nodeType": "ExpressionStatement", + "src": "2381:36:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2097, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "2338:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2098, + "name": "_dataBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "2342:11:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2342:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2338:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2115, + "initializationExpression": { + "assignments": [ + 2094 + ], + "declarations": [ + { + "constant": false, + "id": 2094, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2115, + "src": "2323:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2323:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2096, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2335:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2323:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2362:3:9", + "subExpression": { + "argumentTypes": null, + "id": 2101, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2094, + "src": "2362:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2103, + "nodeType": "ExpressionStatement", + "src": "2362:3:9" + }, + "nodeType": "ForStatement", + "src": "2318:110:9" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2116, + "name": "_dataBlocks", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "2441:11:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 2117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2441:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2463:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2441:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2125, + "nodeType": "IfStatement", + "src": "2437:69:9", + "trueBody": { + "id": 2124, + "nodeType": "Block", + "src": "2466:40:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2120, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2487:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2122, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2493:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2487:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2071, + "id": 2123, + "nodeType": "Return", + "src": "2480:15:9" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2126, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "2585:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2603:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2585:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2608:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2585:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2144, + "nodeType": "IfStatement", + "src": "2581:141:9", + "trueBody": { + "id": 2143, + "nodeType": "Block", + "src": "2611:111:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2131, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2625:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2133, + "indexExpression": { + "argumentTypes": null, + "id": 2132, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "2631:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2625:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2134, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "2650:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2136, + "indexExpression": { + "argumentTypes": null, + "id": 2135, + "name": "currentLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2078, + "src": "2664:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2650:27:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2625:52:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2138, + "nodeType": "ExpressionStatement", + "src": "2625:52:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2139, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "2691:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2710:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2691:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2142, + "nodeType": "ExpressionStatement", + "src": "2691:20:9" + } + ] + } + }, + { + "body": { + "id": 2214, + "nodeType": "Block", + "src": "2795:545:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2148, + "name": "currentLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2078, + "src": "2809:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2825:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2809:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2151, + "nodeType": "ExpressionStatement", + "src": "2809:17:9" + }, + { + "body": { + "id": 2183, + "nodeType": "Block", + "src": "2946:85:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2164, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2964:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2166, + "indexExpression": { + "argumentTypes": null, + "id": 2165, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2153, + "src": "2970:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2964:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2168, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2985:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2172, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2169, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2153, + "src": "2991:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2995:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2991:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2985:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2173, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2999:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2179, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2174, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2153, + "src": "3005:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3009:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3005:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3013:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3005:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2999:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2167, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "2975:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2975:41:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2964:52:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2182, + "nodeType": "ExpressionStatement", + "src": "2964:52:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2156, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2153, + "src": "2916:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2157, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "2920:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2938:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2920:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2916:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2184, + "initializationExpression": { + "assignments": [ + 2153 + ], + "declarations": [ + { + "constant": false, + "id": 2153, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2184, + "src": "2901:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2901:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2155, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2913:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2901:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2941:3:9", + "subExpression": { + "argumentTypes": null, + "id": 2161, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2153, + "src": "2941:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2163, + "nodeType": "ExpressionStatement", + "src": "2941:3:9" + }, + "nodeType": "ForStatement", + "src": "2896:135:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2185, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "3044:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2186, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "3062:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3080:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3062:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3044:37:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2190, + "nodeType": "ExpressionStatement", + "src": "3044:37:9" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2191, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "3157:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3175:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3157:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3180:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3157:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2196, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "3185:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3204:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3185:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3157:48:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2213, + "nodeType": "IfStatement", + "src": "3153:177:9", + "trueBody": { + "id": 2212, + "nodeType": "Block", + "src": "3207:123:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2200, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "3225:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2202, + "indexExpression": { + "argumentTypes": null, + "id": 2201, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "3231:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3225:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2203, + "name": "defaultHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1934, + "src": "3250:13:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 2205, + "indexExpression": { + "argumentTypes": null, + "id": 2204, + "name": "currentLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2078, + "src": "3264:12:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3250:27:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3225:52:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2207, + "nodeType": "ExpressionStatement", + "src": "3225:52:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2208, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "3295:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3314:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3295:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2211, + "nodeType": "ExpressionStatement", + "src": "3295:20:9" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2145, + "name": "nextLevelLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2073, + "src": "2774:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2792:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2774:19:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2215, + "nodeType": "WhileStatement", + "src": "2767:573:9" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2216, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "3427:5:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2218, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3433:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3427:8:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2071, + "id": 2219, + "nodeType": "Return", + "src": "3420:15:9" + } + ] + }, + "documentation": "@notice Get the merkle root computed from some set of data blocks.\n@param _dataBlocks The data being used to generate the tree.\n@return the merkle tree root\nNOTE: This is a stateless operation", + "id": 2221, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMerkleRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2067, + "name": "_dataBlocks", + "nodeType": "VariableDeclaration", + "scope": 2221, + "src": "1992:28:9", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2065, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1992:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2066, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1992:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1991:30:9" + }, + "returnParameters": { + "id": 2071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2070, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2221, + "src": "2056:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2069, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2056:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2055:9:9" + }, + "scope": 2588, + "src": "1969:1473:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2287, + "nodeType": "Block", + "src": "3948:602:9", + "statements": [ + { + "assignments": [ + 2234 + ], + "declarations": [ + { + "constant": false, + "id": 2234, + "name": "computedNode", + "nodeType": "VariableDeclaration", + "scope": 2287, + "src": "3997:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2233, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3997:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2238, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2236, + "name": "_dataBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2223, + "src": "4030:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2235, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "4020:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4020:21:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3997:44:9" + }, + { + "body": { + "id": 2283, + "nodeType": "Block", + "src": "4099:340:9", + "statements": [ + { + "assignments": [ + 2251 + ], + "declarations": [ + { + "constant": false, + "id": 2251, + "name": "sibling", + "nodeType": "VariableDeclaration", + "scope": 2283, + "src": "4113:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4113:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2255, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2252, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2228, + "src": "4131:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2254, + "indexExpression": { + "argumentTypes": null, + "id": 2253, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2240, + "src": "4141:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4131:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4113:30:9" + }, + { + "assignments": [ + 2257 + ], + "declarations": [ + { + "constant": false, + "id": 2257, + "name": "isComputedRightSibling", + "nodeType": "VariableDeclaration", + "scope": 2283, + "src": "4157:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2256, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4157:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2262, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2259, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2225, + "src": "4207:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2260, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2240, + "src": "4214:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2258, + "name": "getNthBitFromRight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2516, + "src": "4188:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256,uint256) pure returns (uint8)" + } + }, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4188:28:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4157:59:9" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2263, + "name": "isComputedRightSibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2257, + "src": "4234:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4260:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4234:27:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2281, + "nodeType": "Block", + "src": "4349:80:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2274, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2234, + "src": "4367:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2276, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2251, + "src": "4392:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2277, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2234, + "src": "4401:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2275, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "4382:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4382:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4367:47:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2280, + "nodeType": "ExpressionStatement", + "src": "4367:47:9" + } + ] + }, + "id": 2282, + "nodeType": "IfStatement", + "src": "4230:199:9", + "trueBody": { + "id": 2273, + "nodeType": "Block", + "src": "4263:80:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2266, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2234, + "src": "4281:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2268, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2234, + "src": "4306:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2269, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2251, + "src": "4320:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2267, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "4296:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4296:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4281:47:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2272, + "nodeType": "ExpressionStatement", + "src": "4281:47:9" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2243, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2240, + "src": "4072:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2244, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2228, + "src": "4076:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4076:16:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4072:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2284, + "initializationExpression": { + "assignments": [ + 2240 + ], + "declarations": [ + { + "constant": false, + "id": 2240, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2284, + "src": "4057:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4057:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2242, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4069:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4057:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4094:3:9", + "subExpression": { + "argumentTypes": null, + "id": 2247, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2240, + "src": "4094:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2249, + "nodeType": "ExpressionStatement", + "src": "4094:3:9" + }, + "nodeType": "ForStatement", + "src": "4052:387:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2285, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2234, + "src": "4531:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2232, + "id": 2286, + "nodeType": "Return", + "src": "4524:19:9" + } + ] + }, + "documentation": "@notice Calculate root from an inclusion proof.\n@param _dataBlock The data block we're calculating root for.\n@param _path The path from the leaf to the root.\n@param _siblings The sibling nodes along the way.\n@return The next level of the tree\nNOTE: This is a stateless operation", + "id": 2288, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeInclusionProofRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2223, + "name": "_dataBlock", + "nodeType": "VariableDeclaration", + "scope": 2288, + "src": "3829:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2222, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3829:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2225, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 2288, + "src": "3862:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3862:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2228, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 2288, + "src": "3885:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2226, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3885:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2227, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3885:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3819:98:9" + }, + "returnParameters": { + "id": 2232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2231, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2288, + "src": "3939:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2230, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3939:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3938:9:9" + }, + "scope": 2588, + "src": "3785:765:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2352, + "nodeType": "Block", + "src": "5049:585:9", + "statements": [ + { + "assignments": [ + 2301 + ], + "declarations": [ + { + "constant": false, + "id": 2301, + "name": "computedNode", + "nodeType": "VariableDeclaration", + "scope": 2352, + "src": "5098:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2300, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5098:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2303, + "initialValue": { + "argumentTypes": null, + "id": 2302, + "name": "_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2290, + "src": "5121:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5098:28:9" + }, + { + "body": { + "id": 2348, + "nodeType": "Block", + "src": "5183:340:9", + "statements": [ + { + "assignments": [ + 2316 + ], + "declarations": [ + { + "constant": false, + "id": 2316, + "name": "sibling", + "nodeType": "VariableDeclaration", + "scope": 2348, + "src": "5197:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2315, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5197:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2320, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2317, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2295, + "src": "5215:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2319, + "indexExpression": { + "argumentTypes": null, + "id": 2318, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "5225:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5215:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5197:30:9" + }, + { + "assignments": [ + 2322 + ], + "declarations": [ + { + "constant": false, + "id": 2322, + "name": "isComputedRightSibling", + "nodeType": "VariableDeclaration", + "scope": 2348, + "src": "5241:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2321, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5241:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2327, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2324, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2292, + "src": "5291:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2325, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "5298:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2323, + "name": "getNthBitFromRight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2516, + "src": "5272:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256,uint256) pure returns (uint8)" + } + }, + "id": 2326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5272:28:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5241:59:9" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2328, + "name": "isComputedRightSibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "5318:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5344:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5318:27:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2346, + "nodeType": "Block", + "src": "5433:80:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2339, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "5451:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2341, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "5476:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2342, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "5485:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2340, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "5466:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5466:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5451:47:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2345, + "nodeType": "ExpressionStatement", + "src": "5451:47:9" + } + ] + }, + "id": 2347, + "nodeType": "IfStatement", + "src": "5314:199:9", + "trueBody": { + "id": 2338, + "nodeType": "Block", + "src": "5347:80:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2331, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "5365:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2333, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "5390:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2334, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2316, + "src": "5404:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2332, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "5380:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5380:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5365:47:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2337, + "nodeType": "ExpressionStatement", + "src": "5365:47:9" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2308, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "5156:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2309, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2295, + "src": "5160:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5160:16:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5156:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2349, + "initializationExpression": { + "assignments": [ + 2305 + ], + "declarations": [ + { + "constant": false, + "id": 2305, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2349, + "src": "5141:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2304, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5141:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2307, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5153:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5141:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5178:3:9", + "subExpression": { + "argumentTypes": null, + "id": 2312, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "5178:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2314, + "nodeType": "ExpressionStatement", + "src": "5178:3:9" + }, + "nodeType": "ForStatement", + "src": "5136:387:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2350, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2301, + "src": "5615:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2299, + "id": 2351, + "nodeType": "Return", + "src": "5608:19:9" + } + ] + }, + "documentation": "@notice Calculate root from an inclusion proof.\n@param _leaf The data block we're calculating root for.\n@param _path The path from the leaf to the root.\n@param _siblings The sibling nodes along the way.\n@return The next level of the tree\nNOTE: This is a stateless operation", + "id": 2353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeInclusionProofRootWithLeaf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2296, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2290, + "name": "_leaf", + "nodeType": "VariableDeclaration", + "scope": 2353, + "src": "4940:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2289, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4940:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2292, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 2353, + "src": "4963:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4963:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2295, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 2353, + "src": "4986:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2293, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4986:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2294, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4986:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4930:88:9" + }, + "returnParameters": { + "id": 2299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2298, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2353, + "src": "5040:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2297, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5040:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5039:9:9" + }, + "scope": 2588, + "src": "4888:746:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2379, + "nodeType": "Block", + "src": "6204:222:9", + "statements": [ + { + "assignments": [ + 2368 + ], + "declarations": [ + { + "constant": false, + "id": 2368, + "name": "calculatedRoot", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "6253:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2367, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6253:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2374, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2370, + "name": "_dataBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2357, + "src": "6317:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2371, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2359, + "src": "6341:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2372, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "6360:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 2369, + "name": "computeInclusionProofRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2288, + "src": "6278:25:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory,uint256,bytes32[] memory) pure returns (bytes32)" + } + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6278:101:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6253:126:9" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2375, + "name": "calculatedRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2368, + "src": "6396:14:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2376, + "name": "_root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2355, + "src": "6414:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6396:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2366, + "id": 2378, + "nodeType": "Return", + "src": "6389:30:9" + } + ] + }, + "documentation": "@notice Verify an inclusion proof.\n@param _root The root of the tree we are verifying inclusion for.\n@param _dataBlock The data block we're verifying inclusion for.\n@param _path The path from the leaf to the root.\n@param _siblings The sibling nodes along the way.\n@return The next level of the tree\nNOTE: This is a stateless operation", + "id": 2380, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verify", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2355, + "name": "_root", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "6065:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2354, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6065:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2357, + "name": "_dataBlock", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "6088:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2356, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6088:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2359, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "6121:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6121:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2362, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "6144:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2360, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6144:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2361, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6144:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6055:121:9" + }, + "returnParameters": { + "id": 2366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2365, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "6198:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2364, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6198:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6197:6:9" + }, + "scope": 2588, + "src": "6040:386:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2406, + "nodeType": "Block", + "src": "6991:186:9", + "statements": [ + { + "assignments": [ + 2395 + ], + "declarations": [ + { + "constant": false, + "id": 2395, + "name": "calculatedRoot", + "nodeType": "VariableDeclaration", + "scope": 2406, + "src": "7001:22:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2394, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7001:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2401, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2397, + "name": "_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2384, + "src": "7073:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2398, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2386, + "src": "7092:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2399, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2389, + "src": "7111:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 2396, + "name": "computeInclusionProofRootWithLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2353, + "src": "7026:33:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256,bytes32[] memory) view returns (bytes32)" + } + }, + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7026:104:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7001:129:9" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2402, + "name": "calculatedRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "7147:14:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2403, + "name": "_root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2382, + "src": "7165:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7147:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2393, + "id": 2405, + "nodeType": "Return", + "src": "7140:30:9" + } + ] + }, + "documentation": "@notice Verify an inclusion proof.\n@param _root The root of the tree we are verifying inclusion for.\n@param _leaf The data block we're verifying inclusion for.\n@param _path The path from the leaf to the root.\n@param _siblings The sibling nodes along the way.\n@return The next level of the tree\nNOTE: This is a stateless operation", + "id": 2407, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyLeaf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2382, + "name": "_root", + "nodeType": "VariableDeclaration", + "scope": 2407, + "src": "6862:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6862:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2384, + "name": "_leaf", + "nodeType": "VariableDeclaration", + "scope": 2407, + "src": "6885:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2383, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6885:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2386, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 2407, + "src": "6908:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6908:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2389, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 2407, + "src": "6931:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2387, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6931:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2388, + "length": null, + "nodeType": "ArrayTypeName", + "src": "6931:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6852:111:9" + }, + "returnParameters": { + "id": 2393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2392, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2407, + "src": "6985:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2391, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6985:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6984:6:9" + }, + "scope": 2588, + "src": "6833:344:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2478, + "nodeType": "Block", + "src": "7657:521:9", + "statements": [ + { + "assignments": [ + 2420 + ], + "declarations": [ + { + "constant": false, + "id": 2420, + "name": "computedNode", + "nodeType": "VariableDeclaration", + "scope": 2478, + "src": "7667:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2419, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7667:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2422, + "initialValue": { + "argumentTypes": null, + "id": 2421, + "name": "_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2409, + "src": "7690:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7667:28:9" + }, + { + "body": { + "id": 2474, + "nodeType": "Block", + "src": "7752:391:9", + "statements": [ + { + "assignments": [ + 2435 + ], + "declarations": [ + { + "constant": false, + "id": 2435, + "name": "parent", + "nodeType": "VariableDeclaration", + "scope": 2474, + "src": "7766:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7766:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2436, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "7766:14:9" + }, + { + "assignments": [ + 2438 + ], + "declarations": [ + { + "constant": false, + "id": 2438, + "name": "sibling", + "nodeType": "VariableDeclaration", + "scope": 2474, + "src": "7794:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7794:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2442, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2439, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "7812:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2441, + "indexExpression": { + "argumentTypes": null, + "id": 2440, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "7822:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7812:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7794:30:9" + }, + { + "assignments": [ + 2444 + ], + "declarations": [ + { + "constant": false, + "id": 2444, + "name": "isComputedRightSibling", + "nodeType": "VariableDeclaration", + "scope": 2474, + "src": "7838:28:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2443, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "7838:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2449, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2446, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2411, + "src": "7888:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2447, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "7895:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2445, + "name": "getNthBitFromRight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2516, + "src": "7869:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256,uint256) pure returns (uint8)" + } + }, + "id": 2448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7869:28:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7838:59:9" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2450, + "name": "isComputedRightSibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "7915:22:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7941:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7915:27:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2468, + "nodeType": "Block", + "src": "8024:74:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2461, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "8042:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2463, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "8061:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2464, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2420, + "src": "8070:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2462, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "8051:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8051:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8042:41:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2467, + "nodeType": "ExpressionStatement", + "src": "8042:41:9" + } + ] + }, + "id": 2469, + "nodeType": "IfStatement", + "src": "7911:187:9", + "trueBody": { + "id": 2460, + "nodeType": "Block", + "src": "7944:74:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2453, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "7962:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2455, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2420, + "src": "7981:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2456, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "7995:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2454, + "name": "getParent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2497, + "src": "7971:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure returns (bytes32)" + } + }, + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7971:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7962:41:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2459, + "nodeType": "ExpressionStatement", + "src": "7962:41:9" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2470, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2420, + "src": "8111:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2471, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2435, + "src": "8126:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8111:21:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2473, + "nodeType": "ExpressionStatement", + "src": "8111:21:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2427, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "7725:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2428, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "7729:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7729:16:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7725:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2475, + "initializationExpression": { + "assignments": [ + 2424 + ], + "declarations": [ + { + "constant": false, + "id": 2424, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2475, + "src": "7710:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7710:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2426, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7722:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "7710:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "7747:3:9", + "subExpression": { + "argumentTypes": null, + "id": 2431, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "7747:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2433, + "nodeType": "ExpressionStatement", + "src": "7747:3:9" + }, + "nodeType": "ForStatement", + "src": "7705:438:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2476, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2420, + "src": "8159:12:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2418, + "id": 2477, + "nodeType": "Return", + "src": "8152:19:9" + } + ] + }, + "documentation": "@notice Update a leaf using siblings and root\n This is a stateless operation\n@param _leaf The leaf we're updating.\n@param _path The path from the leaf to the root / the index of the leaf.\n@param _siblings The sibling nodes along the way.\n@return Updated root", + "id": 2479, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateLeafWithSiblings", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2409, + "name": "_leaf", + "nodeType": "VariableDeclaration", + "scope": 2479, + "src": "7548:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2408, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7548:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2411, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 2479, + "src": "7571:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7571:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2414, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 2479, + "src": "7594:26:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 2412, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7594:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 2413, + "length": null, + "nodeType": "ArrayTypeName", + "src": "7594:9:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7538:88:9" + }, + "returnParameters": { + "id": 2418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2417, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2479, + "src": "7648:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2416, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7648:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7647:9:9" + }, + "scope": 2588, + "src": "7507:671:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2496, + "nodeType": "Block", + "src": "8475:60:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2491, + "name": "_left", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2481, + "src": "8513:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2492, + "name": "_right", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2483, + "src": "8520:6:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2489, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "8502:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8502:10:9", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8502:25:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2488, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "8492:9:9", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8492:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2487, + "id": 2495, + "nodeType": "Return", + "src": "8485:43:9" + } + ] + }, + "documentation": "@notice Get the parent of two children nodes in the tree\n@param _left The left child\n@param _right The right child\n@return The parent node", + "id": 2497, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getParent", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2481, + "name": "_left", + "nodeType": "VariableDeclaration", + "scope": 2497, + "src": "8386:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8386:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2483, + "name": "_right", + "nodeType": "VariableDeclaration", + "scope": 2497, + "src": "8401:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2482, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8401:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8385:31:9" + }, + "returnParameters": { + "id": 2487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2486, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2497, + "src": "8462:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2485, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8462:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8461:9:9" + }, + "scope": 2588, + "src": "8367:168:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2515, + "nodeType": "Block", + "src": "8986:54:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2507, + "name": "_intVal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2499, + "src": "9010:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "argumentTypes": null, + "id": 2508, + "name": "_index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2501, + "src": "9021:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9010:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2510, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9009:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9031:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9009:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9003:5:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": "uint8" + }, + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9003:30:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 2505, + "id": 2514, + "nodeType": "Return", + "src": "8996:37:9" + } + ] + }, + "documentation": "@notice get the n'th bit in a uint.\n For instance, if exampleUint=binary(11), getNth(exampleUint, 0) == 1, getNth(2, 1) == 1\n@param _intVal The uint we are extracting a bit out of\n@param _index The index of the bit we want to extract\n@return The bit (1 or 0) in a uint8", + "id": 2516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getNthBitFromRight", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2499, + "name": "_intVal", + "nodeType": "VariableDeclaration", + "scope": 2516, + "src": "8897:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8897:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2501, + "name": "_index", + "nodeType": "VariableDeclaration", + "scope": 2516, + "src": "8914:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8914:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8896:33:9" + }, + "returnParameters": { + "id": 2505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2504, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2516, + "src": "8975:5:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2503, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "8975:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8974:7:9" + }, + "scope": 2588, + "src": "8869:171:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2527, + "nodeType": "Block", + "src": "9420:124:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2523, + "name": "_parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2518, + "src": "9449:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "argumentTypes": null, + "hexValue": "307830313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131", + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9471:66:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_482467038488817480931545770869532949388624936106835683497739933366304706833_by_1", + "typeString": "int_const 4824...(67 digits omitted)...6833" + }, + "value": "0x0111111111111111111111111111111111111111111111111111111111111111" + }, + "src": "9449:88:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2522, + "id": 2526, + "nodeType": "Return", + "src": "9430:107:9" + } + ] + }, + "documentation": "@notice Get the right sibling key. Note that these keys overwrite the first bit of the hash\nto signify if it is on the right side of the parent or on the left\n@param _parent The parent node\n@return the key for the left sibling (0 as the first bit)", + "id": 2528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLeftSiblingKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2518, + "name": "_parent", + "nodeType": "VariableDeclaration", + "scope": 2528, + "src": "9373:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2517, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9373:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9372:17:9" + }, + "returnParameters": { + "id": 2522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2521, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2528, + "src": "9411:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2520, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9411:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9410:9:9" + }, + "scope": 2588, + "src": "9346:198:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2539, + "nodeType": "Block", + "src": "9926:124:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2535, + "name": "_parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2530, + "src": "9955:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "|", + "rightExpression": { + "argumentTypes": null, + "hexValue": "307831303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9977:66:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_7237005577332262213973186563042994240829374041602535252466099000494570602496_by_1", + "typeString": "int_const 7237...(68 digits omitted)...2496" + }, + "value": "0x1000000000000000000000000000000000000000000000000000000000000000" + }, + "src": "9955:88:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2534, + "id": 2538, + "nodeType": "Return", + "src": "9936:107:9" + } + ] + }, + "documentation": "@notice Get the right sibling key. Note that these keys overwrite the first bit of the hash\nto signify if it is on the right side of the parent or on the left\n@param _parent The parent node\n@return the key for the right sibling (1 as the first bit)", + "id": 2540, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRightSiblingKey", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2530, + "name": "_parent", + "nodeType": "VariableDeclaration", + "scope": 2540, + "src": "9879:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2529, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9879:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9878:17:9" + }, + "returnParameters": { + "id": 2534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2533, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2540, + "src": "9917:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2532, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9917:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9916:9:9" + }, + "scope": 2588, + "src": "9851:199:9", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2586, + "nodeType": "Block", + "src": "10165:247:9", + "statements": [ + { + "assignments": [ + 2550 + ], + "declarations": [ + { + "constant": false, + "id": 2550, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 2586, + "src": "10175:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10175:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2552, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10192:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10175:18:9" + }, + { + "body": { + "id": 2582, + "nodeType": "Block", + "src": "10240:143:9", + "statements": [ + { + "assignments": [ + 2564 + ], + "declarations": [ + { + "constant": false, + "id": 2564, + "name": "temp", + "nodeType": "VariableDeclaration", + "scope": 2582, + "src": "10254:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2563, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10254:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2569, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2566, + "name": "path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "10286:4:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2567, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "10292:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2565, + "name": "getNthBitFromRight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2516, + "src": "10267:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256,uint256) pure returns (uint8)" + } + }, + "id": 2568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10267:27:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10254:40:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2570, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2550, + "src": "10339:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2571, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2550, + "src": "10348:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2572, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2564, + "src": "10358:4:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10366:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "id": 2574, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "10369:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10366:4:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2576, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10365:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10358:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2578, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10357:15:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10348:24:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10339:33:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2581, + "nodeType": "ExpressionStatement", + "src": "10339:33:9" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2557, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "10223:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 2558, + "name": "height", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2544, + "src": "10227:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10223:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2583, + "initializationExpression": { + "assignments": [ + 2554 + ], + "declarations": [ + { + "constant": false, + "id": 2554, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2583, + "src": "10208:9:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10208:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2556, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10220:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10208:13:9" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10235:3:9", + "subExpression": { + "argumentTypes": null, + "id": 2560, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2554, + "src": "10235:1:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2562, + "nodeType": "ExpressionStatement", + "src": "10235:3:9" + }, + "nodeType": "ForStatement", + "src": "10203:180:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 2584, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2550, + "src": "10399:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2548, + "id": 2585, + "nodeType": "Return", + "src": "10392:13:9" + } + ] + }, + "documentation": null, + "id": 2587, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "pathToIndex", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2542, + "name": "path", + "nodeType": "VariableDeclaration", + "scope": 2587, + "src": "10077:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2541, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10077:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2544, + "name": "height", + "nodeType": "VariableDeclaration", + "scope": 2587, + "src": "10091:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10091:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10076:30:9" + }, + "returnParameters": { + "id": 2548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2547, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2587, + "src": "10152:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10152:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10151:9:9" + }, + "scope": 2588, + "src": "10056:356:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2589, + "src": "115:10299:9" + } + ], + "src": "0:10415:9" + }, + "id": 9 + }, + "contracts/Migrations.sol": { + "ast": { + "absolutePath": "contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 2645 + ] + }, + "id": 2646, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2590, + "literals": [ + "solidity", + ">=", + "0.4", + ".21", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:32:10" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2645, + "linearizedBaseContracts": [ + 2645 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 2592, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 2645, + "src": "61:20:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2591, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "61:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2594, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 2645, + "src": "87:39:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "87:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2602, + "nodeType": "Block", + "src": "154:35:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2597, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "164:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2598, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "172:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "172:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "164:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2601, + "nodeType": "ExpressionStatement", + "src": "164:18:10" + } + ] + }, + "documentation": null, + "id": 2603, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2595, + "nodeType": "ParameterList", + "parameters": [], + "src": "144:2:10" + }, + "returnParameters": { + "id": 2596, + "nodeType": "ParameterList", + "parameters": [], + "src": "154:0:10" + }, + "scope": 2645, + "src": "133:56:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2611, + "nodeType": "Block", + "src": "217:43:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2605, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "231:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "231:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2607, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "245:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "231:19:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2610, + "nodeType": "IfStatement", + "src": "227:26:10", + "trueBody": { + "id": 2609, + "nodeType": "PlaceholderStatement", + "src": "252:1:10" + } + } + ] + }, + "documentation": null, + "id": 2612, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2604, + "nodeType": "ParameterList", + "parameters": [], + "src": "214:2:10" + }, + "src": "195:65:10", + "visibility": "internal" + }, + { + "body": { + "id": 2623, + "nodeType": "Block", + "src": "325:53:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2619, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2594, + "src": "335:24:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2620, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2614, + "src": "362:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "335:36:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2622, + "nodeType": "ExpressionStatement", + "src": "335:36:10" + } + ] + }, + "documentation": null, + "id": 2624, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2617, + "modifierName": { + "argumentTypes": null, + "id": 2616, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2612, + "src": "314:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "314:10:10" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2614, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 2624, + "src": "288:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "288:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "287:19:10" + }, + "returnParameters": { + "id": 2618, + "nodeType": "ParameterList", + "parameters": [], + "src": "325:0:10" + }, + "scope": 2645, + "src": "266:112:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2643, + "nodeType": "Block", + "src": "440:119:10", + "statements": [ + { + "assignments": [ + 2632 + ], + "declarations": [ + { + "constant": false, + "id": 2632, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 2643, + "src": "450:19:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$2645", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 2631, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2645, + "src": "450:10:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$2645", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2636, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2634, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2626, + "src": "483:11:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2633, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2645, + "src": "472:10:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$2645_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 2635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "472:23:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$2645", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "450:45:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2640, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2594, + "src": "527:24:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2637, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2632, + "src": "505:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$2645", + "typeString": "contract Migrations" + } + }, + "id": 2639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 2624, + "src": "505:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "505:47:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2642, + "nodeType": "ExpressionStatement", + "src": "505:47:10" + } + ] + }, + "documentation": null, + "id": 2644, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2629, + "modifierName": { + "argumentTypes": null, + "id": 2628, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2612, + "src": "429:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "429:10:10" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2626, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 2644, + "src": "401:19:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2625, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "401:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "400:21:10" + }, + "returnParameters": { + "id": 2630, + "nodeType": "ParameterList", + "parameters": [], + "src": "440:0:10" + }, + "scope": 2645, + "src": "384:175:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2646, + "src": "35:526:10" + } + ], + "src": "0:562:10" + }, + "id": 10 + }, + "contracts/NameRegistry.sol": { + "ast": { + "absolutePath": "contracts/NameRegistry.sol", + "exportedSymbols": { + "NameRegistry": [ + 2724 + ] + }, + "id": 2725, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2647, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:11" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2724, + "linearizedBaseContracts": [ + 2724 + ], + "name": "NameRegistry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "NameRegistry.ContractDetails", + "id": 2650, + "members": [ + { + "constant": false, + "id": 2649, + "name": "contractAddress", + "nodeType": "VariableDeclaration", + "scope": 2650, + "src": "127:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2648, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "127:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "ContractDetails", + "nodeType": "StructDefinition", + "scope": 2724, + "src": "55:102:11", + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 2656, + "name": "RegisteredNewContract", + "nodeType": "EventDefinition", + "parameters": { + "id": 2655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2652, + "indexed": false, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 2656, + "src": "190:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2651, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "190:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2654, + "indexed": false, + "name": "contractAddr", + "nodeType": "VariableDeclaration", + "scope": 2656, + "src": "204:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2653, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "204:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "189:36:11" + }, + "src": "162:64:11" + }, + { + "constant": false, + "id": 2660, + "name": "registry", + "nodeType": "VariableDeclaration", + "scope": 2724, + "src": "231:44:11", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ContractDetails_$2650_storage_$", + "typeString": "mapping(bytes32 => struct NameRegistry.ContractDetails)" + }, + "typeName": { + "id": 2659, + "keyType": { + "id": 2657, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "239:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "231:35:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ContractDetails_$2650_storage_$", + "typeString": "mapping(bytes32 => struct NameRegistry.ContractDetails)" + }, + "valueType": { + "contractScope": null, + "id": 2658, + "name": "ContractDetails", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2650, + "src": "250:15:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_storage_ptr", + "typeString": "struct NameRegistry.ContractDetails" + } + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 2700, + "nodeType": "Block", + "src": "356:395:11", + "statements": [ + { + "assignments": [ + 2670 + ], + "declarations": [ + { + "constant": false, + "id": 2670, + "name": "info", + "nodeType": "VariableDeclaration", + "scope": 2700, + "src": "366:27:11", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_memory_ptr", + "typeString": "struct NameRegistry.ContractDetails" + }, + "typeName": { + "contractScope": null, + "id": 2669, + "name": "ContractDetails", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2650, + "src": "366:15:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_storage_ptr", + "typeString": "struct NameRegistry.ContractDetails" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2674, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2671, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2660, + "src": "396:8:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ContractDetails_$2650_storage_$", + "typeString": "mapping(bytes32 => struct NameRegistry.ContractDetails storage ref)" + } + }, + "id": 2673, + "indexExpression": { + "argumentTypes": null, + "id": 2672, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "405:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "396:14:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_storage", + "typeString": "struct NameRegistry.ContractDetails storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "366:44:11" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2675, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "483:4:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_memory_ptr", + "typeString": "struct NameRegistry.ContractDetails memory" + } + }, + "id": 2676, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contractAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 2649, + "src": "483:20:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "515:1:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "507:7:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "507:10:11", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "483:34:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2698, + "nodeType": "Block", + "src": "670:75:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "729:5:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2668, + "id": 2697, + "nodeType": "Return", + "src": "722:12:11" + } + ] + }, + "id": 2699, + "nodeType": "IfStatement", + "src": "479:266:11", + "trueBody": { + "id": 2695, + "nodeType": "Block", + "src": "519:145:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2681, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "533:4:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_memory_ptr", + "typeString": "struct NameRegistry.ContractDetails memory" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "contractAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 2649, + "src": "533:20:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2684, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2664, + "src": "556:4:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "533:27:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2686, + "nodeType": "ExpressionStatement", + "src": "533:27:11" + }, + { + "expression": { + "argumentTypes": null, + "id": 2691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2687, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2660, + "src": "574:8:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ContractDetails_$2650_storage_$", + "typeString": "mapping(bytes32 => struct NameRegistry.ContractDetails storage ref)" + } + }, + "id": 2689, + "indexExpression": { + "argumentTypes": null, + "id": 2688, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2662, + "src": "583:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "574:14:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_storage", + "typeString": "struct NameRegistry.ContractDetails storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2690, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2670, + "src": "591:4:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_memory_ptr", + "typeString": "struct NameRegistry.ContractDetails memory" + } + }, + "src": "574:21:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_storage", + "typeString": "struct NameRegistry.ContractDetails storage ref" + } + }, + "id": 2692, + "nodeType": "ExpressionStatement", + "src": "574:21:11" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "649:4:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2668, + "id": 2694, + "nodeType": "Return", + "src": "642:11:11" + } + ] + } + } + ] + }, + "documentation": null, + "id": 2701, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerName", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2662, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 2701, + "src": "304:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2661, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "304:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2664, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 2701, + "src": "318:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2663, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "318:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "303:28:11" + }, + "returnParameters": { + "id": 2668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2667, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2701, + "src": "350:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "350:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "349:6:11" + }, + "scope": 2724, + "src": "282:469:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2714, + "nodeType": "Block", + "src": "831:56:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2708, + "name": "registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2660, + "src": "849:8:11", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ContractDetails_$2650_storage_$", + "typeString": "mapping(bytes32 => struct NameRegistry.ContractDetails storage ref)" + } + }, + "id": 2710, + "indexExpression": { + "argumentTypes": null, + "id": 2709, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2703, + "src": "858:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "849:14:11", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ContractDetails_$2650_storage", + "typeString": "struct NameRegistry.ContractDetails storage ref" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contractAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 2649, + "src": "849:30:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2712, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "848:32:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2707, + "id": 2713, + "nodeType": "Return", + "src": "841:39:11" + } + ] + }, + "documentation": null, + "id": 2715, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getContractDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2703, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 2715, + "src": "785:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2702, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "785:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "784:14:11" + }, + "returnParameters": { + "id": 2707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2706, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2715, + "src": "822:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "822:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "821:9:11" + }, + "scope": 2724, + "src": "757:130:11", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 2722, + "nodeType": "Block", + "src": "961:110:11", + "statements": [] + }, + "documentation": null, + "id": 2723, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateContractDetails", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2717, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 2723, + "src": "924:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2716, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "924:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2719, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 2723, + "src": "938:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "938:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "923:28:11" + }, + "returnParameters": { + "id": 2721, + "nodeType": "ParameterList", + "parameters": [], + "src": "961:0:11" + }, + "scope": 2724, + "src": "893:178:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 2725, + "src": "27:1046:11" + } + ], + "src": "0:1074:11" + }, + "id": 11 + }, + "contracts/POB.sol": { + "ast": { + "absolutePath": "contracts/POB.sol", + "exportedSymbols": { + "POB": [ + 2731 + ] + }, + "id": 2732, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2726, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:12" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2731, + "linearizedBaseContracts": [ + 2731 + ], + "name": "POB", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2729, + "nodeType": "Block", + "src": "138:2:12", + "statements": [] + }, + "documentation": null, + "id": 2730, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2727, + "nodeType": "ParameterList", + "parameters": [], + "src": "128:2:12" + }, + "returnParameters": { + "id": 2728, + "nodeType": "ParameterList", + "parameters": [], + "src": "138:0:12" + }, + "scope": 2731, + "src": "117:23:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2732, + "src": "98:44:12" + } + ], + "src": "0:143:12" + }, + "id": 12 + }, + "contracts/Rollup.sol": { + "ast": { + "absolutePath": "contracts/Rollup.sol", + "exportedSymbols": { + "Rollup": [ + 3686 + ] + }, + "id": 3687, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2733, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:13" + }, + { + "id": 2734, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:13" + }, + { + "absolutePath": "contracts/logger.sol", + "file": "./logger.sol", + "id": 2736, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 5059, + "src": "60:36:13", + "symbolAliases": [ + { + "foreign": 2735, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Tree.sol", + "file": "./Tree.sol", + "id": 2738, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4241, + "src": "97:46:13", + "symbolAliases": [ + { + "foreign": 2737, + "local": "MerkleTree" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/IncrementalTree.sol", + "file": "./IncrementalTree.sol", + "id": 2740, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 1703, + "src": "144:54:13", + "symbolAliases": [ + { + "foreign": 2739, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 2742, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4634, + "src": "199:53:13", + "symbolAliases": [ + { + "foreign": 2741, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/RollupUtils.sol", + "file": "./libs/RollupUtils.sol", + "id": 2744, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4761, + "src": "253:51:13", + "symbolAliases": [ + { + "foreign": 2743, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/Types.sol", + "file": "./libs/Types.sol", + "id": 2746, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4835, + "src": "305:39:13", + "symbolAliases": [ + { + "foreign": 2745, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "@openzeppelin/contracts/math/SafeMath.sol", + "id": 2748, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 214, + "src": "345:67:13", + "symbolAliases": [ + { + "foreign": 2747, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "solidity-bytes-utils/contracts/BytesLib.sol", + "file": "solidity-bytes-utils/contracts/BytesLib.sol", + "id": 2749, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 5383, + "src": "413:53:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/interfaces/IERC20.sol", + "file": "./interfaces/IERC20.sol", + "id": 2751, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4266, + "src": "467:47:13", + "symbolAliases": [ + { + "foreign": 2750, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/interfaces/ITokenRegistry.sol", + "file": "./interfaces/ITokenRegistry.sol", + "id": 2753, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4304, + "src": "515:63:13", + "symbolAliases": [ + { + "foreign": 2752, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/NameRegistry.sol", + "file": "./NameRegistry.sol", + "id": 2755, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 2725, + "src": "579:60:13", + "symbolAliases": [ + { + "foreign": 2754, + "local": "Registry" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/MerkleTreeUtils.sol", + "file": "./MerkleTreeUtils.sol", + "id": 2757, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 2589, + "src": "640:65:13", + "symbolAliases": [ + { + "foreign": 2756, + "local": "MTUtils" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/ECVerify.sol", + "file": "./libs/ECVerify.sol", + "id": 2759, + "nodeType": "ImportDirective", + "scope": 3687, + "sourceUnit": 4430, + "src": "706:45:13", + "symbolAliases": [ + { + "foreign": 2758, + "local": null + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3686, + "linearizedBaseContracts": [ + 3686 + ], + "name": "Rollup", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 2762, + "libraryName": { + "contractScope": null, + "id": 2760, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 213, + "src": "806:8:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$213", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "800:27:13", + "typeName": { + "id": 2761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "819:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 2765, + "libraryName": { + "contractScope": null, + "id": 2763, + "name": "BytesLib", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5382, + "src": "838:8:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BytesLib_$5382", + "typeString": "library BytesLib" + } + }, + "nodeType": "UsingForDirective", + "src": "832:25:13", + "typeName": { + "id": 2764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "851:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + { + "id": 2768, + "libraryName": { + "contractScope": null, + "id": 2766, + "name": "ECVerify", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4429, + "src": "868:8:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECVerify_$4429", + "typeString": "library ECVerify" + } + }, + "nodeType": "UsingForDirective", + "src": "862:27:13", + "typeName": { + "id": 2767, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "881:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "constant": false, + "id": 2770, + "name": "coordinator", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "981:19:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "981:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2772, + "name": "balancesTree", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1033:30:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + }, + "typeName": { + "contractScope": null, + "id": 2771, + "name": "MerkleTree", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4240, + "src": "1033:10:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2774, + "name": "accountsTree", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1069:35:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + }, + "typeName": { + "contractScope": null, + "id": 2773, + "name": "IncrementalTree", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1702, + "src": "1069:15:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2776, + "name": "logger", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1110:20:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + }, + "typeName": { + "contractScope": null, + "id": 2775, + "name": "Logger", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5058, + "src": "1110:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2778, + "name": "tokenRegistry", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1136:35:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + }, + "typeName": { + "contractScope": null, + "id": 2777, + "name": "ITokenRegistry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4303, + "src": "1136:14:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2780, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1177:27:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 2779, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4265, + "src": "1177:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2782, + "name": "nameRegistry", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1210:28:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + }, + "typeName": { + "contractScope": null, + "id": 2781, + "name": "Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2724, + "src": "1210:8:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2785, + "name": "batches", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1244:28:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 2783, + "name": "Types.Batch", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4780, + "src": "1244:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage_ptr", + "typeString": "struct Types.Batch" + } + }, + "id": 2784, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1244:13:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage_ptr", + "typeString": "struct Types.Batch[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2787, + "name": "merkleUtils", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1278:26:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + }, + "typeName": { + "contractScope": null, + "id": 2786, + "name": "MTUtils", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2588, + "src": "1278:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2789, + "name": "invalidBatchMarker", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1448:26:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1448:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 2799, + "nodeType": "Block", + "src": "1508:61:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2792, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "1525:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1525:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2794, + "name": "coordinator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2770, + "src": "1539:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1525:25:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2791, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5386, + "src": "1518:6:13", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1518:33:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2797, + "nodeType": "ExpressionStatement", + "src": "1518:33:13" + }, + { + "id": 2798, + "nodeType": "PlaceholderStatement", + "src": "1561:1:13" + } + ] + }, + "documentation": null, + "id": 2800, + "name": "onlyCoordinator", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2790, + "nodeType": "ParameterList", + "parameters": [], + "src": "1505:2:13" + }, + "src": "1481:88:13", + "visibility": "internal" + }, + { + "body": { + "id": 2809, + "nodeType": "Block", + "src": "1603:59:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2803, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "1620:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1642:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1620:23:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2802, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5386, + "src": "1613:6:13", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1613:31:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2807, + "nodeType": "ExpressionStatement", + "src": "1613:31:13" + }, + { + "id": 2808, + "nodeType": "PlaceholderStatement", + "src": "1654:1:13" + } + ] + }, + "documentation": null, + "id": 2810, + "name": "isNotRollingBack", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2801, + "nodeType": "ParameterList", + "parameters": [], + "src": "1600:2:13" + }, + "src": "1575:87:13", + "visibility": "internal" + }, + { + "body": { + "id": 2819, + "nodeType": "Block", + "src": "1693:58:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2813, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "1710:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1731:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1710:22:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2812, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5386, + "src": "1703:6:13", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1703:30:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2817, + "nodeType": "ExpressionStatement", + "src": "1703:30:13" + }, + { + "id": 2818, + "nodeType": "PlaceholderStatement", + "src": "1743:1:13" + } + ] + }, + "documentation": null, + "id": 2820, + "name": "isRollingBack", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2811, + "nodeType": "ParameterList", + "parameters": [], + "src": "1690:2:13" + }, + "src": "1668:83:13", + "visibility": "internal" + }, + { + "constant": false, + "id": 2832, + "name": "withdrawTxClaimed", + "nodeType": "VariableDeclaration", + "scope": 3686, + "src": "1857:75:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_bool_$dyn_storage_$dyn_storage", + "typeString": "bool[][]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 2821, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1857:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2822, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1857:6:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", + "typeString": "bool[]" + } + }, + "id": 2823, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1857:8:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_bool_$dyn_storage_$dyn_storage_ptr", + "typeString": "bool[][]" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2828, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "1899:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_TXS_PER_BATCH", + "nodeType": "MemberAccess", + "referencedDeclaration": 4599, + "src": "1899:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$", + "typeString": "function () pure returns (uint256)" + } + }, + "id": 2830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1899:32:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1886:12:13", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_bool_$dyn_memory_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bool[] memory[] memory)" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 2824, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1890:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2825, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1890:6:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", + "typeString": "bool[]" + } + }, + "id": 2826, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1890:8:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_bool_$dyn_storage_$dyn_storage_ptr", + "typeString": "bool[][]" + } + } + }, + "id": 2831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1886:46:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_bool_$dyn_memory_$dyn_memory", + "typeString": "bool[] memory[] memory" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 2909, + "nodeType": "Block", + "src": "2056:738:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2837, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2066:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2839, + "name": "_registryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2834, + "src": "2090:13:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2838, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "2081:8:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_NameRegistry_$2724_$", + "typeString": "type(contract NameRegistry)" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2081:23:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "src": "2066:38:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2842, + "nodeType": "ExpressionStatement", + "src": "2066:38:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2843, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2776, + "src": "2115:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2847, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "2163:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "LOGGER", + "nodeType": "MemberAccess", + "referencedDeclaration": 4501, + "src": "2163:19:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2163:21:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2845, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2131:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "2131:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 2850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2131:54:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2844, + "name": "Logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5058, + "src": "2124:6:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Logger_$5058_$", + "typeString": "type(contract Logger)" + } + }, + "id": 2851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2124:62:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "src": "2115:71:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "id": 2853, + "nodeType": "ExpressionStatement", + "src": "2115:71:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2854, + "name": "balancesTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2772, + "src": "2196:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2858, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "2267:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BALANCES_TREE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4491, + "src": "2267:26:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2267:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2856, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2235:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "2235:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 2861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2235:61:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2855, + "name": "MerkleTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4240, + "src": "2211:10:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Tree_$4240_$", + "typeString": "type(contract Tree)" + } + }, + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2211:95:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "src": "2196:110:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "id": 2864, + "nodeType": "ExpressionStatement", + "src": "2196:110:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2865, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "2316:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2869, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "2383:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MERKLE_UTILS", + "nodeType": "MemberAccess", + "referencedDeclaration": 4511, + "src": "2383:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2383:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2867, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2351:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "2351:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 2872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2351:60:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2866, + "name": "MTUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "2330:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleTreeUtils_$2588_$", + "typeString": "type(contract MerkleTreeUtils)" + } + }, + "id": 2873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2330:91:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "src": "2316:105:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 2875, + "nodeType": "ExpressionStatement", + "src": "2316:105:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2876, + "name": "accountsTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2774, + "src": "2431:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2880, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "2507:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ACCOUNTS_TREE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4481, + "src": "2507:26:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2507:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2878, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2475:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "2475:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 2883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2475:61:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2877, + "name": "IncrementalTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "2446:15:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IncrementalTree_$1702_$", + "typeString": "type(contract IncrementalTree)" + } + }, + "id": 2884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2446:100:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "src": "2431:115:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "id": 2886, + "nodeType": "ExpressionStatement", + "src": "2431:115:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2887, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2780, + "src": "2556:13:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2891, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "2624:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "TEST_TOKEN", + "nodeType": "MemberAccess", + "referencedDeclaration": 4461, + "src": "2624:23:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2624:25:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2889, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2592:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "2592:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 2894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2592:58:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2888, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "2572:6:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$4265_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2572:88:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "src": "2556:104:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4265", + "typeString": "contract IERC20" + } + }, + "id": 2897, + "nodeType": "ExpressionStatement", + "src": "2556:104:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 2907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2898, + "name": "tokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2778, + "src": "2671:13:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2902, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "2747:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "TOKEN_REGISTRY", + "nodeType": "MemberAccess", + "referencedDeclaration": 4531, + "src": "2747:27:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2747:29:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 2900, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2782, + "src": "2715:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 2901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "2715:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 2905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2715:62:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2899, + "name": "ITokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4303, + "src": "2687:14:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ITokenRegistry_$4303_$", + "typeString": "type(contract ITokenRegistry)" + } + }, + "id": 2906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2687:100:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "src": "2671:116:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "id": 2908, + "nodeType": "ExpressionStatement", + "src": "2671:116:13" + } + ] + }, + "documentation": "*******************\nConstructor ********************", + "id": 2910, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2834, + "name": "_registryAddr", + "nodeType": "VariableDeclaration", + "scope": 2910, + "src": "2026:21:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2026:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2025:23:13" + }, + "returnParameters": { + "id": 2836, + "nodeType": "ParameterList", + "parameters": [], + "src": "2056:0:13" + }, + "scope": 3686, + "src": "2014:780:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3000, + "nodeType": "Block", + "src": "3146:1116:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2923, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "3177:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3177:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2925, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "3190:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "STAKE_AMOUNT", + "nodeType": "MemberAccess", + "referencedDeclaration": 4610, + "src": "3190:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$", + "typeString": "function () pure returns (uint256)" + } + }, + "id": 2927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3190:27:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3177:40:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "506c656173652073656e64203332206574682077697468206261746368206173207374616b65", + "id": 2929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3231:40:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bdff9cc501cdca65ce3de48aa2da794e6565d59a2e64386a24066b3c08eccbaa", + "typeString": "literal_string \"Please send 32 eth with batch as stake\"" + }, + "value": "Please send 32 eth with batch as stake" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bdff9cc501cdca65ce3de48aa2da794e6565d59a2e64386a24066b3c08eccbaa", + "typeString": "literal_string \"Please send 32 eth with batch as stake\"" + } + ], + "id": 2922, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "3156:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3156:125:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2931, + "nodeType": "ExpressionStatement", + "src": "3156:125:13" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2932, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2913, + "src": "3295:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 2933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3295:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2934, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "3309:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_TXS_PER_BATCH", + "nodeType": "MemberAccess", + "referencedDeclaration": 4599, + "src": "3309:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$", + "typeString": "function () pure returns (uint256)" + } + }, + "id": 2936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3309:32:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3295:46:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2939, + "nodeType": "IfStatement", + "src": "3291:83:13", + "trueBody": { + "id": 2938, + "nodeType": "Block", + "src": "3343:31:13", + "statements": [] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2941, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2913, + "src": "3405:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 2942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3405:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2943, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "3420:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_TXS_PER_BATCH", + "nodeType": "MemberAccess", + "referencedDeclaration": 4599, + "src": "3420:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$", + "typeString": "function () pure returns (uint256)" + } + }, + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3420:32:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3405:47:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "426174636820636f6e7461696e73206d6f7265207472616e736174696f6e73207468616e20746865206c696d6974", + "id": 2947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3466:48:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1d725746ce6edb22316507aae2dd9ae67766737dd8af0c7bbed8bb4049aecfc8", + "typeString": "literal_string \"Batch contains more transations than the limit\"" + }, + "value": "Batch contains more transations than the limit" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1d725746ce6edb22316507aae2dd9ae67766737dd8af0c7bbed8bb4049aecfc8", + "typeString": "literal_string \"Batch contains more transations than the limit\"" + } + ], + "id": 2940, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "3384:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3384:140:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2949, + "nodeType": "ExpressionStatement", + "src": "3384:140:13" + }, + { + "assignments": [ + 2951 + ], + "declarations": [ + { + "constant": false, + "id": 2951, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 3000, + "src": "3534:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2950, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3534:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2956, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2954, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2913, + "src": "3577:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "argumentTypes": null, + "id": 2952, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "3551:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 2953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMerkleRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2221, + "src": "3551:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_bytes_memory_$dyn_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory[] memory) external returns (bytes32)" + } + }, + "id": 2955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3551:31:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3534:48:13" + }, + { + "assignments": [ + 2960 + ], + "declarations": [ + { + "constant": false, + "id": 2960, + "name": "newBatch", + "nodeType": "VariableDeclaration", + "scope": 3000, + "src": "3728:27:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch" + }, + "typeName": { + "contractScope": null, + "id": 2959, + "name": "Types.Batch", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4780, + "src": "3728:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage_ptr", + "typeString": "struct Types.Batch" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2980, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2963, + "name": "_updatedRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "3795:12:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2964, + "name": "accountsTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2774, + "src": "3834:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IncrementalTree_$1702", + "typeString": "contract IncrementalTree" + } + }, + "id": 2965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getTreeRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 1701, + "src": "3834:24:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 2966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3834:26:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2967, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "3885:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3885:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2969, + "name": "txRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2951, + "src": "3917:6:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2970, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "3953:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3953:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2972, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5387, + "src": "3989:5:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3989:12:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2974, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "4004:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 2975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "TIME_TO_FINALISE", + "nodeType": "MemberAccess", + "referencedDeclaration": 4577, + "src": "4004:29:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$", + "typeString": "function () pure returns (uint256)" + } + }, + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4004:31:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3989:46:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2978, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5399, + "src": "4060:3:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2961, + "name": "Types", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4834, + "src": "3758:5:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Types_$4834_$", + "typeString": "type(library Types)" + } + }, + "id": 2962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Batch", + "nodeType": "MemberAccess", + "referencedDeclaration": 4780, + "src": "3758:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Batch_$4780_storage_ptr_$", + "typeString": "type(struct Types.Batch storage pointer)" + } + }, + "id": 2979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "stateRoot", + "accountRoot", + "committer", + "txRoot", + "stakeCommitted", + "finalisesOn", + "timestamp" + ], + "nodeType": "FunctionCall", + "src": "3758:316:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory", + "typeString": "struct Types.Batch memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3728:346:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2984, + "name": "newBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2960, + "src": "4098:8:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2981, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "4085:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4085:12:13", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Batch_$4780_storage_$returns$_t_uint256_$", + "typeString": "function (struct Types.Batch storage ref) returns (uint256)" + } + }, + "id": 2985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4085:22:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2986, + "nodeType": "ExpressionStatement", + "src": "4085:22:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2990, + "name": "newBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2960, + "src": "4149:8:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 2991, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "committer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4771, + "src": "4149:18:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2992, + "name": "txRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2951, + "src": "4181:6:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2993, + "name": "_updatedRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2915, + "src": "4201:12:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2994, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "4227:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 2995, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4227:14:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 2996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4244:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4227:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2987, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2776, + "src": "4117:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logNewBatch", + "nodeType": "MemberAccess", + "referencedDeclaration": 4865, + "src": "4117:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes32,uint256) external" + } + }, + "id": 2998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4117:138:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2999, + "nodeType": "ExpressionStatement", + "src": "4117:138:13" + } + ] + }, + "documentation": "@notice Submits a new batch to batches\n@param _txs Compressed transactions .\n@param _updatedRoot New balance tree root after processing all the transactions", + "id": 3001, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 2918, + "modifierName": { + "argumentTypes": null, + "id": 2917, + "name": "onlyCoordinator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2800, + "src": "3101:15:13", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3101:15:13" + }, + { + "arguments": null, + "id": 2920, + "modifierName": { + "argumentTypes": null, + "id": 2919, + "name": "isNotRollingBack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2810, + "src": "3125:16:13", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3125:16:13" + } + ], + "name": "submitBatch", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2916, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2913, + "name": "_txs", + "nodeType": "VariableDeclaration", + "scope": 3001, + "src": "3015:21:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 2911, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3015:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 2912, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3015:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2915, + "name": "_updatedRoot", + "nodeType": "VariableDeclaration", + "scope": 3001, + "src": "3038:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2914, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3038:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3014:45:13" + }, + "returnParameters": { + "id": 2921, + "nodeType": "ParameterList", + "parameters": [], + "src": "3146:0:13" + }, + "scope": 3686, + "src": "2994:1268:13", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 3186, + "nodeType": "Block", + "src": "4781:2446:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3019, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "4901:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3021, + "indexExpression": { + "argumentTypes": null, + "id": 3020, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "4909:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4901:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3022, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "4901:33:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4938:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4901:38:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "426174636820646f65736e74206578697374206f7220697320736c617368656420616c7265616479", + "id": 3025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4953:42:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2868e1fdd3a283b25b268448e12a992138c341c471f84d32251294c4d67f97ea", + "typeString": "literal_string \"Batch doesnt exist or is slashed already\"" + }, + "value": "Batch doesnt exist or is slashed already" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2868e1fdd3a283b25b268448e12a992138c341c471f84d32251294c4d67f97ea", + "typeString": "literal_string \"Batch doesnt exist or is slashed already\"" + } + ], + "id": 3018, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "4880:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4880:125:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3027, + "nodeType": "ExpressionStatement", + "src": "4880:125:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3029, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5387, + "src": "5077:5:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5077:12:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3031, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "5092:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3033, + "indexExpression": { + "argumentTypes": null, + "id": 3032, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "5100:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5092:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3034, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "finalisesOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 4777, + "src": "5092:30:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5077:45:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "426174636820616c72656164792066696e616c69736564", + "id": 3036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5136:25:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b77b0c9ff830c7fff6773e3de9c0138acf2bf683721f69b1ecde254c14feb48", + "typeString": "literal_string \"Batch already finalised\"" + }, + "value": "Batch already finalised" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8b77b0c9ff830c7fff6773e3de9c0138acf2bf683721f69b1ecde254c14feb48", + "typeString": "literal_string \"Batch already finalised\"" + } + ], + "id": 3028, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "5056:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5056:115:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3038, + "nodeType": "ExpressionStatement", + "src": "5056:115:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3040, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "5203:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 3041, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "5215:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5203:30:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416c7265616479207375636365737366756c6c792064697370757465642e20526f6c6c206261636b20696e2070726f63657373", + "id": 3043, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5247:53:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d551224b0be2d983569ca4c2b695a153f3d75fa1601ac1b9276d262a29e2065b", + "typeString": "literal_string \"Already successfully disputed. Roll back in process\"" + }, + "value": "Already successfully disputed. Roll back in process" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d551224b0be2d983569ca4c2b695a153f3d75fa1601ac1b9276d262a29e2065b", + "typeString": "literal_string \"Already successfully disputed. Roll back in process\"" + } + ], + "id": 3039, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "5182:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5182:128:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3045, + "nodeType": "ExpressionStatement", + "src": "5182:128:13" + }, + { + "assignments": [ + 3049 + ], + "declarations": [ + { + "constant": false, + "id": 3049, + "name": "txs", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "5383:18:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 3047, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5383:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 3048, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5383:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3050, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "5383:18:13" + }, + { + "body": { + "id": 3073, + "nodeType": "Block", + "src": "5453:66:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3062, + "name": "txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3049, + "src": "5467:3:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 3064, + "indexExpression": { + "argumentTypes": null, + "id": 3063, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3052, + "src": "5471:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5467:6:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3067, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "5500:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$4791_memory_$dyn_memory_ptr", + "typeString": "struct Types.Transaction memory[] memory" + } + }, + "id": 3069, + "indexExpression": { + "argumentTypes": null, + "id": 3068, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3052, + "src": "5505:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5500:7:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory", + "typeString": "struct Types.Transaction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Transaction_$4791_memory", + "typeString": "struct Types.Transaction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3065, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "5476:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BytesFromTx", + "nodeType": "MemberAccess", + "referencedDeclaration": 4730, + "src": "5476:23:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Transaction_$4791_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.Transaction memory) pure returns (bytes memory)" + } + }, + "id": 3070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5476:32:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "5467:41:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + "id": 3072, + "nodeType": "ExpressionStatement", + "src": "5467:41:13" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3055, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3052, + "src": "5431:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3056, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "5435:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$4791_memory_$dyn_memory_ptr", + "typeString": "struct Types.Transaction memory[] memory" + } + }, + "id": 3057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5435:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5431:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3074, + "initializationExpression": { + "assignments": [ + 3052 + ], + "declarations": [ + { + "constant": false, + "id": 3052, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3074, + "src": "5416:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3051, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5416:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3054, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5428:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5416:13:13" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5448:3:13", + "subExpression": { + "argumentTypes": null, + "id": 3059, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3052, + "src": "5448:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3061, + "nodeType": "ExpressionStatement", + "src": "5448:3:13" + }, + "nodeType": "ForStatement", + "src": "5411:108:13" + }, + { + "assignments": [ + 3076 + ], + "declarations": [ + { + "constant": false, + "id": 3076, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "5528:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3075, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5528:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3081, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3079, + "name": "txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3049, + "src": "5571:3:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3077, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "5545:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMerkleRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2221, + "src": "5545:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_bytes_memory_$dyn_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory[] memory) external returns (bytes32)" + } + }, + "id": 3080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5545:30:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5528:47:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 3088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3083, + "name": "txRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3076, + "src": "5715:6:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3084, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "5725:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3086, + "indexExpression": { + "argumentTypes": null, + "id": 3085, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "5733:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5725:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "txRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4773, + "src": "5725:25:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5715:35:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420646973707574652c20747820726f6f7420646f65736e2774206d61746368", + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5764:40:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4efc7489bc1b586bc88faac6cb8f475a08e1acc1cb308e81de3df50f3b214bff", + "typeString": "literal_string \"Invalid dispute, tx root doesn't match\"" + }, + "value": "Invalid dispute, tx root doesn't match" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4efc7489bc1b586bc88faac6cb8f475a08e1acc1cb308e81de3df50f3b214bff", + "typeString": "literal_string \"Invalid dispute, tx root doesn't match\"" + } + ], + "id": 3082, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "5694:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5694:120:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3091, + "nodeType": "ExpressionStatement", + "src": "5694:120:13" + }, + { + "assignments": [ + 3093 + ], + "declarations": [ + { + "constant": false, + "id": 3093, + "name": "newBalanceRoot", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "5889:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3092, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5889:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3094, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "5889:22:13" + }, + { + "assignments": [ + 3096 + ], + "declarations": [ + { + "constant": false, + "id": 3096, + "name": "fromBalance", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "5921:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5921:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3097, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "5921:19:13" + }, + { + "assignments": [ + 3099 + ], + "declarations": [ + { + "constant": false, + "id": 3099, + "name": "toBalance", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "5950:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5950:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3100, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "5950:17:13" + }, + { + "assignments": [ + 3102 + ], + "declarations": [ + { + "constant": false, + "id": 3102, + "name": "isTxValid", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "5977:14:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3101, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5977:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3103, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "5977:14:13" + }, + { + "assignments": [ + 3105 + ], + "declarations": [ + { + "constant": false, + "id": 3105, + "name": "isDisputeValid", + "nodeType": "VariableDeclaration", + "scope": 3186, + "src": "6036:19:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3104, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6036:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3107, + "initialValue": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6058:5:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6036:27:13" + }, + { + "body": { + "id": 3157, + "nodeType": "Block", + "src": "6116:536:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3119, + "name": "newBalanceRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3093, + "src": "6245:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3120, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3096, + "src": "6261:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3121, + "name": "toBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3099, + "src": "6274:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3122, + "name": "isTxValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3102, + "src": "6285:9:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 3123, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "6244:51:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$_t_bool_$", + "typeString": "tuple(bytes32,uint256,uint256,bool)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3125, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "6325:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3127, + "indexExpression": { + "argumentTypes": null, + "id": 3126, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "6333:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6325:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3128, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4767, + "src": "6325:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3129, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "6371:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3131, + "indexExpression": { + "argumentTypes": null, + "id": 3130, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "6379:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6371:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3132, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4769, + "src": "6371:30:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3133, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "6419:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$4791_memory_$dyn_memory_ptr", + "typeString": "struct Types.Transaction memory[] memory" + } + }, + "id": 3135, + "indexExpression": { + "argumentTypes": null, + "id": 3134, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3109, + "src": "6424:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6419:7:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory", + "typeString": "struct Types.Transaction memory" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3136, + "name": "_pda_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3012, + "src": "6444:10:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PDAMerkleProof_$4833_memory_$dyn_memory_ptr", + "typeString": "struct Types.PDAMerkleProof memory[] memory" + } + }, + "id": 3138, + "indexExpression": { + "argumentTypes": null, + "id": 3137, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3109, + "src": "6455:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6444:13:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory", + "typeString": "struct Types.PDAMerkleProof memory" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3139, + "name": "_from_proofs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3009, + "src": "6475:12:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AccountMerkleProof_$4821_memory_$dyn_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory[] memory" + } + }, + "id": 3141, + "indexExpression": { + "argumentTypes": null, + "id": 3140, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3109, + "src": "6488:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6475:15:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3142, + "name": "_to_proofs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3015, + "src": "6508:10:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AccountMerkleProof_$4821_memory_$dyn_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory[] memory" + } + }, + "id": 3144, + "indexExpression": { + "argumentTypes": null, + "id": 3143, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3109, + "src": "6519:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6508:13:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory", + "typeString": "struct Types.AccountMerkleProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_Transaction_$4791_memory", + "typeString": "struct Types.Transaction memory" + }, + { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory", + "typeString": "struct Types.PDAMerkleProof memory" + }, + { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory", + "typeString": "struct Types.AccountMerkleProof memory" + }, + { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory", + "typeString": "struct Types.AccountMerkleProof memory" + } + ], + "id": 3124, + "name": "processTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3489, + "src": "6298:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_struct$_Transaction_$4791_memory_ptr_$_t_struct$_PDAMerkleProof_$4833_memory_ptr_$_t_struct$_AccountMerkleProof_$4821_memory_ptr_$_t_struct$_AccountMerkleProof_$4821_memory_ptr_$returns$_t_bytes32_$_t_uint256_$_t_uint256_$_t_bool_$", + "typeString": "function (bytes32,bytes32,struct Types.Transaction memory,struct Types.PDAMerkleProof memory,struct Types.AccountMerkleProof memory,struct Types.AccountMerkleProof memory) returns (bytes32,uint256,uint256,bool)" + } + }, + "id": 3145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6298:237:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$_t_bool_$", + "typeString": "tuple(bytes32,uint256,uint256,bool)" + } + }, + "src": "6244:291:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3147, + "nodeType": "ExpressionStatement", + "src": "6244:291:13" + }, + { + "condition": { + "argumentTypes": null, + "id": 3149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6553:10:13", + "subExpression": { + "argumentTypes": null, + "id": 3148, + "name": "isTxValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3102, + "src": "6554:9:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3156, + "nodeType": "IfStatement", + "src": "6549:93:13", + "trueBody": { + "id": 3155, + "nodeType": "Block", + "src": "6565:77:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3150, + "name": "isDisputeValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3105, + "src": "6583:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6600:4:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6583:21:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3153, + "nodeType": "ExpressionStatement", + "src": "6583:21:13" + }, + { + "id": 3154, + "nodeType": "Break", + "src": "6622:5:13" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3112, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3109, + "src": "6094:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3113, + "name": "_txs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "6098:4:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$4791_memory_$dyn_memory_ptr", + "typeString": "struct Types.Transaction memory[] memory" + } + }, + "id": 3114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6098:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6094:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3158, + "initializationExpression": { + "assignments": [ + 3109 + ], + "declarations": [ + { + "constant": false, + "id": 3109, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3158, + "src": "6079:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6079:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3111, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6091:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6079:13:13" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6111:3:13", + "subExpression": { + "argumentTypes": null, + "id": 3116, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3109, + "src": "6111:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3118, + "nodeType": "ExpressionStatement", + "src": "6111:3:13" + }, + "nodeType": "ForStatement", + "src": "6074:578:13" + }, + { + "condition": { + "argumentTypes": null, + "id": 3159, + "name": "isDisputeValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3105, + "src": "6728:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3169, + "nodeType": "IfStatement", + "src": "6724:228:13", + "trueBody": { + "id": 3168, + "nodeType": "Block", + "src": "6744:208:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3160, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "6859:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3161, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "6880:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6859:30:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3163, + "nodeType": "ExpressionStatement", + "src": "6859:30:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3164, + "name": "SlashAndRollback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3634, + "src": "6903:16:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6903:18:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3166, + "nodeType": "ExpressionStatement", + "src": "6903:18:13" + }, + { + "expression": null, + "functionReturnParameters": 3017, + "id": 3167, + "nodeType": "Return", + "src": "6935:7:13" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 3175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3170, + "name": "newBalanceRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3093, + "src": "7066:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3171, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "7084:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3173, + "indexExpression": { + "argumentTypes": null, + "id": 3172, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "7092:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7084:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3174, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4767, + "src": "7084:28:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "7066:46:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3185, + "nodeType": "IfStatement", + "src": "7062:159:13", + "trueBody": { + "id": 3184, + "nodeType": "Block", + "src": "7114:107:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3176, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "7128:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3177, + "name": "_batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3003, + "src": "7149:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7128:30:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3179, + "nodeType": "ExpressionStatement", + "src": "7128:30:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3180, + "name": "SlashAndRollback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3634, + "src": "7172:16:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7172:18:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3182, + "nodeType": "ExpressionStatement", + "src": "7172:18:13" + }, + { + "expression": null, + "functionReturnParameters": 3017, + "id": 3183, + "nodeType": "Return", + "src": "7204:7:13" + } + ] + } + } + ] + }, + "documentation": " disputeBatch processes a transactions and returns the updated balance tree\n and the updated leaves.\n@notice Gives the number of batches submitted on-chain\n@return Total number of batches submitted onchain", + "id": 3187, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "disputeBatch", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3003, + "name": "_batch_id", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "4549:17:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4549:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3006, + "name": "_txs", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "4576:31:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$4791_memory_$dyn_memory_ptr", + "typeString": "struct Types.Transaction[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 3004, + "name": "Types.Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4791, + "src": "4576:17:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_storage_ptr", + "typeString": "struct Types.Transaction" + } + }, + "id": 3005, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4576:19:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$4791_storage_$dyn_storage_ptr", + "typeString": "struct Types.Transaction[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3009, + "name": "_from_proofs", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "4617:46:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AccountMerkleProof_$4821_memory_$dyn_memory_ptr", + "typeString": "struct Types.AccountMerkleProof[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 3007, + "name": "Types.AccountMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4821, + "src": "4617:24:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_storage_ptr", + "typeString": "struct Types.AccountMerkleProof" + } + }, + "id": 3008, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4617:26:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AccountMerkleProof_$4821_storage_$dyn_storage_ptr", + "typeString": "struct Types.AccountMerkleProof[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3012, + "name": "_pda_proof", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "4673:40:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PDAMerkleProof_$4833_memory_$dyn_memory_ptr", + "typeString": "struct Types.PDAMerkleProof[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 3010, + "name": "Types.PDAMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4833, + "src": "4673:20:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_storage_ptr", + "typeString": "struct Types.PDAMerkleProof" + } + }, + "id": 3011, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4673:22:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PDAMerkleProof_$4833_storage_$dyn_storage_ptr", + "typeString": "struct Types.PDAMerkleProof[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3015, + "name": "_to_proofs", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "4723:44:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AccountMerkleProof_$4821_memory_$dyn_memory_ptr", + "typeString": "struct Types.AccountMerkleProof[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 3013, + "name": "Types.AccountMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4821, + "src": "4723:24:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_storage_ptr", + "typeString": "struct Types.AccountMerkleProof" + } + }, + "id": 3014, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4723:26:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_AccountMerkleProof_$4821_storage_$dyn_storage_ptr", + "typeString": "struct Types.AccountMerkleProof[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4539:234:13" + }, + "returnParameters": { + "id": 3017, + "nodeType": "ParameterList", + "parameters": [], + "src": "4781:0:13" + }, + "scope": 3686, + "src": "4518:2709:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3488, + "nodeType": "Block", + "src": "7895:4717:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3213, + "name": "_accountsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3191, + "src": "8006:13:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3214, + "name": "_pda_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3195, + "src": "8037:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory_ptr", + "typeString": "struct Types.PDAMerkleProof memory" + } + }, + "id": 3215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_pda", + "nodeType": "MemberAccess", + "referencedDeclaration": 4829, + "src": "8037:15:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAInclusionProof_$4806_memory", + "typeString": "struct Types.PDAInclusionProof memory" + } + }, + "id": 3216, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pubkey_leaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4805, + "src": "8037:27:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory", + "typeString": "struct Types.PDALeaf memory" + } + }, + "id": 3217, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pubkey", + "nodeType": "MemberAccess", + "referencedDeclaration": 4764, + "src": "8037:34:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3218, + "name": "_pda_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3195, + "src": "8089:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory_ptr", + "typeString": "struct Types.PDAMerkleProof memory" + } + }, + "id": 3219, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_pda", + "nodeType": "MemberAccess", + "referencedDeclaration": 4829, + "src": "8089:15:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAInclusionProof_$4806_memory", + "typeString": "struct Types.PDAInclusionProof memory" + } + }, + "id": 3220, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToPubkey", + "nodeType": "MemberAccess", + "referencedDeclaration": 4803, + "src": "8089:28:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3221, + "name": "_pda_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3195, + "src": "8135:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory_ptr", + "typeString": "struct Types.PDAMerkleProof memory" + } + }, + "id": 3222, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4832, + "src": "8135:19:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3211, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "7970:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 2380, + "src": "7970:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory,uint256,bytes32[] memory) view external returns (bool)" + } + }, + "id": 3223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7970:198:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546865205044412070726f6f6620697320696e636f7272656374", + "id": 3224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8182:28:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae999681b4c9f05468ef2b86fc6f7172e9b85cb5b786c3f926f15b78c6cec7f1", + "typeString": "literal_string \"The PDA proof is incorrect\"" + }, + "value": "The PDA proof is incorrect" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae999681b4c9f05468ef2b86fc6f7172e9b85cb5b786c3f926f15b78c6cec7f1", + "typeString": "literal_string \"The PDA proof is incorrect\"" + } + ], + "id": 3210, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "7949:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7949:271:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3226, + "nodeType": "ExpressionStatement", + "src": "7949:271:13" + }, + { + "assignments": [ + 3228 + ], + "declarations": [ + { + "constant": false, + "id": 3228, + "name": "computedID", + "nodeType": "VariableDeclaration", + "scope": 3488, + "src": "8268:18:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3227, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8268:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3238, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3231, + "name": "_pda_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3195, + "src": "8326:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory_ptr", + "typeString": "struct Types.PDAMerkleProof memory" + } + }, + "id": 3232, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_pda", + "nodeType": "MemberAccess", + "referencedDeclaration": 4829, + "src": "8326:15:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAInclusionProof_$4806_memory", + "typeString": "struct Types.PDAInclusionProof memory" + } + }, + "id": 3233, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToPubkey", + "nodeType": "MemberAccess", + "referencedDeclaration": 4803, + "src": "8326:28:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3234, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "8368:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MAX_DEPTH", + "nodeType": "MemberAccess", + "referencedDeclaration": 4542, + "src": "8368:22:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint8_$", + "typeString": "function () pure returns (uint8)" + } + }, + "id": 3236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8368:24:13", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "expression": { + "argumentTypes": null, + "id": 3229, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "8289:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2587, + "src": "8289:23:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) view external returns (uint256)" + } + }, + "id": 3237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8289:113:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8268:134:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3240, + "name": "computedID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3228, + "src": "8434:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3241, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "8448:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3242, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4782, + "src": "8448:8:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 3243, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "ID", + "nodeType": "MemberAccess", + "referencedDeclaration": 4808, + "src": "8448:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8434:25:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5075626b6579206e6f742072656c6174656420746f207468652066726f6d206163636f756e7420696e20746865207472616e73616374696f6e", + "id": 3245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8473:59:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ea6e0913bb796e740c4a023f9418999a7b3de78106d3365bc1cd30a8cdfe69d2", + "typeString": "literal_string \"Pubkey not related to the from account in the transaction\"" + }, + "value": "Pubkey not related to the from account in the transaction" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ea6e0913bb796e740c4a023f9418999a7b3de78106d3365bc1cd30a8cdfe69d2", + "typeString": "literal_string \"Pubkey not related to the from account in the transaction\"" + } + ], + "id": 3239, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "8413:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8413:129:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3247, + "nodeType": "ExpressionStatement", + "src": "8413:129:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3251, + "name": "_pda_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3195, + "src": "8603:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory_ptr", + "typeString": "struct Types.PDAMerkleProof memory" + } + }, + "id": 3252, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_pda", + "nodeType": "MemberAccess", + "referencedDeclaration": 4829, + "src": "8603:15:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAInclusionProof_$4806_memory", + "typeString": "struct Types.PDAInclusionProof memory" + } + }, + "id": 3253, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pubkey_leaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 4805, + "src": "8603:27:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory", + "typeString": "struct Types.PDALeaf memory" + } + }, + "id": 3254, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pubkey", + "nodeType": "MemberAccess", + "referencedDeclaration": 4764, + "src": "8603:34:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3249, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "8574:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "calculateAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 4759, + "src": "8574:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) pure returns (address)" + } + }, + "id": 3255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8574:64:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3261, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "8697:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3262, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 4790, + "src": "8697:13:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3258, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "8681:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3256, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "8658:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "HashFromTx", + "nodeType": "MemberAccess", + "referencedDeclaration": 4744, + "src": "8658:22:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_Transaction_$4791_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct Types.Transaction memory) pure returns (bytes32)" + } + }, + "id": 3259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8658:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ecrecovery", + "nodeType": "MemberAccess", + "referencedDeclaration": 4376, + "src": "8658:38:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 3263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8658:53:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8574:137:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5369676e617475726520697320696e636f7272656374", + "id": 3265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8725:24:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ea0ca17a1837901e913bf4d94f41c45b727c0eb4051490dba67a5740b9069ee5", + "typeString": "literal_string \"Signature is incorrect\"" + }, + "value": "Signature is incorrect" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ea0ca17a1837901e913bf4d94f41c45b727c0eb4051490dba67a5740b9069ee5", + "typeString": "literal_string \"Signature is incorrect\"" + } + ], + "id": 3248, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "8553:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8553:206:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3267, + "nodeType": "ExpressionStatement", + "src": "8553:206:13" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3270, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "8847:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4786, + "src": "8847:13:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3268, + "name": "tokenRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2778, + "src": "8816:13:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ITokenRegistry_$4303", + "typeString": "contract ITokenRegistry" + } + }, + "id": 3269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "registeredTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 4279, + "src": "8816:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view external returns (address)" + } + }, + "id": 3272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8816:45:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 3274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8873:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8865:7:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 3275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8865:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8816:59:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3286, + "nodeType": "IfStatement", + "src": "8812:280:13", + "trueBody": { + "id": 3285, + "nodeType": "Block", + "src": "8877:215:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3277, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "9040:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ZERO_BYTES32", + "nodeType": "MemberAccess", + "referencedDeclaration": 4632, + "src": "9040:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9040:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9069:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9072:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9075:5:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "id": 3283, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9039:42:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$", + "typeString": "tuple(bytes32,int_const 0,int_const 0,bool)" + } + }, + "functionReturnParameters": 3209, + "id": 3284, + "nodeType": "Return", + "src": "9032:49:13" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3290, + "name": "_balanceRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3189, + "src": "9214:12:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3293, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "9273:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "from", + "nodeType": "MemberAccess", + "referencedDeclaration": 4782, + "src": "9273:8:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3291, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "9244:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BytesFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4717, + "src": "9244:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes memory)" + } + }, + "id": 3295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9244:38:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3296, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "9300:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "9300:28:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3298, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "9300:42:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3299, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "9360:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3300, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4820, + "src": "9360:27:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3288, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "9178:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 2380, + "src": "9178:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory,uint256,bytes32[] memory) view external returns (bool)" + } + }, + "id": 3301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9178:223:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d65726b6c652050726f6f6620666f722066726f6d206c65616620697320696e636f7272656374", + "id": 3302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9415:41:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bf32b30ff5a31c5778ffd1f25377a43d02b1e713a8ff1b16bd9ebeb3a2706e5f", + "typeString": "literal_string \"Merkle Proof for from leaf is incorrect\"" + }, + "value": "Merkle Proof for from leaf is incorrect" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bf32b30ff5a31c5778ffd1f25377a43d02b1e713a8ff1b16bd9ebeb3a2706e5f", + "typeString": "literal_string \"Merkle Proof for from leaf is incorrect\"" + } + ], + "id": 3287, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "9157:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9157:309:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3304, + "nodeType": "ExpressionStatement", + "src": "9157:309:13" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "id": 3308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3305, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "9481:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3306, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4788, + "src": "9481:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9494:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9481:14:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3318, + "nodeType": "IfStatement", + "src": "9477:241:13", + "trueBody": { + "id": 3317, + "nodeType": "Block", + "src": "9497:221:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3309, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "9666:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ZERO_BYTES32", + "nodeType": "MemberAccess", + "referencedDeclaration": 4632, + "src": "9666:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9666:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9695:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9698:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9701:5:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "id": 3315, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9665:42:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$", + "typeString": "tuple(bytes32,int_const 0,int_const 0,bool)" + } + }, + "functionReturnParameters": 3209, + "id": 3316, + "nodeType": "Return", + "src": "9658:49:13" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3319, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "9778:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "9778:28:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3321, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "9778:36:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 3322, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4812, + "src": "9778:44:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3323, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "9825:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3324, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4788, + "src": "9825:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "9778:57:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3335, + "nodeType": "IfStatement", + "src": "9774:291:13", + "trueBody": { + "id": 3334, + "nodeType": "Block", + "src": "9837:228:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3326, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "10013:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ZERO_BYTES32", + "nodeType": "MemberAccess", + "referencedDeclaration": 4632, + "src": "10013:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10013:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10042:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10045:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10048:5:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "id": 3332, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10012:42:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$", + "typeString": "tuple(bytes32,int_const 0,int_const 0,bool)" + } + }, + "functionReturnParameters": 3209, + "id": 3333, + "nodeType": "Return", + "src": "10005:49:13" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3336, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "10129:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "10129:28:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "10129:36:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 3339, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4810, + "src": "10129:46:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3340, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "10179:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4786, + "src": "10179:13:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10129:63:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3352, + "nodeType": "IfStatement", + "src": "10125:290:13", + "trueBody": { + "id": 3351, + "nodeType": "Block", + "src": "10194:221:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3343, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "10363:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ZERO_BYTES32", + "nodeType": "MemberAccess", + "referencedDeclaration": 4632, + "src": "10363:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10363:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10392:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10395:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10398:5:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "id": 3349, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10362:42:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$", + "typeString": "tuple(bytes32,int_const 0,int_const 0,bool)" + } + }, + "functionReturnParameters": 3209, + "id": 3350, + "nodeType": "Return", + "src": "10355:49:13" + } + ] + } + }, + { + "assignments": [ + 3356 + ], + "declarations": [ + { + "constant": false, + "id": 3356, + "name": "new_from_leaf", + "nodeType": "VariableDeclaration", + "scope": 3488, + "src": "10464:38:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 3355, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "10464:17:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3373, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3359, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "10566:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3360, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "10566:28:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "10566:36:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3369, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "10723:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4788, + "src": "10723:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3364, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "10664:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3365, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "10664:28:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "10664:36:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3362, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "10616:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BalanceFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4683, + "src": "10616:47:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (uint256)" + } + }, + "id": 3367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10616:85:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "10616:106:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10616:118:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3357, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "10505:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "UpdateBalanceInAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4672, + "src": "10505:47:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$_t_uint256_$returns$_t_struct$_UserAccount_$4815_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory,uint256) pure returns (struct Types.UserAccount memory)" + } + }, + "id": 3372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10505:239:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10464:280:13" + }, + { + "assignments": [ + 3375 + ], + "declarations": [ + { + "constant": false, + "id": 3375, + "name": "newRoot", + "nodeType": "VariableDeclaration", + "scope": 3488, + "src": "10755:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3374, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10755:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3390, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3381, + "name": "new_from_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3356, + "src": "10860:13:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3379, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "10831:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BytesFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4717, + "src": "10831:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes memory)" + } + }, + "id": 3382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10831:43:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3378, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "10821:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10821:54:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3384, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "10889:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3385, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "10889:28:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3386, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "10889:42:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3387, + "name": "_from_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3197, + "src": "10945:18:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3388, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4820, + "src": "10945:27:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3376, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "10773:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateLeafWithSiblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 2479, + "src": "10773:34:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256,bytes32[] memory) pure external returns (bytes32)" + } + }, + "id": 3389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10773:209:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10755:227:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3394, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "11103:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3397, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "11157:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3398, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 4784, + "src": "11157:6:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3395, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "11128:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BytesFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4717, + "src": "11128:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes memory)" + } + }, + "id": 3399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11128:36:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3400, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "11182:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3401, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "11182:26:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "11182:40:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3403, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "11240:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3404, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4820, + "src": "11240:25:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3392, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "11067:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 2380, + "src": "11067:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes memory,uint256,bytes32[] memory) view external returns (bool)" + } + }, + "id": 3405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11067:212:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4d65726b6c652050726f6f6620666f722066726f6d206c65616620697320696e636f7272656374", + "id": 3406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11293:41:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bf32b30ff5a31c5778ffd1f25377a43d02b1e713a8ff1b16bd9ebeb3a2706e5f", + "typeString": "literal_string \"Merkle Proof for from leaf is incorrect\"" + }, + "value": "Merkle Proof for from leaf is incorrect" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bf32b30ff5a31c5778ffd1f25377a43d02b1e713a8ff1b16bd9ebeb3a2706e5f", + "typeString": "literal_string \"Merkle Proof for from leaf is incorrect\"" + } + ], + "id": 3391, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "11046:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11046:298:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3408, + "nodeType": "ExpressionStatement", + "src": "11046:298:13" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3409, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "11409:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3410, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "11409:26:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3411, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "11409:34:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 3412, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4810, + "src": "11409:44:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3413, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "11457:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4786, + "src": "11457:13:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11409:61:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3425, + "nodeType": "IfStatement", + "src": "11405:288:13", + "trueBody": { + "id": 3424, + "nodeType": "Block", + "src": "11472:221:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3416, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "11641:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ZERO_BYTES32", + "nodeType": "MemberAccess", + "referencedDeclaration": 4632, + "src": "11641:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11641:27:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11670:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11673:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11676:5:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "id": 3422, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11640:42:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$_t_bool_$", + "typeString": "tuple(bytes32,int_const 0,int_const 0,bool)" + } + }, + "functionReturnParameters": 3209, + "id": 3423, + "nodeType": "Return", + "src": "11633:49:13" + } + ] + } + }, + { + "assignments": [ + 3429 + ], + "declarations": [ + { + "constant": false, + "id": 3429, + "name": "new_to_leaf", + "nodeType": "VariableDeclaration", + "scope": 3488, + "src": "11742:36:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 3428, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "11742:17:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3446, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3432, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "11842:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3433, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "11842:26:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3434, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "11842:34:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3442, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3193, + "src": "11995:3:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + }, + "id": 3443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4788, + "src": "11995:10:13", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3437, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "11938:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3438, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "11938:26:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3439, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "account", + "nodeType": "MemberAccess", + "referencedDeclaration": 4795, + "src": "11938:34:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3435, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "11890:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BalanceFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4683, + "src": "11890:47:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (uint256)" + } + }, + "id": 3440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11890:83:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 53, + "src": "11890:104:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11890:116:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory", + "typeString": "struct Types.UserAccount memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3430, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "11781:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "UpdateBalanceInAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4672, + "src": "11781:47:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$_t_uint256_$returns$_t_struct$_UserAccount_$4815_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory,uint256) pure returns (struct Types.UserAccount memory)" + } + }, + "id": 3445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11781:235:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11742:274:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3452, + "name": "new_to_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "12123:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3450, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "12094:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BytesFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4717, + "src": "12094:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes memory)" + } + }, + "id": 3453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12094:41:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3454, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "12149:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3455, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "12149:26:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "12149:40:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3447, + "name": "balancesTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2772, + "src": "12061:12:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Tree_$4240", + "typeString": "contract Tree" + } + }, + "id": 3449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "update", + "nodeType": "MemberAccess", + "referencedDeclaration": 3904, + "src": "12061:19:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (bytes memory,uint256) external" + } + }, + "id": 3457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12061:138:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3458, + "nodeType": "ExpressionStatement", + "src": "12061:138:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3459, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "12209:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3465, + "name": "new_to_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "12306:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3463, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "12277:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BytesFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4717, + "src": "12277:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes memory)" + } + }, + "id": 3466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12277:41:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3462, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "12267:9:13", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12267:52:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3468, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "12333:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "accountIP", + "nodeType": "MemberAccess", + "referencedDeclaration": 4817, + "src": "12333:26:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_memory", + "typeString": "struct Types.AccountInclusionProof memory" + } + }, + "id": 3470, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pathToAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4793, + "src": "12333:40:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3471, + "name": "_to_merkle_proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3199, + "src": "12387:16:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof memory" + } + }, + "id": 3472, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "siblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 4820, + "src": "12387:25:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3460, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2787, + "src": "12219:11:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "updateLeafWithSiblings", + "nodeType": "MemberAccess", + "referencedDeclaration": 2479, + "src": "12219:34:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes32,uint256,bytes32[] memory) pure external returns (bytes32)" + } + }, + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12219:203:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "12209:213:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3475, + "nodeType": "ExpressionStatement", + "src": "12209:213:13" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3476, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "12454:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3479, + "name": "new_from_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3356, + "src": "12506:13:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3477, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "12475:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BalanceFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4683, + "src": "12475:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (uint256)" + } + }, + "id": 3480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12475:45:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3483, + "name": "new_to_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3429, + "src": "12565:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3481, + "name": "RollupUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4760, + "src": "12534:11:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_RollupUtils_$4760_$", + "typeString": "type(library RollupUtils)" + } + }, + "id": 3482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BalanceFromAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 4683, + "src": "12534:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (uint256)" + } + }, + "id": 3484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12534:43:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12591:4:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "id": 3486, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12440:165:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$_t_bool_$", + "typeString": "tuple(bytes32,uint256,uint256,bool)" + } + }, + "functionReturnParameters": 3209, + "id": 3487, + "nodeType": "Return", + "src": "12433:172:13" + } + ] + }, + "documentation": "@notice processTx processes a transactions and returns the updated balance tree\n and the updated leaves\nconditions in require mean that the dispute be declared invalid\nif conditons evaluate if the coordinator was at fault\n@return Total number of batches submitted onchain", + "id": 3489, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "processTx", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3189, + "name": "_balanceRoot", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7584:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3188, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7584:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3191, + "name": "_accountsRoot", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7614:21:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3190, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7614:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3193, + "name": "_tx", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7645:28:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction" + }, + "typeName": { + "contractScope": null, + "id": 3192, + "name": "Types.Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4791, + "src": "7645:17:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_storage_ptr", + "typeString": "struct Types.Transaction" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3195, + "name": "_pda_proof", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7683:38:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_memory_ptr", + "typeString": "struct Types.PDAMerkleProof" + }, + "typeName": { + "contractScope": null, + "id": 3194, + "name": "Types.PDAMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4833, + "src": "7683:20:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAMerkleProof_$4833_storage_ptr", + "typeString": "struct Types.PDAMerkleProof" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3197, + "name": "_from_merkle_proof", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7731:50:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof" + }, + "typeName": { + "contractScope": null, + "id": 3196, + "name": "Types.AccountMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4821, + "src": "7731:24:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_storage_ptr", + "typeString": "struct Types.AccountMerkleProof" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3199, + "name": "_to_merkle_proof", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7791:48:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_memory_ptr", + "typeString": "struct Types.AccountMerkleProof" + }, + "typeName": { + "contractScope": null, + "id": 3198, + "name": "Types.AccountMerkleProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4821, + "src": "7791:24:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountMerkleProof_$4821_storage_ptr", + "typeString": "struct Types.AccountMerkleProof" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7574:271:13" + }, + "returnParameters": { + "id": 3209, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3202, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7862:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3201, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7862:7:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3204, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7871:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7871:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3206, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7880:7:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7880:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3208, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "7889:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3207, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7889:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7861:33:13" + }, + "scope": 3686, + "src": "7556:5056:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3633, + "nodeType": "Block", + "src": "12868:1806:13", + "statements": [ + { + "assignments": [ + 3495 + ], + "declarations": [ + { + "constant": false, + "id": 3495, + "name": "challengerRewards", + "nodeType": "VariableDeclaration", + "scope": 3633, + "src": "12878:25:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12878:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3497, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12906:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12878:29:13" + }, + { + "assignments": [ + 3499 + ], + "declarations": [ + { + "constant": false, + "id": 3499, + "name": "burnedAmount", + "nodeType": "VariableDeclaration", + "scope": 3633, + "src": "12917:20:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12917:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3501, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12940:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12917:24:13" + }, + { + "assignments": [ + 3503 + ], + "declarations": [ + { + "constant": false, + "id": 3503, + "name": "totalSlashings", + "nodeType": "VariableDeclaration", + "scope": 3633, + "src": "12951:22:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12951:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3505, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12976:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "12951:26:13" + }, + { + "body": { + "id": 3592, + "nodeType": "Block", + "src": "13055:1170:13", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3519, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5390, + "src": "13274:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 3520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13274:9:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3521, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "13287:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MIN_GAS_LIMIT_LEFT", + "nodeType": "MemberAccess", + "referencedDeclaration": 4588, + "src": "13287:31:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_uint256_$", + "typeString": "function () pure returns (uint256)" + } + }, + "id": 3523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13287:33:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13274:46:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3527, + "nodeType": "IfStatement", + "src": "13270:130:13", + "trueBody": { + "id": 3526, + "nodeType": "Block", + "src": "13322:78:13", + "statements": [ + { + "id": 3525, + "nodeType": "Break", + "src": "13380:5:13" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3528, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "13418:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3529, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "13423:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13418:23:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3536, + "nodeType": "IfStatement", + "src": "13414:167:13", + "trueBody": { + "id": 3535, + "nodeType": "Block", + "src": "13443:138:13", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3531, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "13544:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 3532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13565:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13544:22:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3534, + "nodeType": "ExpressionStatement", + "src": "13544:22:13" + } + ] + } + }, + { + "assignments": [ + 3540 + ], + "declarations": [ + { + "constant": false, + "id": 3540, + "name": "batch", + "nodeType": "VariableDeclaration", + "scope": 3592, + "src": "13621:24:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch" + }, + "typeName": { + "contractScope": null, + "id": 3539, + "name": "Types.Batch", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4780, + "src": "13621:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage_ptr", + "typeString": "struct Types.Batch" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3544, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3541, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "13648:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3543, + "indexExpression": { + "argumentTypes": null, + "id": 3542, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "13656:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13648:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13621:37:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3545, + "name": "challengerRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "13751:17:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3546, + "name": "batch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "13773:5:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3547, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "13773:20:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 3548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13796:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "13773:24:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3550, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13772:26:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "33", + "id": 3551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13801:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "13772:30:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13751:51:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3554, + "nodeType": "ExpressionStatement", + "src": "13751:51:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3555, + "name": "burnedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3499, + "src": "13816:12:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3559, + "name": "challengerRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "13857:17:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3556, + "name": "batch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "13832:5:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3557, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "13832:20:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "13832:24:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13832:43:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13816:59:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3562, + "nodeType": "ExpressionStatement", + "src": "13816:59:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3563, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "13890:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3565, + "indexExpression": { + "argumentTypes": null, + "id": 3564, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "13898:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13890:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "id": 3566, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "13890:25:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 3567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13918:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13890:29:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3569, + "nodeType": "ExpressionStatement", + "src": "13890:29:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "13962:17:13", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3570, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "13969:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3572, + "indexExpression": { + "argumentTypes": null, + "id": 3571, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "13977:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13969:10:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3574, + "nodeType": "ExpressionStatement", + "src": "13962:17:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "13994:16:13", + "subExpression": { + "argumentTypes": null, + "id": 3575, + "name": "totalSlashings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3503, + "src": "13994:14:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3577, + "nodeType": "ExpressionStatement", + "src": "13994:16:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3581, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "14065:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3582, + "name": "batch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "14084:5:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3583, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "committer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4771, + "src": "14084:15:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3584, + "name": "batch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "14117:5:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3585, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4767, + "src": "14117:15:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3586, + "name": "batch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "14150:5:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3587, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "txRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 4773, + "src": "14150:12:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3588, + "name": "batch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3540, + "src": "14180:5:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "14180:20:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3578, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2776, + "src": "14024:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "id": 3580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logBatchRollback", + "nodeType": "MemberAccess", + "referencedDeclaration": 4923, + "src": "14024:23:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (uint256,address,bytes32,bytes32,uint256) external" + } + }, + "id": 3590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14024:190:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3591, + "nodeType": "ExpressionStatement", + "src": "14024:190:13" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3513, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "13025:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3514, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "13030:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13025:23:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3593, + "initializationExpression": { + "assignments": [ + 3507 + ], + "declarations": [ + { + "constant": false, + "id": 3507, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3593, + "src": "12993:9:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12993:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3512, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3508, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "13005:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3509, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13005:14:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13022:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "13005:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12993:30:13" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 3517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "13050:3:13", + "subExpression": { + "argumentTypes": null, + "id": 3516, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3507, + "src": "13050:1:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3518, + "nodeType": "ExpressionStatement", + "src": "13050:3:13" + }, + "nodeType": "ForStatement", + "src": "12988:1237:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3599, + "name": "challengerRewards", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "14336:17:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3594, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "14315:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14315:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 3597, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14314:12:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14314:21:13", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14314:40:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3601, + "nodeType": "ExpressionStatement", + "src": "14314:40:13" + }, + { + "assignments": [ + 3603 + ], + "declarations": [ + { + "constant": false, + "id": 3603, + "name": "burnAddress", + "nodeType": "VariableDeclaration", + "scope": 3633, + "src": "14401:27:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14401:15:13", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3607, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3604, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "14431:12:13", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "BURN_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": 4621, + "src": "14431:25:13", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_address_payable_$", + "typeString": "function () pure returns (address payable)" + } + }, + "id": 3606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14431:27:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14401:57:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3611, + "name": "burnedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3499, + "src": "14491:12:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3608, + "name": "burnAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3603, + "src": "14469:11:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 3609, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14468:13:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14468:22:13", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14468:36:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3613, + "nodeType": "ExpressionStatement", + "src": "14468:36:13" + }, + { + "expression": { + "argumentTypes": null, + "id": 3625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3614, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "14548:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3616, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14548:14:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 3622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14607:1:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "expression": { + "argumentTypes": null, + "id": 3620, + "name": "invalidBatchMarker", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2789, + "src": "14584:18:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "14584:22:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14584:25:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3617, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "14565:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3618, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14565:14:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 69, + "src": "14565:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 3624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14565:45:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14548:62:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3626, + "nodeType": "ExpressionStatement", + "src": "14548:62:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3630, + "name": "totalSlashings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3503, + "src": "14652:14:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3627, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2776, + "src": "14621:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "id": 3629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logRollbackFinalisation", + "nodeType": "MemberAccess", + "referencedDeclaration": 4937, + "src": "14621:30:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 3631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14621:46:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3632, + "nodeType": "ExpressionStatement", + "src": "14621:46:13" + } + ] + }, + "documentation": "@notice SlashAndRollback slashes all the coordinator's who have built on top of the invalid batch\nand rewards challegers. Also deletes all the batches after invalid batch", + "id": 3634, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 3492, + "modifierName": { + "argumentTypes": null, + "id": 3491, + "name": "isRollingBack", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2820, + "src": "12854:13:13", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "12854:13:13" + } + ], + "name": "SlashAndRollback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3490, + "nodeType": "ParameterList", + "parameters": [], + "src": "12844:2:13" + }, + "returnParameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [], + "src": "12868:0:13" + }, + "scope": 3686, + "src": "12819:1855:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3684, + "nodeType": "Block", + "src": "14916:552:13", + "statements": [ + { + "assignments": [ + 3642 + ], + "declarations": [ + { + "constant": false, + "id": 3642, + "name": "committedBatch", + "nodeType": "VariableDeclaration", + "scope": 3684, + "src": "14926:33:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch" + }, + "typeName": { + "contractScope": null, + "id": 3641, + "name": "Types.Batch", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4780, + "src": "14926:11:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage_ptr", + "typeString": "struct Types.Batch" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3646, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3643, + "name": "batches", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2785, + "src": "14962:7:13", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Batch_$4780_storage_$dyn_storage", + "typeString": "struct Types.Batch storage ref[] storage ref" + } + }, + "id": 3645, + "indexExpression": { + "argumentTypes": null, + "id": 3644, + "name": "batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3636, + "src": "14970:8:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14962:17:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_storage", + "typeString": "struct Types.Batch storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14926:53:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3648, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "15010:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15010:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3650, + "name": "committedBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3642, + "src": "15024:14:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3651, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "committer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4771, + "src": "15024:24:13", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15010:38:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "596f7520617265206e6f742074686520636f727265637420636f6d6d697474657220666f722074686973206261746368", + "id": 3653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15062:50:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_54f8b0f8702a53b6b649da78b933e436566fc942d45307ff7b2c88c07f7853f5", + "typeString": "literal_string \"You are not the correct committer for this batch\"" + }, + "value": "You are not the correct committer for this batch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_54f8b0f8702a53b6b649da78b933e436566fc942d45307ff7b2c88c07f7853f5", + "typeString": "literal_string \"You are not the correct committer for this batch\"" + } + ], + "id": 3647, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "14989:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14989:133:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3655, + "nodeType": "ExpressionStatement", + "src": "14989:133:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3657, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5387, + "src": "15153:5:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 3658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15153:12:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3659, + "name": "committedBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3642, + "src": "15168:14:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "finalisesOn", + "nodeType": "MemberAccess", + "referencedDeclaration": 4777, + "src": "15168:26:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "15153:41:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "54686973206261746368206973206e6f74207965742066696e616c697365642c20636865636b206261636b20736f6f6e21", + "id": 3662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15208:51:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_83ca7b6fc9a14ddcfd2432fa688011ad078088281505b4ab8b2b5660fcd2ff7a", + "typeString": "literal_string \"This batch is not yet finalised, check back soon!\"" + }, + "value": "This batch is not yet finalised, check back soon!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_83ca7b6fc9a14ddcfd2432fa688011ad078088281505b4ab8b2b5660fcd2ff7a", + "typeString": "literal_string \"This batch is not yet finalised, check back soon!\"" + } + ], + "id": 3656, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "15132:7:13", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15132:137:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3664, + "nodeType": "ExpressionStatement", + "src": "15132:137:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3670, + "name": "committedBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3642, + "src": "15299:14:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "15299:29:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3665, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "15279:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15279:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15279:19:13", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15279:50:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3673, + "nodeType": "ExpressionStatement", + "src": "15279:50:13" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3677, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "15376:3:13", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15376:10:13", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3679, + "name": "committedBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3642, + "src": "15400:14:13", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Batch_$4780_memory_ptr", + "typeString": "struct Types.Batch memory" + } + }, + "id": 3680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "stakeCommitted", + "nodeType": "MemberAccess", + "referencedDeclaration": 4775, + "src": "15400:29:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3681, + "name": "batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3636, + "src": "15443:8:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3674, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2776, + "src": "15339:6:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$5058", + "typeString": "contract Logger" + } + }, + "id": 3676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logStakeWithdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 4889, + "src": "15339:23:13", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) external" + } + }, + "id": 3682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15339:122:13", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3683, + "nodeType": "ExpressionStatement", + "src": "15339:122:13" + } + ] + }, + "documentation": "@notice Withdraw delay allows coordinators to withdraw their stake after the batch has been finalised\n@param batch_id Batch ID that the coordinator submitted", + "id": 3685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "WithdrawStake", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3636, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 3685, + "src": "14891:16:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14891:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14890:18:13" + }, + "returnParameters": { + "id": 3638, + "nodeType": "ParameterList", + "parameters": [], + "src": "14916:0:13" + }, + "scope": 3686, + "src": "14868:600:13", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3687, + "src": "778:17895:13" + } + ], + "src": "0:18674:13" + }, + "id": 13 + }, + "contracts/TestToken.sol": { + "ast": { + "absolutePath": "contracts/TestToken.sol", + "exportedSymbols": { + "TestToken": [ + 3705 + ] + }, + "id": 3706, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3688, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:14" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 3689, + "nodeType": "ImportDirective", + "scope": 3706, + "sourceUnit": 737, + "src": "26:55:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/ownership/Ownable.sol", + "file": "@openzeppelin/contracts/ownership/Ownable.sol", + "id": 3690, + "nodeType": "ImportDirective", + "scope": 3706, + "sourceUnit": 332, + "src": "82:55:14", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3691, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 736, + "src": "213:5:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$736", + "typeString": "contract ERC20" + } + }, + "id": 3692, + "nodeType": "InheritanceSpecifier", + "src": "213:5:14" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3693, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 331, + "src": "220:7:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$331", + "typeString": "contract Ownable" + } + }, + "id": 3694, + "nodeType": "InheritanceSpecifier", + "src": "220:7:14" + } + ], + "contractDependencies": [ + 26, + 331, + 736, + 805 + ], + "contractKind": "contract", + "documentation": "@title TestToken is a basic ERC20 Token", + "fullyImplemented": true, + "id": 3705, + "linearizedBaseContracts": [ + 3705, + 331, + 736, + 805, + 26 + ], + "name": "TestToken", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3703, + "nodeType": "Block", + "src": "331:48:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3698, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "347:3:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "347:10:14", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "hexValue": "313030303030303030303030", + "id": 3700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "359:12:14", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000_by_1", + "typeString": "int_const 100000000000" + }, + "value": "100000000000" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_rational_100000000000_by_1", + "typeString": "int_const 100000000000" + } + ], + "id": 3697, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 620, + "src": "341:5:14", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 3701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "341:31:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3702, + "nodeType": "ExpressionStatement", + "src": "341:31:14" + } + ] + }, + "documentation": "@dev assign totalSupply to account creating this contract ", + "id": 3704, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3695, + "nodeType": "ParameterList", + "parameters": [], + "src": "321:2:14" + }, + "returnParameters": { + "id": 3696, + "nodeType": "ParameterList", + "parameters": [], + "src": "331:0:14" + }, + "scope": 3705, + "src": "310:69:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3706, + "src": "191:190:14" + } + ], + "src": "0:382:14" + }, + "id": 14 + }, + "contracts/TokenRegistry.sol": { + "ast": { + "absolutePath": "contracts/TokenRegistry.sol", + "exportedSymbols": { + "TokenRegistry": [ + 3827 + ] + }, + "id": 3828, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3707, + "literals": [ + "solidity", + ">=", + "0.4", + ".21" + ], + "nodeType": "PragmaDirective", + "src": "0:25:15" + }, + { + "absolutePath": "contracts/Logger.sol", + "file": "./Logger.sol", + "id": 3709, + "nodeType": "ImportDirective", + "scope": 3828, + "sourceUnit": 1927, + "src": "27:36:15", + "symbolAliases": [ + { + "foreign": 3708, + "local": null + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/NameRegistry.sol", + "file": "./NameRegistry.sol", + "id": 3711, + "nodeType": "ImportDirective", + "scope": 3828, + "sourceUnit": 2725, + "src": "64:60:15", + "symbolAliases": [ + { + "foreign": 3710, + "local": "Registry" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 3713, + "nodeType": "ImportDirective", + "scope": 3828, + "sourceUnit": 4634, + "src": "125:53:15", + "symbolAliases": [ + { + "foreign": 3712, + "local": null + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3827, + "linearizedBaseContracts": [ + 3827 + ], + "name": "TokenRegistry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3715, + "name": "Coordinator", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "210:26:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "210:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3717, + "name": "rollupNC", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "242:23:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "242:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3719, + "name": "logger", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "271:20:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + }, + "typeName": { + "contractScope": null, + "id": 3718, + "name": "Logger", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1926, + "src": "271:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3723, + "name": "pendingRegistrations", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "297:52:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 3722, + "keyType": { + "id": 3720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "305:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "297:24:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 3721, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "316:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3727, + "name": "registeredTokens", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "355:51:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 3726, + "keyType": { + "id": 3724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "363:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "355:27:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 3725, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "374:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3729, + "name": "numTokens", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "413:24:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "413:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 3739, + "nodeType": "Block", + "src": "471:61:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3732, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "488:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "488:10:15", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3734, + "name": "Coordinator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3715, + "src": "502:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "488:25:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 3731, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5386, + "src": "481:6:15", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 3736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "481:33:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3737, + "nodeType": "ExpressionStatement", + "src": "481:33:15" + }, + { + "id": 3738, + "nodeType": "PlaceholderStatement", + "src": "524:1:15" + } + ] + }, + "documentation": null, + "id": 3740, + "name": "onlyCoordinator", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3730, + "nodeType": "ParameterList", + "parameters": [], + "src": "468:2:15" + }, + "src": "444:88:15", + "visibility": "internal" + }, + { + "constant": false, + "id": 3742, + "name": "nameRegistry", + "nodeType": "VariableDeclaration", + "scope": 3827, + "src": "537:28:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + }, + "typeName": { + "contractScope": null, + "id": 3741, + "name": "Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2724, + "src": "537:8:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 3769, + "nodeType": "Block", + "src": "614:171:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3747, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3742, + "src": "624:12:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3749, + "name": "_registryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3744, + "src": "648:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3748, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "639:8:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_NameRegistry_$2724_$", + "typeString": "type(contract NameRegistry)" + } + }, + "id": 3750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:23:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "src": "624:38:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 3752, + "nodeType": "ExpressionStatement", + "src": "624:38:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 3756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3753, + "name": "Coordinator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3715, + "src": "672:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3754, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "686:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "686:10:15", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "672:24:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3757, + "nodeType": "ExpressionStatement", + "src": "672:24:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3758, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3719, + "src": "707:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3762, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "755:12:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "LOGGER", + "nodeType": "MemberAccess", + "referencedDeclaration": 4501, + "src": "755:19:15", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "755:21:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 3760, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3742, + "src": "723:12:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 3761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "723:31:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 3765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "723:54:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3759, + "name": "Logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1926, + "src": "716:6:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Logger_$1926_$", + "typeString": "type(contract Logger)" + } + }, + "id": 3766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "716:62:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "src": "707:71:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 3768, + "nodeType": "ExpressionStatement", + "src": "707:71:15" + } + ] + }, + "documentation": null, + "id": 3770, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3744, + "name": "_registryAddr", + "nodeType": "VariableDeclaration", + "scope": 3770, + "src": "584:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3743, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "584:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "583:23:15" + }, + "returnParameters": { + "id": 3746, + "nodeType": "ParameterList", + "parameters": [], + "src": "614:0:15" + }, + "scope": 3827, + "src": "572:213:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3796, + "nodeType": "Block", + "src": "1023:239:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 3780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3776, + "name": "pendingRegistrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3723, + "src": "1054:20:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3778, + "indexExpression": { + "argumentTypes": null, + "id": 3777, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3772, + "src": "1075:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1054:35:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1093:5:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1054:44:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e20616c726561647920726567697374657265642e", + "id": 3781, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1112:27:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5dc1317b0a416bcc40b79d6490188658221109c62dc3891aeee3acd3bc7c5868", + "typeString": "literal_string \"Token already registered.\"" + }, + "value": "Token already registered." + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5dc1317b0a416bcc40b79d6490188658221109c62dc3891aeee3acd3bc7c5868", + "typeString": "literal_string \"Token already registered.\"" + } + ], + "id": 3775, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1033:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1033:116:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3783, + "nodeType": "ExpressionStatement", + "src": "1033:116:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 3788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3784, + "name": "pendingRegistrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3723, + "src": "1159:20:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3786, + "indexExpression": { + "argumentTypes": null, + "id": 3785, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3772, + "src": "1180:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1159:35:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1197:4:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1159:42:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3789, + "nodeType": "ExpressionStatement", + "src": "1159:42:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3793, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3772, + "src": "1241:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3790, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3719, + "src": "1211:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 3792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logRegistrationRequest", + "nodeType": "MemberAccess", + "referencedDeclaration": 1838, + "src": "1211:29:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", + "typeString": "function (address) external" + } + }, + "id": 3794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1211:44:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3795, + "nodeType": "ExpressionStatement", + "src": "1211:44:15" + } + ] + }, + "documentation": "@notice Requests addition of a new token to the chain, can be called by anyone\n@param tokenContract Address for the new token being added", + "id": 3797, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requestTokenRegistration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3772, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 3797, + "src": "993:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "993:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "992:23:15" + }, + "returnParameters": { + "id": 3774, + "nodeType": "ParameterList", + "parameters": [], + "src": "1023:0:15" + }, + "scope": 3827, + "src": "959:303:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3825, + "nodeType": "Block", + "src": "1598:297:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3803, + "name": "pendingRegistrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3723, + "src": "1629:20:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3805, + "indexExpression": { + "argumentTypes": null, + "id": 3804, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3799, + "src": "1650:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1629:35:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "546f6b656e20776173206e6f742072656769737465726564", + "id": 3806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1678:26:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bcfee304a6ca6d0c351e1de014947cbf7870344a350de9c4ae84a9e250f9c9cf", + "typeString": "literal_string \"Token was not registered\"" + }, + "value": "Token was not registered" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bcfee304a6ca6d0c351e1de014947cbf7870344a350de9c4ae84a9e250f9c9cf", + "typeString": "literal_string \"Token was not registered\"" + } + ], + "id": 3802, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "1608:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1608:106:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3808, + "nodeType": "ExpressionStatement", + "src": "1608:106:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 3810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1724:11:15", + "subExpression": { + "argumentTypes": null, + "id": 3809, + "name": "numTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3729, + "src": "1724:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3811, + "nodeType": "ExpressionStatement", + "src": "1724:11:15" + }, + { + "expression": { + "argumentTypes": null, + "id": 3816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 3812, + "name": "registeredTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3727, + "src": "1745:16:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 3814, + "indexExpression": { + "argumentTypes": null, + "id": 3813, + "name": "numTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3729, + "src": "1762:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1745:27:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3815, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3799, + "src": "1775:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1745:43:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3817, + "nodeType": "ExpressionStatement", + "src": "1745:43:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3821, + "name": "numTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3729, + "src": "1863:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3822, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3799, + "src": "1874:13:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 3818, + "name": "logger", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3719, + "src": "1837:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Logger_$1926", + "typeString": "contract Logger" + } + }, + "id": 3820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "logRegisteredToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 1824, + "src": "1837:25:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) external" + } + }, + "id": 3823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1837:51:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3824, + "nodeType": "ExpressionStatement", + "src": "1837:51:15" + } + ] + }, + "documentation": "@notice Add new tokens to the rollup chain by assigning them an ID called tokenType from here on\n@param tokenContract Deposit tree depth or depth of subtree that is being deposited\nTODO: add a modifier to allow only coordinator", + "id": 3826, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finaliseTokenRegistration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3800, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3799, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 3826, + "src": "1568:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3798, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1568:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1567:23:15" + }, + "returnParameters": { + "id": 3801, + "nodeType": "ParameterList", + "parameters": [], + "src": "1598:0:15" + }, + "scope": 3827, + "src": "1533:362:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 3828, + "src": "181:1716:15" + } + ], + "src": "0:1898:15" + }, + "id": 15 + }, + "contracts/Tree.sol": { + "ast": { + "absolutePath": "contracts/Tree.sol", + "exportedSymbols": { + "Tree": [ + 4240 + ] + }, + "id": 4241, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3829, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:16" + }, + { + "absolutePath": "contracts/MerkleTreeUtils.sol", + "file": "./MerkleTreeUtils.sol", + "id": 3831, + "nodeType": "ImportDirective", + "scope": 4241, + "sourceUnit": 2589, + "src": "25:65:16", + "symbolAliases": [ + { + "foreign": 3830, + "local": "MTUtils" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/NameRegistry.sol", + "file": "./NameRegistry.sol", + "id": 3833, + "nodeType": "ImportDirective", + "scope": 4241, + "sourceUnit": 2725, + "src": "91:60:16", + "symbolAliases": [ + { + "foreign": 3832, + "local": "Registry" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/libs/ParamManager.sol", + "file": "./libs/ParamManager.sol", + "id": 3835, + "nodeType": "ImportDirective", + "scope": 4241, + "sourceUnit": 4634, + "src": "152:53:16", + "symbolAliases": [ + { + "foreign": 3834, + "local": null + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4240, + "linearizedBaseContracts": [ + 4240 + ], + "name": "Tree", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3837, + "name": "nameRegistry", + "nodeType": "VariableDeclaration", + "scope": 4240, + "src": "271:28:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + }, + "typeName": { + "contractScope": null, + "id": 3836, + "name": "Registry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2724, + "src": "271:8:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3839, + "name": "merkleUtils", + "nodeType": "VariableDeclaration", + "scope": 4240, + "src": "305:19:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + }, + "typeName": { + "contractScope": null, + "id": 3838, + "name": "MTUtils", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2588, + "src": "305:7:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "value": null, + "visibility": "internal" + }, + { + "canonicalName": "Tree.MerkleTree", + "id": 3848, + "members": [ + { + "constant": false, + "id": 3841, + "name": "root", + "nodeType": "VariableDeclaration", + "scope": 3848, + "src": "479:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3840, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "479:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3843, + "name": "height", + "nodeType": "VariableDeclaration", + "scope": 3848, + "src": "501:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "501:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3847, + "name": "nodes", + "nodeType": "VariableDeclaration", + "scope": 3848, + "src": "525:33:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + }, + "typeName": { + "id": 3846, + "keyType": { + "id": 3844, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "533:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "525:27:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + }, + "valueType": { + "id": 3845, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "544:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "MerkleTree", + "nodeType": "StructDefinition", + "scope": 4240, + "src": "431:134:16", + "visibility": "public" + }, + { + "body": { + "id": 3879, + "nodeType": "Block", + "src": "613:294:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3853, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3837, + "src": "623:12:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3855, + "name": "_registryAddr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3850, + "src": "647:13:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3854, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "638:8:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_NameRegistry_$2724_$", + "typeString": "type(contract NameRegistry)" + } + }, + "id": 3856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "638:23:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "src": "623:38:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 3858, + "nodeType": "ExpressionStatement", + "src": "623:38:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 3868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 3859, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "671:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3863, + "name": "ParamManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4633, + "src": "738:12:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ParamManager_$4633_$", + "typeString": "type(library ParamManager)" + } + }, + "id": 3864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MERKLE_UTILS", + "nodeType": "MemberAccess", + "referencedDeclaration": 4511, + "src": "738:25:16", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 3865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "738:27:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 3861, + "name": "nameRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3837, + "src": "706:12:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_NameRegistry_$2724", + "typeString": "contract NameRegistry" + } + }, + "id": 3862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getContractDetails", + "nodeType": "MemberAccess", + "referencedDeclaration": 2715, + "src": "706:31:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32) view external returns (address)" + } + }, + "id": 3866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "706:60:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3860, + "name": "MTUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "685:7:16", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleTreeUtils_$2588_$", + "typeString": "type(contract MerkleTreeUtils)" + } + }, + "id": 3867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "685:91:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "src": "671:105:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3869, + "nodeType": "ExpressionStatement", + "src": "671:105:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3871, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "822:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getZeroRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 2032, + "src": "822:23:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 3873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "822:25:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 3874, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "861:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 3875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getMaxTreeDepth", + "nodeType": "MemberAccess", + "referencedDeclaration": 2040, + "src": "861:27:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 3876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "861:29:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3870, + "name": "setMerkleRootAndHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4181, + "src": "786:22:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 3877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "786:114:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3878, + "nodeType": "ExpressionStatement", + "src": "786:114:16" + } + ] + }, + "documentation": null, + "id": 3880, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3850, + "name": "_registryAddr", + "nodeType": "VariableDeclaration", + "scope": 3880, + "src": "583:21:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "583:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "582:23:16" + }, + "returnParameters": { + "id": 3852, + "nodeType": "ParameterList", + "parameters": [], + "src": "613:0:16" + }, + "scope": 4240, + "src": "571:336:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "constant": false, + "id": 3882, + "name": "tree", + "nodeType": "VariableDeclaration", + "scope": 4240, + "src": "969:22:16", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree" + }, + "typeName": { + "contractScope": null, + "id": 3881, + "name": "MerkleTree", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3848, + "src": "969:10:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage_ptr", + "typeString": "struct Tree.MerkleTree" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 3903, + "nodeType": "Block", + "src": "1328:107:16", + "statements": [ + { + "assignments": [ + 3892 + ], + "declarations": [ + { + "constant": false, + "id": 3892, + "name": "siblings", + "nodeType": "VariableDeclaration", + "scope": 3903, + "src": "1338:25:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3890, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1338:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3891, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1338:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3896, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3894, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3886, + "src": "1378:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3893, + "name": "getSiblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4152, + "src": "1366:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (uint256) returns (bytes32[] memory)" + } + }, + "id": 3895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1366:18:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1338:46:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3898, + "name": "_dataBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3884, + "src": "1400:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3899, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3886, + "src": "1412:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3900, + "name": "siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3892, + "src": "1419:8:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 3897, + "name": "store", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3979, + "src": "1394:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory,uint256,bytes32[] memory)" + } + }, + "id": 3901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1394:34:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3902, + "nodeType": "ExpressionStatement", + "src": "1394:34:16" + } + ] + }, + "documentation": "@notice Update the stored tree / root with a particular dataBlock at some path (no siblings needed)\n@param _dataBlock The data block we're storing/verifying\n@param _path The path from the leaf to the root / the index of the leaf.", + "id": 3904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "update", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3884, + "name": "_dataBlock", + "nodeType": "VariableDeclaration", + "scope": 3904, + "src": "1281:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3883, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1281:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3886, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 3904, + "src": "1306:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1306:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1280:40:16" + }, + "returnParameters": { + "id": 3888, + "nodeType": "ParameterList", + "parameters": [], + "src": "1328:0:16" + }, + "scope": 4240, + "src": "1265:170:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3925, + "nodeType": "Block", + "src": "1756:106:16", + "statements": [ + { + "assignments": [ + 3914 + ], + "declarations": [ + { + "constant": false, + "id": 3914, + "name": "siblings", + "nodeType": "VariableDeclaration", + "scope": 3925, + "src": "1766:25:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3912, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1766:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3913, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1766:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3918, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3916, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3908, + "src": "1806:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3915, + "name": "getSiblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4152, + "src": "1794:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (uint256) returns (bytes32[] memory)" + } + }, + "id": 3917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1794:18:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1766:46:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3920, + "name": "_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3906, + "src": "1832:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3921, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3908, + "src": "1839:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3922, + "name": "siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3914, + "src": "1846:8:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 3919, + "name": "storeLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4068, + "src": "1822:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint256,bytes32[] memory)" + } + }, + "id": 3923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1822:33:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3924, + "nodeType": "ExpressionStatement", + "src": "1822:33:16" + } + ] + }, + "documentation": "@notice Update the stored tree / root with a particular leaf hash at some path (no siblings needed)\n@param _leaf The leaf we're storing/verifying\n @param _path The path from the leaf to the root / the index of the leaf.", + "id": 3926, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "updateLeaf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3906, + "name": "_leaf", + "nodeType": "VariableDeclaration", + "scope": 3926, + "src": "1719:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3905, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1719:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3908, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 3926, + "src": "1734:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1734:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1718:30:16" + }, + "returnParameters": { + "id": 3910, + "nodeType": "ParameterList", + "parameters": [], + "src": "1756:0:16" + }, + "scope": 4240, + "src": "1699:163:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3955, + "nodeType": "Block", + "src": "2300:168:16", + "statements": [ + { + "assignments": [ + 3937 + ], + "declarations": [ + { + "constant": false, + "id": 3937, + "name": "oldRoot", + "nodeType": "VariableDeclaration", + "scope": 3955, + "src": "2310:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3936, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2310:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3940, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3938, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "2328:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 3939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 3841, + "src": "2328:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2310:27:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3942, + "name": "_dataBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3928, + "src": "2353:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3943, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3930, + "src": "2365:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3944, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "2372:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 3941, + "name": "store", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3979, + "src": "2347:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory,uint256,bytes32[] memory)" + } + }, + "id": 3945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2347:35:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3946, + "nodeType": "ExpressionStatement", + "src": "2347:35:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 3951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3948, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "2400:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 3949, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 3841, + "src": "2400:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 3950, + "name": "oldRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3937, + "src": "2413:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2400:20:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4661696c65642073616d6520726f6f7420766572696669636174696f6e20636865636b21", + "id": 3952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2422:38:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4853fdd2165d64d315891cb36e54d56cd771e02da9512f7a4818f4c9125ba3bf", + "typeString": "literal_string \"Failed same root verification check!\"" + }, + "value": "Failed same root verification check!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4853fdd2165d64d315891cb36e54d56cd771e02da9512f7a4818f4c9125ba3bf", + "typeString": "literal_string \"Failed same root verification check!\"" + } + ], + "id": 3947, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5401, + "src": "2392:7:16", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:69:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3954, + "nodeType": "ExpressionStatement", + "src": "2392:69:16" + } + ] + }, + "documentation": "@notice Store a particular merkle proof & verify that the root did not change.\n@param _dataBlock The data block we're storing/verifying\n@param _path The path from the leaf to the root / the index of the leaf.\n@param _siblings The sibling nodes along the way.", + "id": 3956, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyAndStore", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3934, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3928, + "name": "_dataBlock", + "nodeType": "VariableDeclaration", + "scope": 3956, + "src": "2204:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3927, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2204:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3930, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 3956, + "src": "2237:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2237:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3933, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 3956, + "src": "2260:26:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3931, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2260:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3932, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2260:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2194:98:16" + }, + "returnParameters": { + "id": 3935, + "nodeType": "ParameterList", + "parameters": [], + "src": "2300:0:16" + }, + "scope": 4240, + "src": "2171:297:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 3978, + "nodeType": "Block", + "src": "2883:146:16", + "statements": [ + { + "assignments": [ + 3967 + ], + "declarations": [ + { + "constant": false, + "id": 3967, + "name": "leaf", + "nodeType": "VariableDeclaration", + "scope": 3978, + "src": "2943:12:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3966, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2943:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3971, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3969, + "name": "_dataBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3958, + "src": "2968:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 3968, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "2958:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 3970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2958:21:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2943:36:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3973, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3967, + "src": "2999:4:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3974, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3960, + "src": "3005:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 3975, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3963, + "src": "3012:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 3972, + "name": "storeLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4068, + "src": "2989:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint256,bytes32[] memory)" + } + }, + "id": 3976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2989:33:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3977, + "nodeType": "ExpressionStatement", + "src": "2989:33:16" + } + ] + }, + "documentation": "@notice Store a particular dataBlock & its intermediate nodes in the tree\n@param _dataBlock The data block we're storing.\n@param _path The path from the leaf to the root / the index of the leaf.\n@param _siblings The sibling nodes along the way.", + "id": 3979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "store", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3958, + "name": "_dataBlock", + "nodeType": "VariableDeclaration", + "scope": 3979, + "src": "2787:23:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3957, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2787:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3960, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 3979, + "src": "2820:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3959, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2820:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3963, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 3979, + "src": "2843:26:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3961, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2843:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3962, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2843:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2777:98:16" + }, + "returnParameters": { + "id": 3965, + "nodeType": "ParameterList", + "parameters": [], + "src": "2883:0:16" + }, + "scope": 4240, + "src": "2763:266:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4067, + "nodeType": "Block", + "src": "3409:863:16", + "statements": [ + { + "assignments": [ + 3990 + ], + "declarations": [ + { + "constant": false, + "id": 3990, + "name": "computedNode", + "nodeType": "VariableDeclaration", + "scope": 4067, + "src": "3458:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3989, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3458:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3992, + "initialValue": { + "argumentTypes": null, + "id": 3991, + "name": "_leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3981, + "src": "3481:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3458:28:16" + }, + { + "body": { + "id": 4059, + "nodeType": "Block", + "src": "3543:659:16", + "statements": [ + { + "assignments": [ + 4005 + ], + "declarations": [ + { + "constant": false, + "id": 4005, + "name": "parent", + "nodeType": "VariableDeclaration", + "scope": 4059, + "src": "3557:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4004, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3557:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4006, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3557:14:16" + }, + { + "assignments": [ + 4008 + ], + "declarations": [ + { + "constant": false, + "id": 4008, + "name": "sibling", + "nodeType": "VariableDeclaration", + "scope": 4059, + "src": "3585:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4007, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3585:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4012, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4009, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3986, + "src": "3603:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4011, + "indexExpression": { + "argumentTypes": null, + "id": 4010, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3994, + "src": "3613:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3603:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3585:30:16" + }, + { + "assignments": [ + 4014 + ], + "declarations": [ + { + "constant": false, + "id": 4014, + "name": "isComputedRightSibling", + "nodeType": "VariableDeclaration", + "scope": 4059, + "src": "3629:28:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4013, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3629:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4020, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4017, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3983, + "src": "3708:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4018, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3994, + "src": "3731:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4015, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "3660:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getNthBitFromRight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2516, + "src": "3660:30:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256,uint256) pure external returns (uint8)" + } + }, + "id": 4019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3660:86:16", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3629:117:16" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 4023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4021, + "name": "isComputedRightSibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "3764:22:16", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3790:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3764:27:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4053, + "nodeType": "Block", + "src": "3978:179:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4039, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4005, + "src": "3996:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4042, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "4027:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4043, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "4036:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4040, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "4005:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getParent", + "nodeType": "MemberAccess", + "referencedDeclaration": 2497, + "src": "4005:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure external returns (bytes32)" + } + }, + "id": 4044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4005:44:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3996:53:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4046, + "nodeType": "ExpressionStatement", + "src": "3996:53:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4048, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4005, + "src": "4112:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4049, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "4120:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4050, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "4129:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4047, + "name": "storeNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4213, + "src": "4102:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 4051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4102:40:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4052, + "nodeType": "ExpressionStatement", + "src": "4102:40:16" + } + ] + }, + "id": 4054, + "nodeType": "IfStatement", + "src": "3760:397:16", + "trueBody": { + "id": 4038, + "nodeType": "Block", + "src": "3793:179:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4024, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4005, + "src": "3811:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4027, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "3842:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4028, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "3856:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4025, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "3820:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getParent", + "nodeType": "MemberAccess", + "referencedDeclaration": 2497, + "src": "3820:21:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32,bytes32) pure external returns (bytes32)" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3820:44:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3811:53:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4031, + "nodeType": "ExpressionStatement", + "src": "3811:53:16" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4033, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4005, + "src": "3927:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4034, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "3935:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4035, + "name": "sibling", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4008, + "src": "3949:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4032, + "name": "storeNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4213, + "src": "3917:9:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 4036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3917:40:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4037, + "nodeType": "ExpressionStatement", + "src": "3917:40:16" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 4057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4055, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "4170:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4056, + "name": "parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4005, + "src": "4185:6:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4170:21:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4058, + "nodeType": "ExpressionStatement", + "src": "4170:21:16" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3997, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3994, + "src": "3516:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3998, + "name": "_siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3986, + "src": "3520:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 3999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3520:16:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3516:20:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4060, + "initializationExpression": { + "assignments": [ + 3994 + ], + "declarations": [ + { + "constant": false, + "id": 3994, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 4060, + "src": "3501:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3501:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3996, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 3995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3513:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3501:13:16" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 4002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3538:3:16", + "subExpression": { + "argumentTypes": null, + "id": 4001, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3994, + "src": "3538:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4003, + "nodeType": "ExpressionStatement", + "src": "3538:3:16" + }, + "nodeType": "ForStatement", + "src": "3496:706:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 4065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4061, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "4241:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4063, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 3841, + "src": "4241:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4064, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3990, + "src": "4253:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4241:24:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4066, + "nodeType": "ExpressionStatement", + "src": "4241:24:16" + } + ] + }, + "documentation": "@notice Store a particular leaf hash & its intermediate nodes in the tree\n@param _leaf The leaf we're storing.\n@param _path The path from the leaf to the root / the index of the leaf.\n@param _siblings The sibling nodes along the way.", + "id": 4068, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "storeLeaf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3981, + "name": "_leaf", + "nodeType": "VariableDeclaration", + "scope": 4068, + "src": "3332:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3980, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3332:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3983, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 4068, + "src": "3347:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3982, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3347:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3986, + "name": "_siblings", + "nodeType": "VariableDeclaration", + "scope": 4068, + "src": "3362:26:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3984, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3362:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3985, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3362:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3331:58:16" + }, + "returnParameters": { + "id": 3988, + "nodeType": "ParameterList", + "parameters": [], + "src": "3409:0:16" + }, + "scope": 4240, + "src": "3313:959:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4151, + "nodeType": "Block", + "src": "4641:656:16", + "statements": [ + { + "assignments": [ + 4079 + ], + "declarations": [ + { + "constant": false, + "id": 4079, + "name": "siblings", + "nodeType": "VariableDeclaration", + "scope": 4151, + "src": "4651:25:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4077, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4651:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4078, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4651:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4086, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4083, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "4693:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 3843, + "src": "4693:11:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4082, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4679:13:16", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$", + "typeString": "function (uint256) pure returns (bytes32[] memory)" + }, + "typeName": { + "baseType": { + "id": 4080, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4683:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4081, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4683:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + } + }, + "id": 4085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4679:26:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4651:54:16" + }, + { + "assignments": [ + 4088 + ], + "declarations": [ + { + "constant": false, + "id": 4088, + "name": "computedNode", + "nodeType": "VariableDeclaration", + "scope": 4151, + "src": "4715:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4087, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4715:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4091, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4089, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "4738:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4090, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 3841, + "src": "4738:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4715:32:16" + }, + { + "body": { + "id": 4147, + "nodeType": "Block", + "src": "4799:435:16", + "statements": [ + { + "assignments": [ + 4104 + ], + "declarations": [ + { + "constant": false, + "id": 4104, + "name": "siblingIndex", + "nodeType": "VariableDeclaration", + "scope": 4147, + "src": "4813:20:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4813:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4108, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4105, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4093, + "src": "4836:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 4106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4840:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4836:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4813:28:16" + }, + { + "assignments": [ + 4110, + 4112 + ], + "declarations": [ + { + "constant": false, + "id": 4110, + "name": "leftChild", + "nodeType": "VariableDeclaration", + "scope": 4147, + "src": "4856:17:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4109, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4856:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4112, + "name": "rightChild", + "nodeType": "VariableDeclaration", + "scope": 4147, + "src": "4875:18:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4111, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4875:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4116, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4114, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4088, + "src": "4909:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4113, + "name": "getChildren", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4239, + "src": "4897:11:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32,bytes32)" + } + }, + "id": 4115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4897:25:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4855:67:16" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 4123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4119, + "name": "_path", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4070, + "src": "4971:5:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4120, + "name": "siblingIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "4978:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4117, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "4940:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getNthBitFromRight", + "nodeType": "MemberAccess", + "referencedDeclaration": 2516, + "src": "4940:30:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_uint256_$_t_uint256_$returns$_t_uint8_$", + "typeString": "function (uint256,uint256) pure external returns (uint8)" + } + }, + "id": 4121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4940:51:16", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4995:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4940:56:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4145, + "nodeType": "Block", + "src": "5114:110:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4135, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4088, + "src": "5132:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4136, + "name": "rightChild", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4112, + "src": "5147:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5132:25:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4138, + "nodeType": "ExpressionStatement", + "src": "5132:25:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 4143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4139, + "name": "siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4079, + "src": "5175:8:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4141, + "indexExpression": { + "argumentTypes": null, + "id": 4140, + "name": "siblingIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "5184:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5175:22:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4142, + "name": "leftChild", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4110, + "src": "5200:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5175:34:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4144, + "nodeType": "ExpressionStatement", + "src": "5175:34:16" + } + ] + }, + "id": 4146, + "nodeType": "IfStatement", + "src": "4936:288:16", + "trueBody": { + "id": 4134, + "nodeType": "Block", + "src": "4998:110:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4124, + "name": "computedNode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4088, + "src": "5016:12:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4125, + "name": "leftChild", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4110, + "src": "5031:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5016:24:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4127, + "nodeType": "ExpressionStatement", + "src": "5016:24:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 4132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4128, + "name": "siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4079, + "src": "5058:8:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 4130, + "indexExpression": { + "argumentTypes": null, + "id": 4129, + "name": "siblingIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4104, + "src": "5067:12:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5058:22:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4131, + "name": "rightChild", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4112, + "src": "5083:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5058:35:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4133, + "nodeType": "ExpressionStatement", + "src": "5058:35:16" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4097, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4093, + "src": "4787:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4791:1:16", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4787:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4148, + "initializationExpression": { + "assignments": [ + 4093 + ], + "declarations": [ + { + "constant": false, + "id": 4093, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "4762:9:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4762:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4096, + "initialValue": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4094, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "4774:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4095, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 3843, + "src": "4774:11:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4762:23:16" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 4101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4794:3:16", + "subExpression": { + "argumentTypes": null, + "id": 4100, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4093, + "src": "4794:1:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4102, + "nodeType": "ExpressionStatement", + "src": "4794:3:16" + }, + "nodeType": "ForStatement", + "src": "4757:477:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 4149, + "name": "siblings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4079, + "src": "5282:8:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 4075, + "id": 4150, + "nodeType": "Return", + "src": "5275:15:16" + } + ] + }, + "documentation": "@notice Get siblings for a leaf at a particular index of the tree.\n This is used for updates which don't include sibling nodes.\n@param _path The path from the leaf to the root / the index of the leaf.\n@return The sibling nodes along the way.", + "id": 4152, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSiblings", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4070, + "name": "_path", + "nodeType": "VariableDeclaration", + "scope": 4152, + "src": "4592:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4592:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4591:15:16" + }, + "returnParameters": { + "id": 4075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4074, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4152, + "src": "4623:16:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4623:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4073, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4623:9:16", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4622:18:16" + }, + "scope": 4240, + "src": "4571:726:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4160, + "nodeType": "Block", + "src": "5534:33:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4157, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "5551:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 3841, + "src": "5551:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4156, + "id": 4159, + "nodeType": "Return", + "src": "5544:16:16" + } + ] + }, + "documentation": "@notice Get our stored tree's root\n@return The merkle root of the tree", + "id": 4161, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoot", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4153, + "nodeType": "ParameterList", + "parameters": [], + "src": "5501:2:16" + }, + "returnParameters": { + "id": 4156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4155, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4161, + "src": "5525:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5525:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5524:9:16" + }, + "scope": 4240, + "src": "5485:82:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4180, + "nodeType": "Block", + "src": "5816:65:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4168, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "5826:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4170, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 3841, + "src": "5826:9:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4171, + "name": "_root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4163, + "src": "5838:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5826:17:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4173, + "nodeType": "ExpressionStatement", + "src": "5826:17:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 4178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4174, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "5853:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4176, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 3843, + "src": "5853:11:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4177, + "name": "_height", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4165, + "src": "5867:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5853:21:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4179, + "nodeType": "ExpressionStatement", + "src": "5853:21:16" + } + ] + }, + "documentation": "@notice Set the tree root and height of the stored tree\n@param _root The merkle root of the tree\n@param _height The height of the tree", + "id": 4181, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setMerkleRootAndHeight", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4163, + "name": "_root", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5777:13:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4162, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5777:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4165, + "name": "_height", + "nodeType": "VariableDeclaration", + "scope": 4181, + "src": "5792:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5792:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5776:32:16" + }, + "returnParameters": { + "id": 4167, + "nodeType": "ParameterList", + "parameters": [], + "src": "5816:0:16" + }, + "scope": 4240, + "src": "5745:136:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4212, + "nodeType": "Block", + "src": "6229:155:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4190, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "6239:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4196, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nodes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3847, + "src": "6239:10:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 4197, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4194, + "name": "_parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4183, + "src": "6280:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4192, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "6250:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getLeftSiblingKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 2528, + "src": "6250:29:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure external returns (bytes32)" + } + }, + "id": 4195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6250:38:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6239:50:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4198, + "name": "_leftChild", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4185, + "src": "6292:10:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6239:63:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4200, + "nodeType": "ExpressionStatement", + "src": "6239:63:16" + }, + { + "expression": { + "argumentTypes": null, + "id": 4210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4201, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "6312:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nodes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3847, + "src": "6312:10:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 4208, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4205, + "name": "_parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4183, + "src": "6354:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4203, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "6323:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRightSiblingKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 2540, + "src": "6323:30:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure external returns (bytes32)" + } + }, + "id": 4206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6323:39:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6312:51:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4209, + "name": "_rightChild", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4187, + "src": "6366:11:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6312:65:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4211, + "nodeType": "ExpressionStatement", + "src": "6312:65:16" + } + ] + }, + "documentation": "@notice Store node in the (in-storage) merkle tree\n@param _parent The parent node\n@param _leftChild The left child of the parent in the tree\n@param _rightChild The right child of the parent in the tree", + "id": 4213, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "storeNode", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4183, + "name": "_parent", + "nodeType": "VariableDeclaration", + "scope": 4213, + "src": "6152:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4182, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6152:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4185, + "name": "_leftChild", + "nodeType": "VariableDeclaration", + "scope": 4213, + "src": "6169:18:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6169:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4187, + "name": "_rightChild", + "nodeType": "VariableDeclaration", + "scope": 4213, + "src": "6189:19:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4186, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6189:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6151:58:16" + }, + "returnParameters": { + "id": 4189, + "nodeType": "ParameterList", + "parameters": [], + "src": "6229:0:16" + }, + "scope": 4240, + "src": "6133:251:16", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4238, + "nodeType": "Block", + "src": "6681:163:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4222, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "6712:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4223, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nodes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3847, + "src": "6712:10:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 4228, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4226, + "name": "_parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4215, + "src": "6753:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4224, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "6723:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getLeftSiblingKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 2528, + "src": "6723:29:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure external returns (bytes32)" + } + }, + "id": 4227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6723:38:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6712:50:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4229, + "name": "tree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3882, + "src": "6776:4:16", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MerkleTree_$3848_storage", + "typeString": "struct Tree.MerkleTree storage ref" + } + }, + "id": 4230, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nodes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3847, + "src": "6776:10:16", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$", + "typeString": "mapping(bytes32 => bytes32)" + } + }, + "id": 4235, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4233, + "name": "_parent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4215, + "src": "6818:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4231, + "name": "merkleUtils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3839, + "src": "6787:11:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MerkleTreeUtils_$2588", + "typeString": "contract MerkleTreeUtils" + } + }, + "id": 4232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getRightSiblingKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 2540, + "src": "6787:30:16", + "typeDescriptions": { + "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) pure external returns (bytes32)" + } + }, + "id": 4234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6787:39:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6776:51:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 4236, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6698:139:16", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "functionReturnParameters": 4221, + "id": 4237, + "nodeType": "Return", + "src": "6691:146:16" + } + ] + }, + "documentation": "@notice Get the children of some parent in the tree\n@param _parent The parent node\n@return (rightChild, leftChild) -- the two children of the parent", + "id": 4239, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getChildren", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4215, + "name": "_parent", + "nodeType": "VariableDeclaration", + "scope": 4239, + "src": "6597:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4214, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6597:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6596:17:16" + }, + "returnParameters": { + "id": 4221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4218, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4239, + "src": "6659:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6659:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4220, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4239, + "src": "6668:7:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4219, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6668:7:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6658:18:16" + }, + "scope": 4240, + "src": "6576:268:16", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4241, + "src": "251:6595:16" + } + ], + "src": "0:6847:16" + }, + "id": 16 + }, + "contracts/interfaces/IERC20.sol": { + "ast": { + "absolutePath": "contracts/interfaces/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 4265 + ] + }, + "id": 4266, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4242, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:17" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4265, + "linearizedBaseContracts": [ + 4265 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4253, + "nodeType": "Block", + "src": "179:2:17", + "statements": [] + }, + "documentation": null, + "id": 4254, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4244, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4254, + "src": "96:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4243, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "96:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4246, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4254, + "src": "110:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "110:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4248, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4254, + "src": "122:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "122:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "95:41:17" + }, + "returnParameters": { + "id": 4252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4251, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4254, + "src": "169:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4250, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "169:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "168:6:17" + }, + "scope": 4265, + "src": "74:107:17", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4263, + "nodeType": "Block", + "src": "261:2:17", + "statements": [] + }, + "documentation": null, + "id": 4264, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4259, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4256, + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 4264, + "src": "205:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4255, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "205:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4258, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 4264, + "src": "224:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "224:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "204:34:17" + }, + "returnParameters": { + "id": 4262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4261, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4264, + "src": "255:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4260, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "255:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "254:6:17" + }, + "scope": 4265, + "src": "187:76:17", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4266, + "src": "52:213:17" + } + ], + "src": "0:266:17" + }, + "id": 17 + }, + "contracts/interfaces/ITokenRegistry.sol": { + "ast": { + "absolutePath": "contracts/interfaces/ITokenRegistry.sol", + "exportedSymbols": { + "ITokenRegistry": [ + 4303 + ] + }, + "id": 4304, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4267, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:18" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 4303, + "linearizedBaseContracts": [ + 4303 + ], + "name": "ITokenRegistry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4269, + "name": "Coordinator", + "nodeType": "VariableDeclaration", + "scope": 4303, + "src": "94:26:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4268, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "94:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4271, + "name": "numTokens", + "nodeType": "VariableDeclaration", + "scope": 4303, + "src": "126:24:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4270, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "126:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4275, + "name": "pendingRegistrations", + "nodeType": "VariableDeclaration", + "scope": 4303, + "src": "156:52:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 4274, + "keyType": { + "id": 4272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "164:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "156:24:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 4273, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "175:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4279, + "name": "registeredTokens", + "nodeType": "VariableDeclaration", + "scope": 4303, + "src": "214:51:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 4278, + "keyType": { + "id": 4276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "222:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "214:27:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 4277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "233:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 4289, + "nodeType": "Block", + "src": "299:61:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4282, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5397, + "src": "316:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "316:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 4284, + "name": "Coordinator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4269, + "src": "330:11:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "316:25:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4281, + "name": "assert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5386, + "src": "309:6:18", + "typeDescriptions": { + "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "309:33:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4287, + "nodeType": "ExpressionStatement", + "src": "309:33:18" + }, + { + "id": 4288, + "nodeType": "PlaceholderStatement", + "src": "352:1:18" + } + ] + }, + "documentation": null, + "id": 4290, + "name": "onlyCoordinator", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4280, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:2:18" + }, + "src": "272:88:18", + "visibility": "internal" + }, + { + "body": { + "id": 4295, + "nodeType": "Block", + "src": "430:2:18", + "statements": [] + }, + "documentation": null, + "id": 4296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requestTokenRegistration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4292, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 4296, + "src": "400:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "400:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "399:23:18" + }, + "returnParameters": { + "id": 4294, + "nodeType": "ParameterList", + "parameters": [], + "src": "430:0:18" + }, + "scope": 4303, + "src": "366:66:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4301, + "nodeType": "Block", + "src": "503:2:18", + "statements": [] + }, + "documentation": null, + "id": 4302, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finaliseTokenRegistration", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4298, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 4302, + "src": "473:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "473:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "472:23:18" + }, + "returnParameters": { + "id": 4300, + "nodeType": "ParameterList", + "parameters": [], + "src": "503:0:18" + }, + "scope": 4303, + "src": "438:67:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4304, + "src": "64:443:18" + } + ], + "src": "0:508:18" + }, + "id": 18 + }, + "contracts/libs/ECVerify.sol": { + "ast": { + "absolutePath": "contracts/libs/ECVerify.sol", + "exportedSymbols": { + "ECVerify": [ + 4429 + ] + }, + "id": 4430, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4305, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:19" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 4429, + "linearizedBaseContracts": [ + 4429 + ], + "name": "ECVerify", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4375, + "nodeType": "Block", + "src": "160:694:19", + "statements": [ + { + "assignments": [ + 4315 + ], + "declarations": [ + { + "constant": false, + "id": 4315, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 4375, + "src": "170:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4314, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "170:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4316, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "170:9:19" + }, + { + "assignments": [ + 4318 + ], + "declarations": [ + { + "constant": false, + "id": 4318, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 4375, + "src": "189:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4317, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "189:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4319, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "189:9:19" + }, + { + "assignments": [ + 4321 + ], + "declarations": [ + { + "constant": false, + "id": 4321, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 4375, + "src": "208:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4320, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "208:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4322, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "208:7:19" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4323, + "name": "sig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4309, + "src": "230:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "230:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3635", + "id": 4325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "244:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "230:16:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4332, + "nodeType": "IfStatement", + "src": "226:66:19", + "trueBody": { + "id": 4331, + "nodeType": "Block", + "src": "248:44:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 4328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "277:3:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "269:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "269:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4313, + "id": 4330, + "nodeType": "Return", + "src": "262:19:19" + } + ] + } + }, + { + "externalReferences": [ + { + "r": { + "declaration": 4315, + "isOffset": false, + "isSlot": false, + "src": "325:1:19", + "valueSize": 1 + } + }, + { + "sig": { + "declaration": 4309, + "isOffset": false, + "isSlot": false, + "src": "340:3:19", + "valueSize": 1 + } + }, + { + "v": { + "declaration": 4321, + "isOffset": false, + "isSlot": false, + "src": "399:1:19", + "valueSize": 1 + } + }, + { + "s": { + "declaration": 4318, + "isOffset": false, + "isSlot": false, + "src": "362:1:19", + "valueSize": 1 + } + }, + { + "sig": { + "declaration": 4309, + "isOffset": false, + "isSlot": false, + "src": "377:3:19", + "valueSize": 1 + } + }, + { + "sig": { + "declaration": 4309, + "isOffset": false, + "isSlot": false, + "src": "418:3:19", + "valueSize": 1 + } + } + ], + "id": 4333, + "nodeType": "InlineAssembly", + "operations": "{\n r := mload(add(sig, 32))\n s := mload(add(sig, 64))\n v := and(mload(add(sig, 65)), 255)\n}", + "src": "302:141:19" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 4336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4334, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "520:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 4335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "524:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "520:6:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4342, + "nodeType": "IfStatement", + "src": "516:44:19", + "trueBody": { + "id": 4341, + "nodeType": "Block", + "src": "528:32:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4337, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "542:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3237", + "id": 4338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "547:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "542:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 4340, + "nodeType": "ExpressionStatement", + "src": "542:7:19" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 4345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4343, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "574:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3237", + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "579:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "574:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4346, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "585:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3238", + "id": 4347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "590:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_28_by_1", + "typeString": "int_const 28" + }, + "value": "28" + }, + "src": "585:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "574:18:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4355, + "nodeType": "IfStatement", + "src": "570:68:19", + "trueBody": { + "id": 4354, + "nodeType": "Block", + "src": "594:44:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 4351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "623:3:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "615:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "615:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4313, + "id": 4353, + "nodeType": "Return", + "src": "608:19:19" + } + ] + } + }, + { + "assignments": [ + 4357 + ], + "declarations": [ + { + "constant": false, + "id": 4357, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 4375, + "src": "697:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4356, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "697:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4364, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4359, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4307, + "src": "724:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4360, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4321, + "src": "730:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 4361, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4315, + "src": "733:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4362, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4318, + "src": "736:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4358, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5389, + "src": "714:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 4363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "714:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "697:41:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4366, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "800:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 4368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "818:3:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "810:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "810:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "800:22:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4365, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "792:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "792:31:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4372, + "nodeType": "ExpressionStatement", + "src": "792:31:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 4373, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "841:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4313, + "id": 4374, + "nodeType": "Return", + "src": "834:13:19" + } + ] + }, + "documentation": null, + "id": 4376, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecrecovery", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4307, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 4376, + "src": "70:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4306, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "70:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4309, + "name": "sig", + "nodeType": "VariableDeclaration", + "scope": 4376, + "src": "84:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4308, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "84:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "69:32:19" + }, + "returnParameters": { + "id": 4313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4312, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4376, + "src": "147:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "147:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "146:9:19" + }, + "scope": 4429, + "src": "50:804:19", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4408, + "nodeType": "Block", + "src": "983:216:19", + "statements": [ + { + "assignments": [ + 4390 + ], + "declarations": [ + { + "constant": false, + "id": 4390, + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 4408, + "src": "1042:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1042:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4397, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4392, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4378, + "src": "1069:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4393, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4380, + "src": "1075:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 4394, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4382, + "src": "1078:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4395, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4384, + "src": "1081:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4391, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5389, + "src": "1059:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 4396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1059:24:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1042:41:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4399, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4390, + "src": "1145:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "307830", + "id": 4401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1163:3:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1155:7:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1155:12:19", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1145:22:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4398, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "1137:7:19", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 4404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1137:31:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4405, + "nodeType": "ExpressionStatement", + "src": "1137:31:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 4406, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4390, + "src": "1186:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4388, + "id": 4407, + "nodeType": "Return", + "src": "1179:13:19" + } + ] + }, + "documentation": null, + "id": 4409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecrecovery", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4378, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 4409, + "src": "880:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4377, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "880:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4380, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 4409, + "src": "894:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4379, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "894:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4382, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 4409, + "src": "903:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "903:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4384, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 4409, + "src": "914:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4383, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "914:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "879:45:19" + }, + "returnParameters": { + "id": 4388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4387, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4409, + "src": "970:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "970:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "969:9:19" + }, + "scope": 4429, + "src": "860:339:19", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4427, + "nodeType": "Block", + "src": "1326:55:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4420, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4415, + "src": "1343:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4422, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4411, + "src": "1364:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4423, + "name": "sig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "1370:3:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4421, + "name": "ecrecovery", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4376, + 4409 + ], + "referencedDeclaration": 4376, + "src": "1353:10:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 4424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1353:21:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1343:31:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4419, + "id": 4426, + "nodeType": "Return", + "src": "1336:38:19" + } + ] + }, + "documentation": null, + "id": 4428, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ecverify", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4411, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 4428, + "src": "1223:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4410, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1223:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4413, + "name": "sig", + "nodeType": "VariableDeclaration", + "scope": 4428, + "src": "1237:16:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4412, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1237:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4415, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 4428, + "src": "1255:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1255:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1222:48:19" + }, + "returnParameters": { + "id": 4419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4418, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4428, + "src": "1316:4:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4417, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1316:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1315:6:19" + }, + "scope": 4429, + "src": "1205:176:19", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4430, + "src": "27:1356:19" + } + ], + "src": "0:1384:19" + }, + "id": 19 + }, + "contracts/libs/ParamManager.sol": { + "ast": { + "absolutePath": "contracts/libs/ParamManager.sol", + "exportedSymbols": { + "ParamManager": [ + 4633 + ] + }, + "id": 4634, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4431, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:20" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 4633, + "linearizedBaseContracts": [ + 4633 + ], + "name": "ParamManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4440, + "nodeType": "Block", + "src": "111:52:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "6465706f7369745f6d616e61676572", + "id": 4437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "138:17:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a1d7caabcceec72bfb8870f1117a764f97ffaae5323cca64935467229b742207", + "typeString": "literal_string \"deposit_manager\"" + }, + "value": "deposit_manager" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a1d7caabcceec72bfb8870f1117a764f97ffaae5323cca64935467229b742207", + "typeString": "literal_string \"deposit_manager\"" + } + ], + "id": 4436, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "128:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "128:28:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4435, + "id": 4439, + "nodeType": "Return", + "src": "121:35:20" + } + ] + }, + "documentation": null, + "id": 4441, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "DEPOSIT_MANAGER", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4432, + "nodeType": "ParameterList", + "parameters": [], + "src": "78:2:20" + }, + "returnParameters": { + "id": 4435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4434, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4441, + "src": "102:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4433, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "102:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "101:9:20" + }, + "scope": 4633, + "src": "54:109:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4450, + "nodeType": "Block", + "src": "227:53:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "77697468647261775f6d616e61676572", + "id": 4447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "254:18:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7510029c1a90fc521ff8fe151dec2d580d248f5e3d33ea9b712dca09bc208d21", + "typeString": "literal_string \"withdraw_manager\"" + }, + "value": "withdraw_manager" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_7510029c1a90fc521ff8fe151dec2d580d248f5e3d33ea9b712dca09bc208d21", + "typeString": "literal_string \"withdraw_manager\"" + } + ], + "id": 4446, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "244:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "244:29:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4445, + "id": 4449, + "nodeType": "Return", + "src": "237:36:20" + } + ] + }, + "documentation": null, + "id": 4451, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "WITHDRAW_MANAGER", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4442, + "nodeType": "ParameterList", + "parameters": [], + "src": "194:2:20" + }, + "returnParameters": { + "id": 4445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4444, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4451, + "src": "218:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4443, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "218:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "217:9:20" + }, + "scope": 4633, + "src": "169:111:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4460, + "nodeType": "Block", + "src": "338:47:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "746573745f746f6b656e", + "id": 4457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "365:12:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ce8926b29c629c002ae6b4d20532a0b1778b6e9a871a17d35ddb4ef6bcc6faa0", + "typeString": "literal_string \"test_token\"" + }, + "value": "test_token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ce8926b29c629c002ae6b4d20532a0b1778b6e9a871a17d35ddb4ef6bcc6faa0", + "typeString": "literal_string \"test_token\"" + } + ], + "id": 4456, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "355:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "355:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4455, + "id": 4459, + "nodeType": "Return", + "src": "348:30:20" + } + ] + }, + "documentation": null, + "id": 4461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "TEST_TOKEN", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4452, + "nodeType": "ParameterList", + "parameters": [], + "src": "305:2:20" + }, + "returnParameters": { + "id": 4455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4454, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4461, + "src": "329:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4453, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "329:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "328:9:20" + }, + "scope": 4633, + "src": "286:99:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4470, + "nodeType": "Block", + "src": "444:48:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "726f6c6c75705f636f7265", + "id": 4467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "471:13:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fa022f320169fdd3118ef654b66ba96e2c6ee964da2f4fcfac37865a21b6dc47", + "typeString": "literal_string \"rollup_core\"" + }, + "value": "rollup_core" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_fa022f320169fdd3118ef654b66ba96e2c6ee964da2f4fcfac37865a21b6dc47", + "typeString": "literal_string \"rollup_core\"" + } + ], + "id": 4466, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "461:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "461:24:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4465, + "id": 4469, + "nodeType": "Return", + "src": "454:31:20" + } + ] + }, + "documentation": null, + "id": 4471, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ROLLUP_CORE", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4462, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:20" + }, + "returnParameters": { + "id": 4465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4464, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4471, + "src": "435:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4463, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "435:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "434:9:20" + }, + "scope": 4633, + "src": "391:101:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4480, + "nodeType": "Block", + "src": "553:50:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "6163636f756e74735f74726565", + "id": 4477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "580:15:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f3424eee2e4ee22bbe5fe591ed8cefbb2b96c7b53567eb42340b29f5631d0784", + "typeString": "literal_string \"accounts_tree\"" + }, + "value": "accounts_tree" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_f3424eee2e4ee22bbe5fe591ed8cefbb2b96c7b53567eb42340b29f5631d0784", + "typeString": "literal_string \"accounts_tree\"" + } + ], + "id": 4476, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "570:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "570:26:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4475, + "id": 4479, + "nodeType": "Return", + "src": "563:33:20" + } + ] + }, + "documentation": null, + "id": 4481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ACCOUNTS_TREE", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4472, + "nodeType": "ParameterList", + "parameters": [], + "src": "520:2:20" + }, + "returnParameters": { + "id": 4475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4474, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4481, + "src": "544:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "544:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "543:9:20" + }, + "scope": 4633, + "src": "498:105:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4490, + "nodeType": "Block", + "src": "664:50:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "62616c616e6365735f74726565", + "id": 4487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "691:15:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0eebd9bcac3da378127293ed684d9e26569ef446e122bf2c09f1627d30f65e37", + "typeString": "literal_string \"balances_tree\"" + }, + "value": "balances_tree" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0eebd9bcac3da378127293ed684d9e26569ef446e122bf2c09f1627d30f65e37", + "typeString": "literal_string \"balances_tree\"" + } + ], + "id": 4486, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "681:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "681:26:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4485, + "id": 4489, + "nodeType": "Return", + "src": "674:33:20" + } + ] + }, + "documentation": null, + "id": 4491, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "BALANCES_TREE", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4482, + "nodeType": "ParameterList", + "parameters": [], + "src": "631:2:20" + }, + "returnParameters": { + "id": 4485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4484, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4491, + "src": "655:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4483, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "655:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "654:9:20" + }, + "scope": 4633, + "src": "609:105:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4500, + "nodeType": "Block", + "src": "768:43:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "6c6f67676572", + "id": 4497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "795:8:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ca66634724c03eb42b085384d43d5c72f803d06869ba1ecbf5e151ff59353e16", + "typeString": "literal_string \"logger\"" + }, + "value": "logger" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_ca66634724c03eb42b085384d43d5c72f803d06869ba1ecbf5e151ff59353e16", + "typeString": "literal_string \"logger\"" + } + ], + "id": 4496, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "785:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "785:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4495, + "id": 4499, + "nodeType": "Return", + "src": "778:26:20" + } + ] + }, + "documentation": null, + "id": 4501, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "LOGGER", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4492, + "nodeType": "ParameterList", + "parameters": [], + "src": "735:2:20" + }, + "returnParameters": { + "id": 4495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4494, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4501, + "src": "759:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4493, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "759:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "758:9:20" + }, + "scope": 4633, + "src": "720:91:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4510, + "nodeType": "Block", + "src": "871:47:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "6d65726b6c655f6c6962", + "id": 4507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "898:12:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_85590069b93fd22b854587d644eb793804eca78181fe744b66e11d6ab88f3351", + "typeString": "literal_string \"merkle_lib\"" + }, + "value": "merkle_lib" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_85590069b93fd22b854587d644eb793804eca78181fe744b66e11d6ab88f3351", + "typeString": "literal_string \"merkle_lib\"" + } + ], + "id": 4506, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "888:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "888:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4505, + "id": 4509, + "nodeType": "Return", + "src": "881:30:20" + } + ] + }, + "documentation": null, + "id": 4511, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "MERKLE_UTILS", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4502, + "nodeType": "ParameterList", + "parameters": [], + "src": "838:2:20" + }, + "returnParameters": { + "id": 4505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4504, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4511, + "src": "862:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4503, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "862:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "861:9:20" + }, + "scope": 4633, + "src": "817:101:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4520, + "nodeType": "Block", + "src": "979:50:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "706172616d5f6d616e61676572", + "id": 4517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1006:15:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b624a521866f56e0b26e20a98f37a151d290356ffe0f624da44c1f5c1da9919e", + "typeString": "literal_string \"param_manager\"" + }, + "value": "param_manager" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_b624a521866f56e0b26e20a98f37a151d290356ffe0f624da44c1f5c1da9919e", + "typeString": "literal_string \"param_manager\"" + } + ], + "id": 4516, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "996:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "996:26:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4515, + "id": 4519, + "nodeType": "Return", + "src": "989:33:20" + } + ] + }, + "documentation": null, + "id": 4521, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "PARAM_MANAGER", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4512, + "nodeType": "ParameterList", + "parameters": [], + "src": "946:2:20" + }, + "returnParameters": { + "id": 4515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4514, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4521, + "src": "970:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4513, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "970:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "969:9:20" + }, + "scope": 4633, + "src": "924:105:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4530, + "nodeType": "Block", + "src": "1091:51:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "746f6b656e5f7265676973747279", + "id": 4527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1118:16:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726357bb6d2e726eeebe528904057fd7179ea9f65048fc2a62edc8c17cca2594", + "typeString": "literal_string \"token_registry\"" + }, + "value": "token_registry" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_726357bb6d2e726eeebe528904057fd7179ea9f65048fc2a62edc8c17cca2594", + "typeString": "literal_string \"token_registry\"" + } + ], + "id": 4526, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "1108:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1108:27:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4525, + "id": 4529, + "nodeType": "Return", + "src": "1101:34:20" + } + ] + }, + "documentation": null, + "id": 4531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "TOKEN_REGISTRY", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4522, + "nodeType": "ParameterList", + "parameters": [], + "src": "1058:2:20" + }, + "returnParameters": { + "id": 4525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4524, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4531, + "src": "1082:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4523, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1082:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1081:9:20" + }, + "scope": 4633, + "src": "1035:107:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4534, + "name": "_MAX_DEPTH", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "1148:36:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4532, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1148:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "34", + "id": 4533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1183:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "visibility": "public" + }, + { + "body": { + "id": 4541, + "nodeType": "Block", + "src": "1240:34:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4539, + "name": "_MAX_DEPTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4534, + "src": "1257:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 4538, + "id": 4540, + "nodeType": "Return", + "src": "1250:17:20" + } + ] + }, + "documentation": null, + "id": 4542, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "MAX_DEPTH", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4535, + "nodeType": "ParameterList", + "parameters": [], + "src": "1209:2:20" + }, + "returnParameters": { + "id": 4538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4537, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4542, + "src": "1233:5:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4536, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1233:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1232:7:20" + }, + "scope": 4633, + "src": "1191:83:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4545, + "name": "_MAX_DEPOSIT_SUBTREE", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "1280:46:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4543, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1280:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "32", + "id": 4544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1325:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "public" + }, + { + "body": { + "id": 4552, + "nodeType": "Block", + "src": "1392:44:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4550, + "name": "_MAX_DEPOSIT_SUBTREE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4545, + "src": "1409:20:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 4549, + "id": 4551, + "nodeType": "Return", + "src": "1402:27:20" + } + ] + }, + "documentation": null, + "id": 4553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "MAX_DEPOSIT_SUBTREE", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4546, + "nodeType": "ParameterList", + "parameters": [], + "src": "1361:2:20" + }, + "returnParameters": { + "id": 4549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4548, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4553, + "src": "1385:5:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4547, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1385:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1384:7:20" + }, + "scope": 4633, + "src": "1333:103:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4558, + "name": "_CHAIN_ID", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "1442:57:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4554, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1442:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "6f7072752d313233", + "id": 4556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:10:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d96fb8b0333459f1335718bbd99b9c66344c6a8cb33f35902d7d870287fe4946", + "typeString": "literal_string \"opru-123\"" + }, + "value": "opru-123" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_d96fb8b0333459f1335718bbd99b9c66344c6a8cb33f35902d7d870287fe4946", + "typeString": "literal_string \"opru-123\"" + } + ], + "id": 4555, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "1478:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1478:21:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "body": { + "id": 4565, + "nodeType": "Block", + "src": "1556:33:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4563, + "name": "_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4558, + "src": "1573:9:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4562, + "id": 4564, + "nodeType": "Return", + "src": "1566:16:20" + } + ] + }, + "documentation": null, + "id": 4566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "CHAIN_ID", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4559, + "nodeType": "ParameterList", + "parameters": [], + "src": "1523:2:20" + }, + "returnParameters": { + "id": 4562, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4561, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "1547:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4560, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1547:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1546:9:20" + }, + "scope": 4633, + "src": "1506:83:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4569, + "name": "_TIME_TO_FINALISE", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "1730:50:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1730:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "37", + "id": 4568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1774:6:20", + "subdenomination": "days", + "typeDescriptions": { + "typeIdentifier": "t_rational_604800_by_1", + "typeString": "int_const 604800" + }, + "value": "7" + }, + "visibility": "public" + }, + { + "body": { + "id": 4576, + "nodeType": "Block", + "src": "1845:41:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4574, + "name": "_TIME_TO_FINALISE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4569, + "src": "1862:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4573, + "id": 4575, + "nodeType": "Return", + "src": "1855:24:20" + } + ] + }, + "documentation": null, + "id": 4577, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "TIME_TO_FINALISE", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4570, + "nodeType": "ParameterList", + "parameters": [], + "src": "1812:2:20" + }, + "returnParameters": { + "id": 4573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4572, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4577, + "src": "1836:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1836:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1835:9:20" + }, + "scope": 4633, + "src": "1787:99:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4580, + "name": "_MIN_GAS_LIMIT_LEFT", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "1939:52:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1939:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "313030303030", + "id": 4579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1985:6:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100000_by_1", + "typeString": "int_const 100000" + }, + "value": "100000" + }, + "visibility": "public" + }, + { + "body": { + "id": 4587, + "nodeType": "Block", + "src": "2058:43:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4585, + "name": "_MIN_GAS_LIMIT_LEFT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "2075:19:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4584, + "id": 4586, + "nodeType": "Return", + "src": "2068:26:20" + } + ] + }, + "documentation": null, + "id": 4588, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "MIN_GAS_LIMIT_LEFT", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4581, + "nodeType": "ParameterList", + "parameters": [], + "src": "2025:2:20" + }, + "returnParameters": { + "id": 4584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4583, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4588, + "src": "2049:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2049:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2048:9:20" + }, + "scope": 4633, + "src": "1998:103:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4591, + "name": "_MAX_TXS_PER_BATCH", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "2107:47:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130", + "id": 4590, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2152:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "public" + }, + { + "body": { + "id": 4598, + "nodeType": "Block", + "src": "2220:42:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4596, + "name": "_MAX_TXS_PER_BATCH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4591, + "src": "2237:18:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4595, + "id": 4597, + "nodeType": "Return", + "src": "2230:25:20" + } + ] + }, + "documentation": null, + "id": 4599, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "MAX_TXS_PER_BATCH", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4592, + "nodeType": "ParameterList", + "parameters": [], + "src": "2187:2:20" + }, + "returnParameters": { + "id": 4595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4594, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4599, + "src": "2211:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2211:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2210:9:20" + }, + "scope": 4633, + "src": "2161:101:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4602, + "name": "_STAKE_AMOUNT", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "2268:42:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2268:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3332", + "id": 4601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2308:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "visibility": "public" + }, + { + "body": { + "id": 4609, + "nodeType": "Block", + "src": "2371:37:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4607, + "name": "_STAKE_AMOUNT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4602, + "src": "2388:13:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4606, + "id": 4608, + "nodeType": "Return", + "src": "2381:20:20" + } + ] + }, + "documentation": null, + "id": 4610, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "STAKE_AMOUNT", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4603, + "nodeType": "ParameterList", + "parameters": [], + "src": "2338:2:20" + }, + "returnParameters": { + "id": 4606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4605, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4610, + "src": "2362:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2362:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2361:9:20" + }, + "scope": 4633, + "src": "2317:91:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4613, + "name": "_BURN_ADDRESS", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "2414:83:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2414:15:20", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030", + "id": 4612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2455:42:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0x0000000000000000000000000000000000000000" + }, + "visibility": "internal" + }, + { + "body": { + "id": 4620, + "nodeType": "Block", + "src": "2566:37:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4618, + "name": "_BURN_ADDRESS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4613, + "src": "2583:13:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4617, + "id": 4619, + "nodeType": "Return", + "src": "2576:20:20" + } + ] + }, + "documentation": null, + "id": 4621, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "BURN_ADDRESS", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4614, + "nodeType": "ParameterList", + "parameters": [], + "src": "2525:2:20" + }, + "returnParameters": { + "id": 4617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4616, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4621, + "src": "2549:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 4615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2549:15:20", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2548:17:20" + }, + "scope": 4633, + "src": "2504:99:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "constant": true, + "id": 4624, + "name": "_ZERO_BYTES32", + "nodeType": "VariableDeclaration", + "scope": 4633, + "src": "2609:106:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4622, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2609:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030", + "id": 4623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2649:66:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "visibility": "public" + }, + { + "body": { + "id": 4631, + "nodeType": "Block", + "src": "2776:37:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4629, + "name": "_ZERO_BYTES32", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4624, + "src": "2793:13:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4628, + "id": 4630, + "nodeType": "Return", + "src": "2786:20:20" + } + ] + }, + "documentation": null, + "id": 4632, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ZERO_BYTES32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4625, + "nodeType": "ParameterList", + "parameters": [], + "src": "2743:2:20" + }, + "returnParameters": { + "id": 4628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4627, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4632, + "src": "2767:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4626, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2767:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2766:9:20" + }, + "scope": 4633, + "src": "2722:91:20", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4634, + "src": "27:2788:20" + } + ], + "src": "0:2816:20" + }, + "id": 20 + }, + "contracts/libs/RollupUtils.sol": { + "ast": { + "absolutePath": "contracts/libs/RollupUtils.sol", + "exportedSymbols": { + "RollupUtils": [ + 4760 + ] + }, + "id": 4761, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4635, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:21" + }, + { + "id": 4636, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:21" + }, + { + "absolutePath": "contracts/libs/Types.sol", + "file": "./Types.sol", + "id": 4638, + "nodeType": "ImportDirective", + "scope": 4761, + "sourceUnit": 4835, + "src": "60:34:21", + "symbolAliases": [ + { + "foreign": 4637, + "local": null + } + ], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 4760, + "linearizedBaseContracts": [ + 4760 + ], + "name": "RollupUtils", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4653, + "nodeType": "Block", + "src": "296:63:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4648, + "name": "_PDA_Leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4640, + "src": "334:9:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory_ptr", + "typeString": "struct Types.PDALeaf memory" + } + }, + "id": 4649, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "pubkey", + "nodeType": "MemberAccess", + "referencedDeclaration": 4764, + "src": "334:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 4646, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "323:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "323:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "323:28:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4645, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "313:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "313:39:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4644, + "id": 4652, + "nodeType": "Return", + "src": "306:46:21" + } + ] + }, + "documentation": null, + "id": 4654, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "PDALeafToHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4640, + "name": "_PDA_Leaf", + "nodeType": "VariableDeclaration", + "scope": 4654, + "src": "206:30:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_memory_ptr", + "typeString": "struct Types.PDALeaf" + }, + "typeName": { + "contractScope": null, + "id": 4639, + "name": "Types.PDALeaf", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4765, + "src": "206:13:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_storage_ptr", + "typeString": "struct Types.PDALeaf" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "205:32:21" + }, + "returnParameters": { + "id": 4644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4643, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4654, + "src": "283:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "283:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "282:9:21" + }, + "scope": 4760, + "src": "183:176:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4671, + "nodeType": "Block", + "src": "601:88:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4663, + "name": "original_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "611:16:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 4665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4812, + "src": "611:24:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4666, + "name": "new_balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4658, + "src": "638:11:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "611:38:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4668, + "nodeType": "ExpressionStatement", + "src": "611:38:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 4669, + "name": "original_account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "666:16:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "functionReturnParameters": 4662, + "id": 4670, + "nodeType": "Return", + "src": "659:23:21" + } + ] + }, + "documentation": null, + "id": 4672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "UpdateBalanceInAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4656, + "name": "original_account", + "nodeType": "VariableDeclaration", + "scope": 4672, + "src": "461:41:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4655, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "461:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4658, + "name": "new_balance", + "nodeType": "VariableDeclaration", + "scope": 4672, + "src": "512:19:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "512:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "451:86:21" + }, + "returnParameters": { + "id": 4662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4661, + "name": "updated_account", + "nodeType": "VariableDeclaration", + "scope": 4672, + "src": "559:40:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4660, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "559:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "558:42:21" + }, + "scope": 4760, + "src": "420:269:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4682, + "nodeType": "Block", + "src": "815:39:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4679, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4674, + "src": "832:7:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 4680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4812, + "src": "832:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4678, + "id": 4681, + "nodeType": "Return", + "src": "825:22:21" + } + ] + }, + "documentation": null, + "id": 4683, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "BalanceFromAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4674, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4683, + "src": "723:32:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4673, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "723:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "722:34:21" + }, + "returnParameters": { + "id": 4678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4677, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4683, + "src": "802:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4676, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "802:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "801:9:21" + }, + "scope": 4760, + "src": "695:159:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4696, + "nodeType": "Block", + "src": "977:60:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4692, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4685, + "src": "1021:7:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + ], + "id": 4691, + "name": "BytesFromAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4717, + "src": "1004:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_UserAccount_$4815_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.UserAccount memory) pure returns (bytes memory)" + } + }, + "id": 4693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1004:25:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4690, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "994:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "994:36:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4689, + "id": 4695, + "nodeType": "Return", + "src": "987:43:21" + } + ] + }, + "documentation": null, + "id": 4697, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "HashFromAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4685, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4697, + "src": "885:32:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4684, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "885:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "884:34:21" + }, + "returnParameters": { + "id": 4689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4688, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4697, + "src": "964:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4687, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "964:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "963:9:21" + }, + "scope": 4760, + "src": "860:177:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4716, + "nodeType": "Block", + "src": "1166:187:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4706, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4699, + "src": "1223:7:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 4707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "ID", + "nodeType": "MemberAccess", + "referencedDeclaration": 4808, + "src": "1223:10:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4708, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4699, + "src": "1251:7:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 4709, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4812, + "src": "1251:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4710, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4699, + "src": "1284:7:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 4711, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 4814, + "src": "1284:13:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4712, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4699, + "src": "1315:7:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount memory" + } + }, + "id": 4713, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenType", + "nodeType": "MemberAccess", + "referencedDeclaration": 4810, + "src": "1315:17:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4704, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "1195:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1195:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1195:151:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 4703, + "id": 4715, + "nodeType": "Return", + "src": "1176:170:21" + } + ] + }, + "documentation": null, + "id": 4717, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "BytesFromAccount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4699, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4717, + "src": "1069:32:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_memory_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4698, + "name": "Types.UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "1069:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1068:34:21" + }, + "returnParameters": { + "id": 4703, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4702, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4717, + "src": "1148:12:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4701, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1148:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1147:14:21" + }, + "scope": 4760, + "src": "1043:310:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4729, + "nodeType": "Block", + "src": "1529:39:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4726, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4719, + "src": "1557:3:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 4724, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5384, + "src": "1546:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1546:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1546:15:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 4723, + "id": 4728, + "nodeType": "Return", + "src": "1539:22:21" + } + ] + }, + "documentation": null, + "id": 4730, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "BytesFromTx", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4719, + "name": "_tx", + "nodeType": "VariableDeclaration", + "scope": 4730, + "src": "1436:28:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction" + }, + "typeName": { + "contractScope": null, + "id": 4718, + "name": "Types.Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4791, + "src": "1436:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_storage_ptr", + "typeString": "struct Types.Transaction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1435:30:21" + }, + "returnParameters": { + "id": 4723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4722, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4730, + "src": "1511:12:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4721, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1511:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1510:14:21" + }, + "scope": 4760, + "src": "1415:153:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4743, + "nodeType": "Block", + "src": "1682:51:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4739, + "name": "_tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4732, + "src": "1721:3:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction memory" + } + ], + "id": 4738, + "name": "BytesFromTx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4730, + "src": "1709:11:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Transaction_$4791_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Types.Transaction memory) pure returns (bytes memory)" + } + }, + "id": 4740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1709:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4737, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "1699:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1699:27:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4736, + "id": 4742, + "nodeType": "Return", + "src": "1692:34:21" + } + ] + }, + "documentation": null, + "id": 4744, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "HashFromTx", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4732, + "name": "_tx", + "nodeType": "VariableDeclaration", + "scope": 4744, + "src": "1594:28:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_memory_ptr", + "typeString": "struct Types.Transaction" + }, + "typeName": { + "contractScope": null, + "id": 4731, + "name": "Types.Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4791, + "src": "1594:17:21", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_storage_ptr", + "typeString": "struct Types.Transaction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1593:30:21" + }, + "returnParameters": { + "id": 4736, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4735, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4744, + "src": "1669:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4734, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1669:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1668:9:21" + }, + "scope": 4760, + "src": "1574:159:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4758, + "nodeType": "Block", + "src": "2024:132:21", + "statements": [ + { + "assignments": [ + 4752 + ], + "declarations": [ + { + "constant": false, + "id": 4752, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 4758, + "src": "2034:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4751, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2034:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4756, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4754, + "name": "pub", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4746, + "src": "2059:3:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4753, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5391, + "src": "2049:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2049:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2034:29:21" + }, + { + "externalReferences": [ + { + "addr": { + "declaration": 4749, + "isOffset": false, + "isSlot": false, + "src": "2124:4:21", + "valueSize": 1 + } + }, + { + "hash": { + "declaration": 4752, + "isOffset": false, + "isSlot": false, + "src": "2106:4:21", + "valueSize": 1 + } + } + ], + "id": 4757, + "nodeType": "InlineAssembly", + "operations": "{\n mstore(0, hash)\n addr := mload(0)\n}", + "src": "2073:77:21" + } + ] + }, + "documentation": "@notice Calculates the address from the pubkey\n@param pub is the pubkey\n@return Returns the address that has been calculated from the pubkey", + "id": 4759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calculateAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4747, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4746, + "name": "pub", + "nodeType": "VariableDeclaration", + "scope": 4759, + "src": "1943:16:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4745, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1943:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1942:18:21" + }, + "returnParameters": { + "id": 4750, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4749, + "name": "addr", + "nodeType": "VariableDeclaration", + "scope": 4759, + "src": "2006:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4748, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2006:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2005:14:21" + }, + "scope": 4760, + "src": "1917:239:21", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4761, + "src": "97:2061:21" + } + ], + "src": "0:2159:21" + }, + "id": 21 + }, + "contracts/libs/Types.sol": { + "ast": { + "absolutePath": "contracts/libs/Types.sol", + "exportedSymbols": { + "Types": [ + 4834 + ] + }, + "id": 4835, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4762, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:22" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": "@title DataTypes", + "fullyImplemented": true, + "id": 4834, + "linearizedBaseContracts": [ + 4834 + ], + "name": "Types", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Types.PDALeaf", + "id": 4765, + "members": [ + { + "constant": false, + "id": 4764, + "name": "pubkey", + "nodeType": "VariableDeclaration", + "scope": 4765, + "src": "174:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4763, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "174:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "PDALeaf", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "149:44:22", + "visibility": "public" + }, + { + "canonicalName": "Types.Batch", + "id": 4780, + "members": [ + { + "constant": false, + "id": 4767, + "name": "stateRoot", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "301:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4766, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "301:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4769, + "name": "accountRoot", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "328:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4768, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "328:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4771, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "357:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "357:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4773, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "384:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4772, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "384:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4775, + "name": "stakeCommitted", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "408:22:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "408:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4777, + "name": "finalisesOn", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "440:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4776, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "440:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4779, + "name": "timestamp", + "nodeType": "VariableDeclaration", + "scope": 4780, + "src": "469:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "469:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Batch", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "278:215:22", + "visibility": "public" + }, + { + "canonicalName": "Types.Transaction", + "id": 4791, + "members": [ + { + "constant": false, + "id": 4782, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4791, + "src": "619:16:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4781, + "name": "UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "619:11:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4784, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4791, + "src": "645:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4783, + "name": "UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "645:11:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4786, + "name": "tokenType", + "nodeType": "VariableDeclaration", + "scope": 4791, + "src": "669:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4785, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "669:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4788, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4791, + "src": "696:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 4787, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "696:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4790, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 4791, + "src": "719:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4789, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "719:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Transaction", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "590:151:22", + "visibility": "public" + }, + { + "canonicalName": "Types.AccountInclusionProof", + "id": 4796, + "members": [ + { + "constant": false, + "id": 4793, + "name": "pathToAccount", + "nodeType": "VariableDeclaration", + "scope": 4796, + "src": "955:21:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4792, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "955:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4795, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 4796, + "src": "986:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + }, + "typeName": { + "contractScope": null, + "id": 4794, + "name": "UserAccount", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4815, + "src": "986:11:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserAccount_$4815_storage_ptr", + "typeString": "struct Types.UserAccount" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "AccountInclusionProof", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "916:96:22", + "visibility": "public" + }, + { + "canonicalName": "Types.TranasctionInclusionProof", + "id": 4801, + "members": [ + { + "constant": false, + "id": 4798, + "name": "pathToTx", + "nodeType": "VariableDeclaration", + "scope": 4801, + "src": "1061:16:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1061:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4800, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 4801, + "src": "1087:16:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_storage_ptr", + "typeString": "struct Types.Transaction" + }, + "typeName": { + "contractScope": null, + "id": 4799, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4791, + "src": "1087:11:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$4791_storage_ptr", + "typeString": "struct Types.Transaction" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "TranasctionInclusionProof", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "1018:92:22", + "visibility": "public" + }, + { + "canonicalName": "Types.PDAInclusionProof", + "id": 4806, + "members": [ + { + "constant": false, + "id": 4803, + "name": "pathToPubkey", + "nodeType": "VariableDeclaration", + "scope": 4806, + "src": "1151:20:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1151:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4805, + "name": "pubkey_leaf", + "nodeType": "VariableDeclaration", + "scope": 4806, + "src": "1181:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_storage_ptr", + "typeString": "struct Types.PDALeaf" + }, + "typeName": { + "contractScope": null, + "id": 4804, + "name": "PDALeaf", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4765, + "src": "1181:7:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDALeaf_$4765_storage_ptr", + "typeString": "struct Types.PDALeaf" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "PDAInclusionProof", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "1116:91:22", + "visibility": "public" + }, + { + "canonicalName": "Types.UserAccount", + "id": 4815, + "members": [ + { + "constant": false, + "id": 4808, + "name": "ID", + "nodeType": "VariableDeclaration", + "scope": 4815, + "src": "1377:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4807, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1377:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4810, + "name": "tokenType", + "nodeType": "VariableDeclaration", + "scope": 4815, + "src": "1397:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4809, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1397:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4812, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 4815, + "src": "1424:15:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1424:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4814, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 4815, + "src": "1449:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4813, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1449:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "UserAccount", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "1292:177:22", + "visibility": "public" + }, + { + "canonicalName": "Types.AccountMerkleProof", + "id": 4821, + "members": [ + { + "constant": false, + "id": 4817, + "name": "accountIP", + "nodeType": "VariableDeclaration", + "scope": 4821, + "src": "1511:31:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_storage_ptr", + "typeString": "struct Types.AccountInclusionProof" + }, + "typeName": { + "contractScope": null, + "id": 4816, + "name": "AccountInclusionProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4796, + "src": "1511:21:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccountInclusionProof_$4796_storage_ptr", + "typeString": "struct Types.AccountInclusionProof" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4820, + "name": "siblings", + "nodeType": "VariableDeclaration", + "scope": 4821, + "src": "1552:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4818, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1552:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4819, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1552:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "AccountMerkleProof", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "1475:102:22", + "visibility": "public" + }, + { + "canonicalName": "Types.TransactionMerkleProof", + "id": 4827, + "members": [ + { + "constant": false, + "id": 4823, + "name": "_tx", + "nodeType": "VariableDeclaration", + "scope": 4827, + "src": "1623:29:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TranasctionInclusionProof_$4801_storage_ptr", + "typeString": "struct Types.TranasctionInclusionProof" + }, + "typeName": { + "contractScope": null, + "id": 4822, + "name": "TranasctionInclusionProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4801, + "src": "1623:25:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TranasctionInclusionProof_$4801_storage_ptr", + "typeString": "struct Types.TranasctionInclusionProof" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4826, + "name": "siblings", + "nodeType": "VariableDeclaration", + "scope": 4827, + "src": "1662:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1662:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4825, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1662:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "TransactionMerkleProof", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "1583:104:22", + "visibility": "public" + }, + { + "canonicalName": "Types.PDAMerkleProof", + "id": 4833, + "members": [ + { + "constant": false, + "id": 4829, + "name": "_pda", + "nodeType": "VariableDeclaration", + "scope": 4833, + "src": "1725:22:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAInclusionProof_$4806_storage_ptr", + "typeString": "struct Types.PDAInclusionProof" + }, + "typeName": { + "contractScope": null, + "id": 4828, + "name": "PDAInclusionProof", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4806, + "src": "1725:17:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PDAInclusionProof_$4806_storage_ptr", + "typeString": "struct Types.PDAInclusionProof" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4832, + "name": "siblings", + "nodeType": "VariableDeclaration", + "scope": 4833, + "src": "1757:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 4830, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1757:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4831, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1757:9:22", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "PDAMerkleProof", + "nodeType": "StructDefinition", + "scope": 4834, + "src": "1693:89:22", + "visibility": "public" + } + ], + "scope": 4835, + "src": "55:1729:22" + } + ], + "src": "0:1785:22" + }, + "id": 22 + }, + "contracts/logger.sol": { + "ast": { + "absolutePath": "contracts/logger.sol", + "exportedSymbols": { + "Logger": [ + 5058 + ] + }, + "id": 5059, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4836, + "literals": [ + "solidity", + "^", + "0.5", + ".15" + ], + "nodeType": "PragmaDirective", + "src": "0:24:23" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5058, + "linearizedBaseContracts": [ + 5058 + ], + "name": "Logger", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": "*******************\nRollup Contract ********************", + "id": 4846, + "name": "NewBatch", + "nodeType": "EventDefinition", + "parameters": { + "id": 4845, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4838, + "indexed": false, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 4846, + "src": "152:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "152:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4840, + "indexed": false, + "name": "txroot", + "nodeType": "VariableDeclaration", + "scope": 4846, + "src": "179:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4839, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "179:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4842, + "indexed": false, + "name": "updatedRoot", + "nodeType": "VariableDeclaration", + "scope": 4846, + "src": "203:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4841, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "203:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4844, + "indexed": false, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 4846, + "src": "232:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4843, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "232:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "142:109:23" + }, + "src": "128:124:23" + }, + { + "body": { + "id": 4864, + "nodeType": "Block", + "src": "395:69:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4858, + "name": "committer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4848, + "src": "419:9:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4859, + "name": "txroot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4850, + "src": "430:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4860, + "name": "updatedRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4852, + "src": "438:11:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4861, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4854, + "src": "451:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4857, + "name": "NewBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4846, + "src": "410:8:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes32,uint256)" + } + }, + "id": 4862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "410:47:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4863, + "nodeType": "EmitStatement", + "src": "405:52:23" + } + ] + }, + "documentation": null, + "id": 4865, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logNewBatch", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4848, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 4865, + "src": "288:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4847, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "288:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4850, + "name": "txroot", + "nodeType": "VariableDeclaration", + "scope": 4865, + "src": "315:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4849, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "315:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4852, + "name": "updatedRoot", + "nodeType": "VariableDeclaration", + "scope": 4865, + "src": "339:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4851, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "339:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4854, + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 4865, + "src": "368:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "368:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "278:109:23" + }, + "returnParameters": { + "id": 4856, + "nodeType": "ParameterList", + "parameters": [], + "src": "395:0:23" + }, + "scope": 5058, + "src": "258:206:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4873, + "name": "StakeWithdraw", + "nodeType": "EventDefinition", + "parameters": { + "id": 4872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4867, + "indexed": false, + "name": "committed", + "nodeType": "VariableDeclaration", + "scope": 4873, + "src": "490:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4866, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4869, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4873, + "src": "509:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4868, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4871, + "indexed": false, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 4873, + "src": "525:16:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4870, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "525:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "489:53:23" + }, + "src": "470:73:23" + }, + { + "body": { + "id": 4888, + "nodeType": "Block", + "src": "665:64:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4883, + "name": "committed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4875, + "src": "694:9:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4884, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "705:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4885, + "name": "batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4879, + "src": "713:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4882, + "name": "StakeWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4873, + "src": "680:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 4886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "680:42:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4887, + "nodeType": "EmitStatement", + "src": "675:47:23" + } + ] + }, + "documentation": null, + "id": 4889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logStakeWithdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4880, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4875, + "name": "committed", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "584:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4874, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "584:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4877, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "611:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "611:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4879, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 4889, + "src": "635:16:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "635:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "574:83:23" + }, + "returnParameters": { + "id": 4881, + "nodeType": "ParameterList", + "parameters": [], + "src": "665:0:23" + }, + "scope": 5058, + "src": "549:180:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4901, + "name": "BatchRollback", + "nodeType": "EventDefinition", + "parameters": { + "id": 4900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4891, + "indexed": false, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 4901, + "src": "764:16:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4890, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "764:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4893, + "indexed": false, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 4901, + "src": "790:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4892, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "790:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4895, + "indexed": false, + "name": "stateRoot", + "nodeType": "VariableDeclaration", + "scope": 4901, + "src": "817:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4894, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "817:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4897, + "indexed": false, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 4901, + "src": "844:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4896, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "844:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4899, + "indexed": false, + "name": "stakeSlashed", + "nodeType": "VariableDeclaration", + "scope": 4901, + "src": "868:20:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "868:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "754:140:23" + }, + "src": "735:160:23" + }, + { + "body": { + "id": 4922, + "nodeType": "Block", + "src": "1074:159:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4915, + "name": "batch_id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4903, + "src": "1116:8:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4916, + "name": "committer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4905, + "src": "1138:9:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4917, + "name": "stateRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4907, + "src": "1161:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4918, + "name": "txRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4909, + "src": "1184:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4919, + "name": "stakeSlashed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4911, + "src": "1204:12:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4914, + "name": "BatchRollback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4901, + "src": "1089:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (uint256,address,bytes32,bytes32,uint256)" + } + }, + "id": 4920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1089:137:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4921, + "nodeType": "EmitStatement", + "src": "1084:142:23" + } + ] + }, + "documentation": null, + "id": 4923, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logBatchRollback", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4903, + "name": "batch_id", + "nodeType": "VariableDeclaration", + "scope": 4923, + "src": "936:16:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4902, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "936:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4905, + "name": "committer", + "nodeType": "VariableDeclaration", + "scope": 4923, + "src": "962:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4904, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "962:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4907, + "name": "stateRoot", + "nodeType": "VariableDeclaration", + "scope": 4923, + "src": "989:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4906, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "989:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4909, + "name": "txRoot", + "nodeType": "VariableDeclaration", + "scope": 4923, + "src": "1016:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4908, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1016:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4911, + "name": "stakeSlashed", + "nodeType": "VariableDeclaration", + "scope": 4923, + "src": "1040:20:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4910, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1040:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "926:140:23" + }, + "returnParameters": { + "id": 4913, + "nodeType": "ParameterList", + "parameters": [], + "src": "1074:0:23" + }, + "scope": 5058, + "src": "901:332:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4927, + "name": "RollbackFinalisation", + "nodeType": "EventDefinition", + "parameters": { + "id": 4926, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4925, + "indexed": false, + "name": "totalBatchesSlashed", + "nodeType": "VariableDeclaration", + "scope": 4927, + "src": "1266:27:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1266:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1265:29:23" + }, + "src": "1239:56:23" + }, + { + "body": { + "id": 4936, + "nodeType": "Block", + "src": "1370:63:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4933, + "name": "totalBatchesSlashed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4929, + "src": "1406:19:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4932, + "name": "RollbackFinalisation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4927, + "src": "1385:20:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 4934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1385:41:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4935, + "nodeType": "EmitStatement", + "src": "1380:46:23" + } + ] + }, + "documentation": null, + "id": 4937, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logRollbackFinalisation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4929, + "name": "totalBatchesSlashed", + "nodeType": "VariableDeclaration", + "scope": 4937, + "src": "1334:27:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4928, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1334:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1333:29:23" + }, + "returnParameters": { + "id": 4931, + "nodeType": "ParameterList", + "parameters": [], + "src": "1370:0:23" + }, + "scope": 5058, + "src": "1301:132:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4943, + "name": "RegisteredToken", + "nodeType": "EventDefinition", + "parameters": { + "id": 4942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4939, + "indexed": false, + "name": "tokenType", + "nodeType": "VariableDeclaration", + "scope": 4943, + "src": "1461:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1461:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4941, + "indexed": false, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 4943, + "src": "1480:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4940, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1480:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1460:42:23" + }, + "src": "1439:64:23" + }, + { + "body": { + "id": 4955, + "nodeType": "Block", + "src": "1598:63:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4951, + "name": "tokenType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "1629:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4952, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "1640:13:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4950, + "name": "RegisteredToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "1613:15:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 4953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1613:41:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4954, + "nodeType": "EmitStatement", + "src": "1608:46:23" + } + ] + }, + "documentation": null, + "id": 4956, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logRegisteredToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4945, + "name": "tokenType", + "nodeType": "VariableDeclaration", + "scope": 4956, + "src": "1537:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4944, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1537:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4947, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 4956, + "src": "1556:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1556:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1536:42:23" + }, + "returnParameters": { + "id": 4949, + "nodeType": "ParameterList", + "parameters": [], + "src": "1598:0:23" + }, + "scope": 5058, + "src": "1509:152:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4960, + "name": "RegistrationRequest", + "nodeType": "EventDefinition", + "parameters": { + "id": 4959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4958, + "indexed": false, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 4960, + "src": "1693:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4957, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1693:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1692:23:23" + }, + "src": "1667:49:23" + }, + { + "body": { + "id": 4969, + "nodeType": "Block", + "src": "1784:56:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4966, + "name": "tokenContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4962, + "src": "1819:13:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4965, + "name": "RegistrationRequest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4960, + "src": "1799:19:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1799:34:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4968, + "nodeType": "EmitStatement", + "src": "1794:39:23" + } + ] + }, + "documentation": null, + "id": 4970, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logRegistrationRequest", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4962, + "name": "tokenContract", + "nodeType": "VariableDeclaration", + "scope": 4970, + "src": "1754:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1754:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1753:23:23" + }, + "returnParameters": { + "id": 4964, + "nodeType": "ParameterList", + "parameters": [], + "src": "1784:0:23" + }, + "scope": 5058, + "src": "1722:118:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4984, + "name": "DepositQueued", + "nodeType": "EventDefinition", + "parameters": { + "id": 4983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4972, + "indexed": false, + "name": "AccountID", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "1875:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4971, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1875:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4974, + "indexed": false, + "name": "destination", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "1902:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1902:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4976, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "1931:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4975, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1931:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4978, + "indexed": false, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "1955:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4977, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1955:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4980, + "indexed": false, + "name": "accountHash", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "1978:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4979, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1978:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4982, + "indexed": false, + "name": "pubkey", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "2007:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4981, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2007:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1865:160:23" + }, + "src": "1846:180:23" + }, + { + "body": { + "id": 5008, + "nodeType": "Block", + "src": "2232:177:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5000, + "name": "accountID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4986, + "src": "2274:9:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5001, + "name": "destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4988, + "src": "2297:11:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5002, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4990, + "src": "2322:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5003, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4992, + "src": "2342:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5004, + "name": "accountHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4994, + "src": "2361:11:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5005, + "name": "pubkey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4996, + "src": "2386:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4999, + "name": "DepositQueued", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4984, + "src": "2247:13:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint256,address,uint256,uint256,bytes32,bytes memory)" + } + }, + "id": 5006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2247:155:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5007, + "nodeType": "EmitStatement", + "src": "2242:160:23" + } + ] + }, + "documentation": null, + "id": 5009, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logDepositQueued", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4986, + "name": "accountID", + "nodeType": "VariableDeclaration", + "scope": 5009, + "src": "2067:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4985, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2067:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4988, + "name": "destination", + "nodeType": "VariableDeclaration", + "scope": 5009, + "src": "2094:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4987, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2094:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4990, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5009, + "src": "2123:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2123:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4992, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 5009, + "src": "2147:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4991, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2147:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4994, + "name": "accountHash", + "nodeType": "VariableDeclaration", + "scope": 5009, + "src": "2170:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4993, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2170:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4996, + "name": "pubkey", + "nodeType": "VariableDeclaration", + "scope": 5009, + "src": "2199:19:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4995, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2199:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2057:167:23" + }, + "returnParameters": { + "id": 4998, + "nodeType": "ParameterList", + "parameters": [], + "src": "2232:0:23" + }, + "scope": 5058, + "src": "2032:377:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5017, + "name": "DepositLeafMerged", + "nodeType": "EventDefinition", + "parameters": { + "id": 5016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5011, + "indexed": false, + "name": "left", + "nodeType": "VariableDeclaration", + "scope": 5017, + "src": "2439:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5010, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2439:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5013, + "indexed": false, + "name": "right", + "nodeType": "VariableDeclaration", + "scope": 5017, + "src": "2453:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5012, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2453:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5015, + "indexed": false, + "name": "newRoot", + "nodeType": "VariableDeclaration", + "scope": 5017, + "src": "2468:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5014, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2468:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2438:46:23" + }, + "src": "2415:70:23" + }, + { + "body": { + "id": 5032, + "nodeType": "Block", + "src": "2586:61:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5027, + "name": "left", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5019, + "src": "2619:4:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5028, + "name": "right", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5021, + "src": "2625:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5029, + "name": "newRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5023, + "src": "2632:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5026, + "name": "DepositLeafMerged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5017, + "src": "2601:17:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 5030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2601:39:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5031, + "nodeType": "EmitStatement", + "src": "2596:44:23" + } + ] + }, + "documentation": null, + "id": 5033, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logDepositLeafMerged", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5019, + "name": "left", + "nodeType": "VariableDeclaration", + "scope": 5033, + "src": "2521:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5018, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2521:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5021, + "name": "right", + "nodeType": "VariableDeclaration", + "scope": 5033, + "src": "2535:13:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5020, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2535:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5023, + "name": "newRoot", + "nodeType": "VariableDeclaration", + "scope": 5033, + "src": "2550:15:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5022, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2550:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2520:46:23" + }, + "returnParameters": { + "id": 5025, + "nodeType": "ParameterList", + "parameters": [], + "src": "2586:0:23" + }, + "scope": 5058, + "src": "2491:156:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5041, + "name": "DepositsFinalised", + "nodeType": "EventDefinition", + "parameters": { + "id": 5040, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5035, + "indexed": false, + "name": "depositSubTreeRoot", + "nodeType": "VariableDeclaration", + "scope": 5041, + "src": "2686:26:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5034, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2686:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5037, + "indexed": false, + "name": "pathToSubTree", + "nodeType": "VariableDeclaration", + "scope": 5041, + "src": "2722:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2722:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5039, + "indexed": false, + "name": "newBalanceRoot", + "nodeType": "VariableDeclaration", + "scope": 5041, + "src": "2753:22:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5038, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2753:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2676:105:23" + }, + "src": "2653:129:23" + }, + { + "body": { + "id": 5056, + "nodeType": "Block", + "src": "2929:136:23", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5051, + "name": "depositSubTreeRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5043, + "src": "2975:18:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5052, + "name": "pathToSubTree", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5045, + "src": "3007:13:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5053, + "name": "newBalanceRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5047, + "src": "3034:14:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5050, + "name": "DepositsFinalised", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5041, + "src": "2944:17:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,uint256,bytes32)" + } + }, + "id": 5054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2944:114:23", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5055, + "nodeType": "EmitStatement", + "src": "2939:119:23" + } + ] + }, + "documentation": null, + "id": 5057, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "logDepositFinalised", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5043, + "name": "depositSubTreeRoot", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "2826:26:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5042, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2826:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5045, + "name": "pathToSubTree", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "2862:21:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2862:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5047, + "name": "newBalanceRoot", + "nodeType": "VariableDeclaration", + "scope": 5057, + "src": "2893:22:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5046, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2893:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2816:105:23" + }, + "returnParameters": { + "id": 5049, + "nodeType": "ParameterList", + "parameters": [], + "src": "2929:0:23" + }, + "scope": 5058, + "src": "2788:277:23", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5059, + "src": "27:3040:23" + } + ], + "src": "0:3068:23" + }, + "id": 23 + }, + "solidity-bytes-utils/contracts/BytesLib.sol": { + "ast": { + "absolutePath": "solidity-bytes-utils/contracts/BytesLib.sol", + "exportedSymbols": { + "BytesLib": [ + 5382 + ] + }, + "id": 5383, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5060, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "299:23:24" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 5382, + "linearizedBaseContracts": [ + 5382 + ], + "name": "BytesLib", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5075, + "nodeType": "Block", + "src": "500:2804:24", + "statements": [ + { + "assignments": [ + 5070 + ], + "declarations": [ + { + "constant": false, + "id": 5070, + "name": "tempBytes", + "nodeType": "VariableDeclaration", + "scope": 5075, + "src": "510:22:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5069, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "510:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5071, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "510:22:24" + }, + { + "externalReferences": [ + { + "tempBytes": { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "696:9:24", + "valueSize": 1 + } + }, + { + "_preBytes": { + "declaration": 5062, + "isOffset": false, + "isSlot": false, + "src": "872:9:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "1144:9:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "902:9:24", + "valueSize": 1 + } + }, + { + "_preBytes": { + "declaration": 5062, + "isOffset": false, + "isSlot": false, + "src": "1487:9:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5064, + "isOffset": false, + "isSlot": false, + "src": "2485:10:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5064, + "isOffset": false, + "isSlot": false, + "src": "2067:10:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "2098:9:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5070, + "isOffset": false, + "isSlot": false, + "src": "2127:9:24", + "valueSize": 1 + } + }, + { + "_preBytes": { + "declaration": 5062, + "isOffset": false, + "isSlot": false, + "src": "3166:9:24", + "valueSize": 1 + } + } + ], + "id": 5072, + "nodeType": "InlineAssembly", + "operations": "{\n tempBytes := mload(0x40)\n let length := mload(_preBytes)\n mstore(tempBytes, length)\n let mc := add(tempBytes, 0x20)\n let end := add(mc, length)\n for {\n let cc := add(_preBytes, 0x20)\n }\n lt(mc, end)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n { mstore(mc, mload(cc)) }\n length := mload(_postBytes)\n mstore(tempBytes, add(length, mload(tempBytes)))\n mc := end\n end := add(mc, length)\n for {\n let cc := add(_postBytes, 0x20)\n }\n lt(mc, end)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n { mstore(mc, mload(cc)) }\n mstore(0x40, and(add(add(end, iszero(add(length, mload(_preBytes)))), 31), not(31)))\n}", + "src": "543:2728:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5073, + "name": "tempBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5070, + "src": "3288:9:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5068, + "id": 5074, + "nodeType": "Return", + "src": "3281:16:24" + } + ] + }, + "documentation": null, + "id": 5076, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concat", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5062, + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "scope": 5076, + "src": "373:22:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5061, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "373:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5064, + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "scope": 5076, + "src": "405:23:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5063, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "405:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "363:71:24" + }, + "returnParameters": { + "id": 5068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5067, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5076, + "src": "482:12:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5066, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "482:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "481:14:24" + }, + "scope": 5382, + "src": "348:2956:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5084, + "nodeType": "Block", + "src": "3392:6032:24", + "statements": [ + { + "externalReferences": [ + { + "_preBytes_slot": { + "declaration": 5078, + "isOffset": false, + "isSlot": true, + "src": "3653:14:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "4271:10:24", + "valueSize": 1 + } + }, + { + "_preBytes_slot": { + "declaration": 5078, + "isOffset": false, + "isSlot": true, + "src": "4947:14:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "7221:10:24", + "valueSize": 1 + } + }, + { + "_preBytes_slot": { + "declaration": 5078, + "isOffset": false, + "isSlot": true, + "src": "6385:14:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "5477:10:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "7272:10:24", + "valueSize": 1 + } + }, + { + "_preBytes_slot": { + "declaration": 5078, + "isOffset": false, + "isSlot": true, + "src": "6530:14:24", + "valueSize": 1 + } + }, + { + "_preBytes_slot": { + "declaration": 5078, + "isOffset": false, + "isSlot": true, + "src": "8229:14:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "8785:10:24", + "valueSize": 1 + } + }, + { + "_preBytes_slot": { + "declaration": 5078, + "isOffset": false, + "isSlot": true, + "src": "8450:14:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "8836:10:24", + "valueSize": 1 + } + } + ], + "id": 5083, + "nodeType": "InlineAssembly", + "operations": "{\n let fslot := sload(_preBytes_slot)\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n let newlength := add(slength, mlength)\n switch add(lt(slength, 32), lt(newlength, 32))\n case 2 {\n sstore(_preBytes_slot, add(fslot, add(mul(div(mload(add(_postBytes, 0x20)), exp(0x100, sub(32, mlength))), exp(0x100, sub(32, newlength))), mul(mlength, 2))))\n }\n case 1 {\n mstore(0x0, _preBytes_slot)\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n let submod := sub(32, slength)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n sstore(sc, add(and(fslot, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00), and(mload(mc), mask)))\n for {\n mc := add(mc, 0x20)\n sc := add(sc, 1)\n }\n lt(mc, end)\n {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n { sstore(sc, mload(mc)) }\n mask := exp(0x100, sub(mc, end))\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n default {\n mstore(0x0, _preBytes_slot)\n let sc := add(keccak256(0x0, 0x20), div(slength, 32))\n sstore(_preBytes_slot, add(mul(newlength, 2), 1))\n let slengthmod := mod(slength, 32)\n let mlengthmod := mod(mlength, 32)\n let submod := sub(32, slengthmod)\n let mc := add(_postBytes, submod)\n let end := add(_postBytes, mlength)\n let mask := sub(exp(0x100, submod), 1)\n sstore(sc, add(sload(sc), and(mload(mc), mask)))\n for {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n lt(mc, end)\n {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n { sstore(sc, mload(mc)) }\n mask := exp(0x100, sub(mc, end))\n sstore(sc, mul(div(mload(mc), mask), mask))\n }\n}", + "src": "3402:6016:24" + } + ] + }, + "documentation": null, + "id": 5085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "concatStorage", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5078, + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "scope": 5085, + "src": "3333:23:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5077, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3333:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5080, + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "scope": 5085, + "src": "3358:23:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5079, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3358:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3332:50:24" + }, + "returnParameters": { + "id": 5082, + "nodeType": "ParameterList", + "parameters": [], + "src": "3392:0:24" + }, + "scope": 5382, + "src": "3310:6114:24", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5112, + "nodeType": "Block", + "src": "9588:2378:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5097, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5087, + "src": "9606:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9606:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5099, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5089, + "src": "9624:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 5100, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5091, + "src": "9633:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9624:16:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5102, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9623:18:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9606:35:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5096, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "9598:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9598:44:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5105, + "nodeType": "ExpressionStatement", + "src": "9598:44:24" + }, + { + "assignments": [ + 5107 + ], + "declarations": [ + { + "constant": false, + "id": 5107, + "name": "tempBytes", + "nodeType": "VariableDeclaration", + "scope": 5112, + "src": "9653:22:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9653:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5108, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9653:22:24" + }, + { + "externalReferences": [ + { + "_length": { + "declaration": 5091, + "isOffset": false, + "isSlot": false, + "src": "9723:7:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5107, + "isOffset": false, + "isSlot": false, + "src": "9907:9:24", + "valueSize": 1 + } + }, + { + "_length": { + "declaration": 5091, + "isOffset": false, + "isSlot": false, + "src": "10576:7:24", + "valueSize": 1 + } + }, + { + "_length": { + "declaration": 5091, + "isOffset": false, + "isSlot": false, + "src": "11015:7:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5107, + "isOffset": false, + "isSlot": false, + "src": "10927:9:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5107, + "isOffset": false, + "isSlot": false, + "src": "11491:9:24", + "valueSize": 1 + } + }, + { + "_length": { + "declaration": 5091, + "isOffset": false, + "isSlot": false, + "src": "11502:7:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5087, + "isOffset": false, + "isSlot": false, + "src": "11216:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5089, + "isOffset": false, + "isSlot": false, + "src": "11267:6:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5107, + "isOffset": false, + "isSlot": false, + "src": "11833:9:24", + "valueSize": 1 + } + }, + { + "tempBytes": { + "declaration": 5107, + "isOffset": false, + "isSlot": false, + "src": "11892:9:24", + "valueSize": 1 + } + } + ], + "id": 5109, + "nodeType": "InlineAssembly", + "operations": "{\n switch iszero(_length)\n case 0 {\n tempBytes := mload(0x40)\n let lengthmod := and(_length, 31)\n let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)))\n let end := add(mc, _length)\n for {\n let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start)\n }\n lt(mc, end)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n { mstore(mc, mload(cc)) }\n mstore(tempBytes, _length)\n mstore(0x40, and(add(mc, 31), not(31)))\n }\n default {\n tempBytes := mload(0x40)\n mstore(0x40, add(tempBytes, 0x20))\n }\n}", + "src": "9686:2247:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5110, + "name": "tempBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5107, + "src": "11950:9:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5095, + "id": 5111, + "nodeType": "Return", + "src": "11943:16:24" + } + ] + }, + "documentation": null, + "id": 5113, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "slice", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5087, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5113, + "src": "9454:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5086, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9454:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5089, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5113, + "src": "9483:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5088, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9483:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5091, + "name": "_length", + "nodeType": "VariableDeclaration", + "scope": 5113, + "src": "9504:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5090, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9504:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9444:78:24" + }, + "returnParameters": { + "id": 5095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5094, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5113, + "src": "9570:12:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5093, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9570:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9569:14:24" + }, + "scope": 5382, + "src": "9430:2536:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5138, + "nodeType": "Block", + "src": "12058:243:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5123, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5115, + "src": "12076:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12076:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5125, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "12094:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 5126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12103:2:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "12094:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5128, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12093:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12076:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5122, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "12068:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12068:39:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5131, + "nodeType": "ExpressionStatement", + "src": "12068:39:24" + }, + { + "assignments": [ + 5133 + ], + "declarations": [ + { + "constant": false, + "id": 5133, + "name": "tempAddress", + "nodeType": "VariableDeclaration", + "scope": 5138, + "src": "12117:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12117:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5134, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12117:19:24" + }, + { + "externalReferences": [ + { + "tempAddress": { + "declaration": 5133, + "isOffset": false, + "isSlot": false, + "src": "12170:11:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5115, + "isOffset": false, + "isSlot": false, + "src": "12203:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5117, + "isOffset": false, + "isSlot": false, + "src": "12218:6:24", + "valueSize": 1 + } + } + ], + "id": 5135, + "nodeType": "InlineAssembly", + "operations": "{\n tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000)\n}", + "src": "12147:119:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5136, + "name": "tempAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5133, + "src": "12283:11:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5121, + "id": 5137, + "nodeType": "Return", + "src": "12276:18:24" + } + ] + }, + "documentation": null, + "id": 5139, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5118, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5115, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5139, + "src": "11991:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5114, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11991:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5117, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5139, + "src": "12012:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5116, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12012:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11990:34:24" + }, + "returnParameters": { + "id": 5121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5120, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5139, + "src": "12049:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12049:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12048:9:24" + }, + "scope": 5382, + "src": "11972:329:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5164, + "nodeType": "Block", + "src": "12389:196:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5149, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5141, + "src": "12407:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12407:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5151, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5143, + "src": "12425:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 5152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12434:1:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "12425:10:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5154, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12424:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12407:29:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "12399:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12399:38:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5157, + "nodeType": "ExpressionStatement", + "src": "12399:38:24" + }, + { + "assignments": [ + 5159 + ], + "declarations": [ + { + "constant": false, + "id": 5159, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5164, + "src": "12447:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5158, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "12447:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5160, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12447:14:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5159, + "isOffset": false, + "isSlot": false, + "src": "12495:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5141, + "isOffset": false, + "isSlot": false, + "src": "12521:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5143, + "isOffset": false, + "isSlot": false, + "src": "12535:6:24", + "valueSize": 1 + } + } + ], + "id": 5161, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0x1), _start))\n}", + "src": "12472:81:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5162, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5159, + "src": "12570:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 5147, + "id": 5163, + "nodeType": "Return", + "src": "12563:15:24" + } + ] + }, + "documentation": null, + "id": 5165, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5141, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5165, + "src": "12324:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5140, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12324:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5143, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5165, + "src": "12345:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5142, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12345:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12323:34:24" + }, + "returnParameters": { + "id": 5147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5146, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5165, + "src": "12382:5:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5145, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "12382:5:24", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12381:7:24" + }, + "scope": 5382, + "src": "12307:278:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5190, + "nodeType": "Block", + "src": "12675:197:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5175, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5167, + "src": "12693:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12693:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5177, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5169, + "src": "12711:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 5178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12720:1:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "12711:10:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5180, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12710:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12693:29:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5174, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "12685:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12685:38:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5183, + "nodeType": "ExpressionStatement", + "src": "12685:38:24" + }, + { + "assignments": [ + 5185 + ], + "declarations": [ + { + "constant": false, + "id": 5185, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5190, + "src": "12733:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5184, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12733:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5186, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "12733:15:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5185, + "isOffset": false, + "isSlot": false, + "src": "12782:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5167, + "isOffset": false, + "isSlot": false, + "src": "12808:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5169, + "isOffset": false, + "isSlot": false, + "src": "12822:6:24", + "valueSize": 1 + } + } + ], + "id": 5187, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0x2), _start))\n}", + "src": "12759:81:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5188, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5185, + "src": "12857:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 5173, + "id": 5189, + "nodeType": "Return", + "src": "12850:15:24" + } + ] + }, + "documentation": null, + "id": 5191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5167, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5191, + "src": "12609:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5166, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12609:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5169, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5191, + "src": "12630:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5168, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12630:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12608:34:24" + }, + "returnParameters": { + "id": 5173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5172, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5191, + "src": "12667:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 5171, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "12667:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12666:8:24" + }, + "scope": 5382, + "src": "12591:281:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5216, + "nodeType": "Block", + "src": "12962:197:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5201, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5193, + "src": "12980:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12980:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5203, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5195, + "src": "12998:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "34", + "id": 5204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13007:1:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "12998:10:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5206, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12997:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12980:29:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "12972:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12972:38:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5209, + "nodeType": "ExpressionStatement", + "src": "12972:38:24" + }, + { + "assignments": [ + 5211 + ], + "declarations": [ + { + "constant": false, + "id": 5211, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5216, + "src": "13020:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 5210, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "13020:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5212, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13020:15:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5211, + "isOffset": false, + "isSlot": false, + "src": "13069:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5193, + "isOffset": false, + "isSlot": false, + "src": "13095:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5195, + "isOffset": false, + "isSlot": false, + "src": "13109:6:24", + "valueSize": 1 + } + } + ], + "id": 5213, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0x4), _start))\n}", + "src": "13046:81:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5214, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5211, + "src": "13144:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 5199, + "id": 5215, + "nodeType": "Return", + "src": "13137:15:24" + } + ] + }, + "documentation": null, + "id": 5217, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5193, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5217, + "src": "12896:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5192, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12896:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5195, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5217, + "src": "12917:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5194, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12917:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12895:34:24" + }, + "returnParameters": { + "id": 5199, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5198, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5217, + "src": "12954:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 5197, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "12954:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12953:8:24" + }, + "scope": 5382, + "src": "12878:281:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5242, + "nodeType": "Block", + "src": "13249:197:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5227, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5219, + "src": "13267:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13267:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5229, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5221, + "src": "13285:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "38", + "id": 5230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13294:1:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "13285:10:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5232, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13284:12:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13267:29:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5226, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "13259:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13259:38:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5235, + "nodeType": "ExpressionStatement", + "src": "13259:38:24" + }, + { + "assignments": [ + 5237 + ], + "declarations": [ + { + "constant": false, + "id": 5237, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5242, + "src": "13307:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 5236, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13307:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5238, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13307:15:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5237, + "isOffset": false, + "isSlot": false, + "src": "13356:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5219, + "isOffset": false, + "isSlot": false, + "src": "13382:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5221, + "isOffset": false, + "isSlot": false, + "src": "13396:6:24", + "valueSize": 1 + } + } + ], + "id": 5239, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0x8), _start))\n}", + "src": "13333:81:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5240, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "13431:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 5225, + "id": 5241, + "nodeType": "Return", + "src": "13424:15:24" + } + ] + }, + "documentation": null, + "id": 5243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint64", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5219, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "13183:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5218, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13183:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5221, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "13204:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5220, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13204:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13182:34:24" + }, + "returnParameters": { + "id": 5225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5224, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5243, + "src": "13241:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 5223, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13241:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13240:8:24" + }, + "scope": 5382, + "src": "13165:281:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5268, + "nodeType": "Block", + "src": "13536:198:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5253, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5245, + "src": "13554:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13554:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5255, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5247, + "src": "13572:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3132", + "id": 5256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13581:2:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_12_by_1", + "typeString": "int_const 12" + }, + "value": "12" + }, + "src": "13572:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5258, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13571:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13554:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5252, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "13546:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13546:39:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5261, + "nodeType": "ExpressionStatement", + "src": "13546:39:24" + }, + { + "assignments": [ + 5263 + ], + "declarations": [ + { + "constant": false, + "id": 5263, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5268, + "src": "13595:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 5262, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "13595:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5264, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13595:15:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5263, + "isOffset": false, + "isSlot": false, + "src": "13644:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5245, + "isOffset": false, + "isSlot": false, + "src": "13670:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5247, + "isOffset": false, + "isSlot": false, + "src": "13684:6:24", + "valueSize": 1 + } + } + ], + "id": 5265, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0xc), _start))\n}", + "src": "13621:81:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5266, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5263, + "src": "13719:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "functionReturnParameters": 5251, + "id": 5267, + "nodeType": "Return", + "src": "13712:15:24" + } + ] + }, + "documentation": null, + "id": 5269, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint96", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5245, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5269, + "src": "13470:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5244, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13470:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5247, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5269, + "src": "13491:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5246, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13491:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13469:34:24" + }, + "returnParameters": { + "id": 5251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5250, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5269, + "src": "13528:6:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 5249, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "13528:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13527:8:24" + }, + "scope": 5382, + "src": "13452:282:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5294, + "nodeType": "Block", + "src": "13826:200:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5279, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5271, + "src": "13844:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13844:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5281, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5273, + "src": "13862:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3136", + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13871:2:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "13862:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5284, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13861:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13844:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5278, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "13836:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13836:39:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5287, + "nodeType": "ExpressionStatement", + "src": "13836:39:24" + }, + { + "assignments": [ + 5289 + ], + "declarations": [ + { + "constant": false, + "id": 5289, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5294, + "src": "13885:16:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5288, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13885:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5290, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "13885:16:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5289, + "isOffset": false, + "isSlot": false, + "src": "13935:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5271, + "isOffset": false, + "isSlot": false, + "src": "13961:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5273, + "isOffset": false, + "isSlot": false, + "src": "13976:6:24", + "valueSize": 1 + } + } + ], + "id": 5291, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0x10), _start))\n}", + "src": "13912:82:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5292, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5289, + "src": "14011:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 5277, + "id": 5293, + "nodeType": "Return", + "src": "14004:15:24" + } + ] + }, + "documentation": null, + "id": 5295, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5271, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "13759:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5270, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13759:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5273, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "13780:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5272, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13780:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13758:34:24" + }, + "returnParameters": { + "id": 5277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5276, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5295, + "src": "13817:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 5275, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13817:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13816:9:24" + }, + "scope": 5382, + "src": "13740:286:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5320, + "nodeType": "Block", + "src": "14115:200:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5305, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5297, + "src": "14133:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14133:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5307, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "14151:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 5308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14160:2:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14151:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5310, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14150:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14133:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5304, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "14125:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14125:39:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5313, + "nodeType": "ExpressionStatement", + "src": "14125:39:24" + }, + { + "assignments": [ + 5315 + ], + "declarations": [ + { + "constant": false, + "id": 5315, + "name": "tempUint", + "nodeType": "VariableDeclaration", + "scope": 5320, + "src": "14174:16:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14174:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5316, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14174:16:24" + }, + { + "externalReferences": [ + { + "tempUint": { + "declaration": 5315, + "isOffset": false, + "isSlot": false, + "src": "14224:8:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5297, + "isOffset": false, + "isSlot": false, + "src": "14250:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5299, + "isOffset": false, + "isSlot": false, + "src": "14265:6:24", + "valueSize": 1 + } + } + ], + "id": 5317, + "nodeType": "InlineAssembly", + "operations": "{\n tempUint := mload(add(add(_bytes, 0x20), _start))\n}", + "src": "14201:82:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5318, + "name": "tempUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5315, + "src": "14300:8:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5303, + "id": 5319, + "nodeType": "Return", + "src": "14293:15:24" + } + ] + }, + "documentation": null, + "id": 5321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5297, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5321, + "src": "14048:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5296, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14048:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5299, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5321, + "src": "14069:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5298, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14069:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14047:34:24" + }, + "returnParameters": { + "id": 5303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5302, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5321, + "src": "14106:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14106:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14105:9:24" + }, + "scope": 5382, + "src": "14032:283:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5346, + "nodeType": "Block", + "src": "14407:209:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5331, + "name": "_bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5323, + "src": "14425:6:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14425:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5333, + "name": "_start", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5325, + "src": "14443:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 5334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14452:2:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "14443:11:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 5336, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14442:13:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14425:30:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 5330, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5400, + 5401 + ], + "referencedDeclaration": 5400, + "src": "14417:7:24", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 5338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14417:39:24", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5339, + "nodeType": "ExpressionStatement", + "src": "14417:39:24" + }, + { + "assignments": [ + 5341 + ], + "declarations": [ + { + "constant": false, + "id": 5341, + "name": "tempBytes32", + "nodeType": "VariableDeclaration", + "scope": 5346, + "src": "14466:19:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5340, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14466:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5342, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "14466:19:24" + }, + { + "externalReferences": [ + { + "tempBytes32": { + "declaration": 5341, + "isOffset": false, + "isSlot": false, + "src": "14519:11:24", + "valueSize": 1 + } + }, + { + "_bytes": { + "declaration": 5323, + "isOffset": false, + "isSlot": false, + "src": "14548:6:24", + "valueSize": 1 + } + }, + { + "_start": { + "declaration": 5325, + "isOffset": false, + "isSlot": false, + "src": "14563:6:24", + "valueSize": 1 + } + } + ], + "id": 5343, + "nodeType": "InlineAssembly", + "operations": "{\n tempBytes32 := mload(add(add(_bytes, 0x20), _start))\n}", + "src": "14496:85:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5344, + "name": "tempBytes32", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5341, + "src": "14598:11:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 5329, + "id": 5345, + "nodeType": "Return", + "src": "14591:18:24" + } + ] + }, + "documentation": null, + "id": 5347, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toBytes32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5323, + "name": "_bytes", + "nodeType": "VariableDeclaration", + "scope": 5347, + "src": "14340:19:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5322, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14340:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5325, + "name": "_start", + "nodeType": "VariableDeclaration", + "scope": 5347, + "src": "14361:11:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5324, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14361:4:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14339:34:24" + }, + "returnParameters": { + "id": 5329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5328, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5347, + "src": "14398:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5327, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14398:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14397:9:24" + }, + "scope": 5382, + "src": "14321:295:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5363, + "nodeType": "Block", + "src": "14715:1320:24", + "statements": [ + { + "assignments": [ + 5357 + ], + "declarations": [ + { + "constant": false, + "id": 5357, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 5363, + "src": "14725:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5356, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14725:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5359, + "initialValue": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14740:4:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14725:19:24" + }, + { + "externalReferences": [ + { + "_preBytes": { + "declaration": 5349, + "isOffset": false, + "isSlot": false, + "src": "14798:9:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5351, + "isOffset": false, + "isSlot": false, + "src": "14909:10:24", + "valueSize": 1 + } + }, + { + "_preBytes": { + "declaration": 5349, + "isOffset": false, + "isSlot": false, + "src": "15213:9:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5351, + "isOffset": false, + "isSlot": false, + "src": "15330:10:24", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 5357, + "isOffset": false, + "isSlot": false, + "src": "15801:7:24", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 5357, + "isOffset": false, + "isSlot": false, + "src": "15968:7:24", + "valueSize": 1 + } + } + ], + "id": 5360, + "nodeType": "InlineAssembly", + "operations": "{\n let length := mload(_preBytes)\n switch eq(length, mload(_postBytes))\n case 1 {\n let cb := 1\n let mc := add(_preBytes, 0x20)\n let end := add(mc, length)\n for {\n let cc := add(_postBytes, 0x20)\n }\n eq(add(lt(mc, end), cb), 2)\n {\n mc := add(mc, 0x20)\n cc := add(cc, 0x20)\n }\n {\n if iszero(eq(mload(mc), mload(cc)))\n {\n success := 0\n cb := 0\n }\n }\n }\n default { success := 0 }\n}", + "src": "14755:1249:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5361, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5357, + "src": "16021:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5355, + "id": 5362, + "nodeType": "Return", + "src": "16014:14:24" + } + ] + }, + "documentation": null, + "id": 5364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equal", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5349, + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "14637:22:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5348, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14637:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5351, + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "14661:23:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5350, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "14661:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14636:49:24" + }, + "returnParameters": { + "id": 5355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5354, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5364, + "src": "14709:4:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5353, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14709:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14708:6:24" + }, + "scope": 5382, + "src": "14622:1413:24", + "stateMutability": "pure", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 5380, + "nodeType": "Block", + "src": "16192:2556:24", + "statements": [ + { + "assignments": [ + 5374 + ], + "declarations": [ + { + "constant": false, + "id": 5374, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 5380, + "src": "16202:12:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5373, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16202:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5376, + "initialValue": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16217:4:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "nodeType": "VariableDeclarationStatement", + "src": "16202:19:24" + }, + { + "externalReferences": [ + { + "_preBytes_slot": { + "declaration": 5366, + "isOffset": false, + "isSlot": true, + "src": "16319:14:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5368, + "isOffset": false, + "isSlot": false, + "src": "16535:10:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5368, + "isOffset": false, + "isSlot": false, + "src": "17240:10:24", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 5374, + "isOffset": false, + "isSlot": false, + "src": "17333:7:24", + "valueSize": 1 + } + }, + { + "_postBytes": { + "declaration": 5368, + "isOffset": false, + "isSlot": false, + "src": "17930:10:24", + "valueSize": 1 + } + }, + { + "_preBytes_slot": { + "declaration": 5366, + "isOffset": false, + "isSlot": true, + "src": "17820:14:24", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 5374, + "isOffset": false, + "isSlot": false, + "src": "18450:7:24", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 5374, + "isOffset": false, + "isSlot": false, + "src": "18681:7:24", + "valueSize": 1 + } + } + ], + "id": 5377, + "nodeType": "InlineAssembly", + "operations": "{\n let fslot := sload(_preBytes_slot)\n let slength := div(and(fslot, sub(mul(0x100, iszero(and(fslot, 1))), 1)), 2)\n let mlength := mload(_postBytes)\n switch eq(slength, mlength)\n case 1 {\n if iszero(iszero(slength))\n {\n switch lt(slength, 32)\n case 1 {\n fslot := mul(div(fslot, 0x100), 0x100)\n if iszero(eq(fslot, mload(add(_postBytes, 0x20)))) { success := 0 }\n }\n default {\n let cb := 1\n mstore(0x0, _preBytes_slot)\n let sc := keccak256(0x0, 0x20)\n let mc := add(_postBytes, 0x20)\n let end := add(mc, mlength)\n for { }\n eq(add(lt(mc, end), cb), 2)\n {\n sc := add(sc, 1)\n mc := add(mc, 0x20)\n }\n {\n if iszero(eq(sload(sc), mload(mc)))\n {\n success := 0\n cb := 0\n }\n }\n }\n }\n }\n default { success := 0 }\n}", + "src": "16232:2485:24" + }, + { + "expression": { + "argumentTypes": null, + "id": 5378, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5374, + "src": "18734:7:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5372, + "id": 5379, + "nodeType": "Return", + "src": "18727:14:24" + } + ] + }, + "documentation": null, + "id": 5381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equalStorage", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5366, + "name": "_preBytes", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "16072:23:24", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5365, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16072:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5368, + "name": "_postBytes", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "16105:23:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5367, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16105:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16062:72:24" + }, + "returnParameters": { + "id": 5372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5371, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5381, + "src": "16182:4:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5370, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16182:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16181:6:24" + }, + "scope": 5382, + "src": "16041:2707:24", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 5383, + "src": "325:18425:24" + } + ], + "src": "299:18452:24" + }, + "id": 24 + } + } +} \ No newline at end of file diff --git a/contracts/POB.sol b/contracts/POB.sol new file mode 100644 index 0000000..d4cbbd3 --- /dev/null +++ b/contracts/POB.sol @@ -0,0 +1,9 @@ +pragma solidity ^0.5.15; + + +/* +POB contract handles all the proof of burn related functionality +*/ +contract POB { + constructor() public {} +} diff --git a/package-lock.json b/package-lock.json index 1906c48..1df1daf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,20 +4,102 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@ethereum-waffle/chai": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-2.4.1.tgz", + "integrity": "sha512-EMH8UtwhsSaCeUIlH72JPaUGhYTIeHJW0aVSM9EXKh0SMNJpptaHCz5dFpjoRwvhtVwOynuCc7SpFXMq7p8T0A==", + "dev": true, + "requires": { + "ethers": "^4.0.45" + } + }, + "@ethereum-waffle/compiler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-2.4.1.tgz", + "integrity": "sha512-f+o79gKFzXaan2IOvjYRFlnR2ae3bzDET6otiH9N27hYUx5w0AQRNDkQEpVcS+sjUL9WV6ZzcFlXcVsM6144fg==", + "dev": true, + "requires": { + "@resolver-engine/imports": "^0.3.3", + "@resolver-engine/imports-fs": "^0.3.3", + "@types/mkdirp": "^0.5.2", + "@types/node-fetch": "^2.5.5", + "mkdirp": "^0.5.1", + "node-fetch": "^2.6.0", + "solc": "^0.6.3" + }, + "dependencies": { + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "solc": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.6.tgz", + "integrity": "sha512-p0IO/1fRaHWKN+qR+mUivpwnBpFYD8EoFAzT8VL4lmllNwsyEO7TJJAc2QK0XUeWOYOT92NWKhDNNNLTVbHShA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + } + } + } + }, + "@ethereum-waffle/provider": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-2.4.1.tgz", + "integrity": "sha512-OhRQfQlR6BsgGUEaeeaQXztbRQ0v/AmwEdmWHmBwJN6NX/FjLmOTIyF3LBWBFHH4K5GgSCDhFs6w5Khz+ojRKg==", + "dev": true, + "requires": { + "ethers": "^4.0.45", + "ganache-core": "^2.10.2" + } + }, "@ethersproject/abi": { "version": "5.0.0-beta.142", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.142.tgz", "integrity": "sha512-vJ2V9fPNzi+8iutY4sjy6mgogkJtiGsd9hmpa1bjnGW6qnHOEkAV1fzVpvT002LlnjFgqgtzuLBDZob6oU7i8w==", "requires": { - "@ethersproject/address": "5.0.0-beta.134", - "@ethersproject/bignumber": "5.0.0-beta.136", - "@ethersproject/bytes": "5.0.0-beta.137", - "@ethersproject/constants": "5.0.0-beta.133", - "@ethersproject/hash": "5.0.0-beta.133", - "@ethersproject/keccak256": "5.0.0-beta.131", - "@ethersproject/logger": "5.0.0-beta.136", - "@ethersproject/properties": "5.0.0-beta.137", - "@ethersproject/strings": "5.0.0-beta.136" + "@ethersproject/address": ">=5.0.0-beta.128", + "@ethersproject/bignumber": ">=5.0.0-beta.130", + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/constants": ">=5.0.0-beta.128", + "@ethersproject/hash": ">=5.0.0-beta.128", + "@ethersproject/keccak256": ">=5.0.0-beta.127", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/properties": ">=5.0.0-beta.131", + "@ethersproject/strings": ">=5.0.0-beta.130" } }, "@ethersproject/address": { @@ -25,12 +107,12 @@ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.0-beta.134.tgz", "integrity": "sha512-FHhUVJTUIg2pXvOOhIt8sB1cQbcwrzZKzf9CPV7JM1auli20nGoYhyMFYGK7u++GXzTMJduIkU1OwlIBupewDw==", "requires": { - "@ethersproject/bignumber": "5.0.0-beta.136", - "@ethersproject/bytes": "5.0.0-beta.137", - "@ethersproject/keccak256": "5.0.0-beta.131", - "@ethersproject/logger": "5.0.0-beta.136", - "@ethersproject/rlp": "5.0.0-beta.132", - "bn.js": "4.11.8" + "@ethersproject/bignumber": ">=5.0.0-beta.130", + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/keccak256": ">=5.0.0-beta.127", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/rlp": ">=5.0.0-beta.126", + "bn.js": "^4.4.0" } }, "@ethersproject/bignumber": { @@ -38,10 +120,10 @@ "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.0-beta.136.tgz", "integrity": "sha512-G5fYkkMUpmQd7Qcxa7YdwavBkiSb44wI7GsZls/7eGFMYl2ySgmwOBMw3kj1lhheXbF73jfBfOBHvKYrN/p7pQ==", "requires": { - "@ethersproject/bytes": "5.0.0-beta.137", - "@ethersproject/logger": "5.0.0-beta.136", - "@ethersproject/properties": "5.0.0-beta.137", - "bn.js": "4.11.8" + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/properties": ">=5.0.0-beta.131", + "bn.js": "^4.4.0" } }, "@ethersproject/bytes": { @@ -49,7 +131,7 @@ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.0-beta.137.tgz", "integrity": "sha512-uBwchZzGP912Wcani6vM7RLtsnN69Uc9WTLvewsniKrpHpSx0/k33WUcQVosmkwPgUtqflKyGjcIqaea1Z9WHw==", "requires": { - "@ethersproject/logger": "5.0.0-beta.136" + "@ethersproject/logger": ">=5.0.0-beta.129" } }, "@ethersproject/constants": { @@ -57,7 +139,7 @@ "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.0-beta.133.tgz", "integrity": "sha512-VCTpk3AF00mlWQw1vg+fI6qCo0qO5EVWK574t4HNBKW6X748jc9UJPryKUz9JgZ64ZQupyLM92wHilsG/YTpNQ==", "requires": { - "@ethersproject/bignumber": "5.0.0-beta.136" + "@ethersproject/bignumber": ">=5.0.0-beta.130" } }, "@ethersproject/hash": { @@ -65,10 +147,10 @@ "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.0-beta.133.tgz", "integrity": "sha512-tfF11QxFlJCy92rMtUZ0kImchWhlYXkN5Gj5cYfTcCdWEUKwNq1LljDnlrjV2JabO6s5enb8uiUj4RBTo2+Rgw==", "requires": { - "@ethersproject/bytes": "5.0.0-beta.137", - "@ethersproject/keccak256": "5.0.0-beta.131", - "@ethersproject/logger": "5.0.0-beta.136", - "@ethersproject/strings": "5.0.0-beta.136" + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/keccak256": ">=5.0.0-beta.127", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/strings": ">=5.0.0-beta.130" } }, "@ethersproject/keccak256": { @@ -76,7 +158,7 @@ "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.0-beta.131.tgz", "integrity": "sha512-KQnqMwGV0IMOjAr/UTFO8DuLrmN1uaMvcV3zh9hiXhh3rCuY+WXdeUh49w1VQ94kBKmaP0qfGb7z4SdhUWUHjw==", "requires": { - "@ethersproject/bytes": "5.0.0-beta.137", + "@ethersproject/bytes": ">=5.0.0-beta.129", "js-sha3": "0.5.7" } }, @@ -90,7 +172,7 @@ "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.0-beta.137.tgz", "integrity": "sha512-AcvoVmV0aXixa7SxaPj237OAIEXl/UMJf4vl2yFNzWjf77mMyZaZoKLLOh2zes++mLeQ3EJEIebSWFm06L5NuA==", "requires": { - "@ethersproject/logger": "5.0.0-beta.136" + "@ethersproject/logger": ">=5.0.0-beta.129" } }, "@ethersproject/rlp": { @@ -98,8 +180,8 @@ "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.0-beta.132.tgz", "integrity": "sha512-P2oZkSMMazvMB0OaOM9GJnmLzHHSeCKqOp9bPAAY/rb65ICdtNjQMRYhOwinBFabrdV2z5TKWpwA9KIBkI0rTg==", "requires": { - "@ethersproject/bytes": "5.0.0-beta.137", - "@ethersproject/logger": "5.0.0-beta.136" + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/logger": ">=5.0.0-beta.129" } }, "@ethersproject/strings": { @@ -107,88 +189,817 @@ "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.0-beta.136.tgz", "integrity": "sha512-Hb9RvTrgGcOavHvtQZz+AuijB79BO3g1cfF2MeMfCU9ID4j3mbZv/olzDMS2pK9r4aERJpAS94AmlWzCgoY2LQ==", "requires": { - "@ethersproject/bytes": "5.0.0-beta.137", - "@ethersproject/constants": "5.0.0-beta.133", - "@ethersproject/logger": "5.0.0-beta.136" - } - }, - "@openzeppelin/contracts": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-2.5.0.tgz", - "integrity": "sha512-t3jm8FrhL9tkkJTofkznTqo/XXdHi21w5yXwalEnaMOp22ZwZ0f/mmKdlgMMLPFa6bSVHbY88mKESwJT/7m5Lg==", - "dev": true - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "1.1.3" + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/constants": ">=5.0.0-beta.128", + "@ethersproject/logger": ">=5.0.0-beta.129" } }, - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "requires": { - "@types/node": "13.9.5" + "@nomiclabs/buidler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/buidler/-/buidler-1.3.1.tgz", + "integrity": "sha512-ponVA2N7Y5T2pFBIr5Lzil5CtCz0TOh3PQHqPnJECGVH81vskB6PY+ISDi2O9imSvuBlbmQ0zVMUTh8GaynaBA==", + "requires": { + "@nomiclabs/ethereumjs-vm": "^4.1.1", + "@solidity-parser/parser": "^0.5.2", + "@types/bn.js": "^4.11.5", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "ansi-escapes": "^4.3.0", + "bip32": "^2.0.3", + "bip39": "^3.0.2", + "chalk": "^2.4.2", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "deepmerge": "^2.1.0", + "download": "^7.1.0", + "enquirer": "^2.3.0", + "eth-sig-util": "^2.5.2", + "ethereumjs-abi": "^0.6.8", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.0", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^6.1.0", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "io-ts": "1.10.4", + "is-installed-globally": "^0.2.0", + "lodash": "^4.17.11", + "merkle-patricia-tree": "^3.0.0", + "mocha": "^5.2.0", + "node-fetch": "^2.6.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "semver": "^6.3.0", + "slash": "^3.0.0", + "solc": "0.5.15", + "source-map-support": "^0.5.13", + "ts-essentials": "^2.0.7", + "tsort": "0.0.1", + "uuid": "^3.3.2", + "ws": "^7.2.1" + }, + "dependencies": { + "@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "requires": { + "type-fest": "^0.11.0" + } + }, + "bip39": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", + "requires": { + "@types/node": "11.11.6", + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ethereumjs-account": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz", + "integrity": "sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==", + "requires": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.2.0.tgz", + "integrity": "sha512-g3TzWCnR/eO4Q3abCwgFjOFw7uVOfxG4m8hMr/39Jcf2YvE5mHrFKqpyuraWV4zwx9XhjnVO4nY0ZI4llzl0Pg==", + "requires": { + "global-dirs": "^0.1.1", + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, + "merkle-patricia-tree": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz", + "integrity": "sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==", + "requires": { + "async": "^2.6.1", + "ethereumjs-util": "^5.2.0", + "level-mem": "^3.0.1", + "level-ws": "^1.0.0", + "readable-stream": "^3.0.6", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "level-ws": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz", + "integrity": "sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.8", + "xtend": "^4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" + }, + "raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "solc": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.5.15.tgz", + "integrity": "sha512-uI+7XtBu/0CXRc8IMjzxbh0haLwaBF32VxAkkks06zEk+mVcsQbHdjvojXX6zQYtZVuXdVYPVccoIjEhvvqKnQ==", + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "ts-essentials": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-2.0.12.tgz", + "integrity": "sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w==" + }, + "ws": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", + "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" + } } }, - "@types/chai": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", - "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==" - }, - "@types/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", - "requires": { - "@types/chai": "4.2.11" - } + "@nomiclabs/buidler-ethers": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/buidler-ethers/-/buidler-ethers-1.3.1.tgz", + "integrity": "sha512-tK5VRjDLIFycXmbiJN6QcknMVijp2v/y82VO7t+SbdDbKa9f3juwkKlel0pdHR8utzi1V0SWRcMRwKfhXuP+NA==", + "dev": true }, - "@types/concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0=", - "requires": { - "@types/node": "13.9.5" + "@nomiclabs/buidler-truffle5": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/buidler-truffle5/-/buidler-truffle5-1.3.1.tgz", + "integrity": "sha512-YDX/CZV8s8to80+JVIWvMbC5hvuoxQgOw2J40jI4L8hgaQ3XbKbYZ0zUHG1pNGp+70AbkOc2b/f/Xa/NxJXyaA==", + "requires": { + "@nomiclabs/truffle-contract": "^4.1.2", + "@types/chai": "^4.2.0", + "chai": "^4.2.0", + "ethereumjs-util": "^6.1.0", + "fs-extra": "^7.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + } } }, - "@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", + "@nomiclabs/buidler-waffle": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/buidler-waffle/-/buidler-waffle-1.3.1.tgz", + "integrity": "sha512-1uhrQQ3L7A15Ll4FwMxaXGpux7+JZz+fVBpxCEtWz2p87BY3GAXRTtgSI48AcKf2uZzaSCMgqjfxvZ2tO1c1zg==", + "dev": true, "requires": { - "@types/node": "13.9.5" + "@types/sinon-chai": "^3.2.3", + "@types/web3": "1.0.19" + }, + "dependencies": { + "@types/web3": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz", + "integrity": "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==", + "dev": true, + "requires": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + } } }, - "@types/mkdirp": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", - "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", - "dev": true, + "@nomiclabs/buidler-web3": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/buidler-web3/-/buidler-web3-1.3.1.tgz", + "integrity": "sha512-0ZBfaLR0Hu4lTRLpbdGcRkafWIfTVKrEY1iDw46JEvBbQ/Ll4SnUOi9qK2mBYvjPdhm1h9xHZB6ksoH4gGNeng==", "requires": { - "@types/node": "13.9.5" + "@types/bignumber.js": "^5.0.0" } }, - "@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" - }, - "@types/node": { - "version": "13.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.5.tgz", - "integrity": "sha512-hkzMMD3xu6BrJpGVLeQ3htQQNAcOrJjX7WFmtK8zWQpz2UJf13LCFF2ALA7c9OVdvc2vQJeDdjfR35M0sBCxvw==" - }, - "@types/prettier": { - "version": "1.19.1", + "@nomiclabs/ethereumjs-vm": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/ethereumjs-vm/-/ethereumjs-vm-4.1.1.tgz", + "integrity": "sha512-zQJBssmK7PyHonzng3VuFUvXQ6uugQeGAA7XvFVoMmEcY9KdWCqEQYh+XQ1jLZ8H9EISYB1BHF9HY6aFnflgcw==", + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "core-js-pure": "^3.0.1", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.1", + "ethereumjs-blockchain": "^4.0.2", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "~6.1.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1", + "util.promisify": "^1.0.0" + }, + "dependencies": { + "ethereumjs-account": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz", + "integrity": "sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==", + "requires": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz", + "integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "@nomiclabs/truffle-contract": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@nomiclabs/truffle-contract/-/truffle-contract-4.1.15.tgz", + "integrity": "sha512-+3lP8gyiOsnFXx8ueEBsLkk8H2VSj0T++nim2AbBsgYZfkoT8v7hcfh+MdCo5EY0t9fvQgmt2n7Szqku0cmttQ==", + "requires": { + "@truffle/blockchain-utils": "^0.0.18", + "@truffle/contract-schema": "^3.0.23", + "@truffle/error": "^0.0.8", + "@truffle/interface-adapter": "^0.4.6", + "bignumber.js": "^7.2.1", + "ethereum-ens": "^0.8.0", + "ethers": "^4.0.0-beta.1", + "exorcist": "^1.0.1", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + } + } + }, + "@openzeppelin/contracts": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-2.5.0.tgz", + "integrity": "sha512-t3jm8FrhL9tkkJTofkznTqo/XXdHi21w5yXwalEnaMOp22ZwZ0f/mmKdlgMMLPFa6bSVHbY88mKESwJT/7m5Lg==", + "dev": true + }, + "@resolver-engine/core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", + "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "is-url": "^1.2.4", + "request": "^2.85.0" + } + }, + "@resolver-engine/fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", + "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", + "dev": true, + "requires": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0" + } + }, + "@resolver-engine/imports": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", + "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", + "dev": true, + "requires": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0", + "hosted-git-info": "^2.6.0", + "path-browserify": "^1.0.0", + "url": "^0.11.0" + } + }, + "@resolver-engine/imports-fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", + "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", + "dev": true, + "requires": { + "@resolver-engine/fs": "^0.3.3", + "@resolver-engine/imports": "^0.3.3", + "debug": "^3.1.0" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@solidity-parser/parser": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.5.2.tgz", + "integrity": "sha512-uRyvnvVYmgNmTBpWDbBsH/0kPESQhQpEc4KsvMRLVzFJ1o1s0uIv0Y6Y9IB5vI1Dwz2CbS4X/y4Wyw/75cTFnQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@truffle/blockchain-utils": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.0.18.tgz", + "integrity": "sha512-XnRu5p1QO9krJizOeBY5WfzPDvEOmCnOT5u6qF8uN3Kkq9vcH3ZqW4XTuzz9ERZNpZfWb3UJx4PUosgeHLs5vw==", + "requires": { + "source-map-support": "^0.5.16" + } + }, + "@truffle/contract-schema": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.1.0.tgz", + "integrity": "sha512-eCMc1CwAmxIpQDsuGM9rCp4q/6GMcdQLTw3Tzd1qufyuti0vWGQwJbBAgSvfofr9ItXHueGwn7I5lVsIbOVYpQ==", + "requires": { + "ajv": "^6.10.0", + "crypto-js": "^3.1.9-1", + "debug": "^4.1.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@truffle/error": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.0.8.tgz", + "integrity": "sha512-x55rtRuNfRO1azmZ30iR0pf0OJ6flQqbax1hJz+Avk1K5fdmOv5cr22s9qFnwTWnS6Bw0jvJEoR0ITsM7cPKtQ==" + }, + "@truffle/interface-adapter": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.4.6.tgz", + "integrity": "sha512-FZAUb7tx/7VbxpAbo70+K2v22j1O7y4BwhWypRwYpf1YbE2C1OCo/L8zInaW5LfzRd2BEsfb2GjUgbK9VaFrDA==", + "requires": { + "bn.js": "^4.11.8", + "ethers": "^4.0.32", + "source-map-support": "^0.5.16", + "web3": "1.2.1" + }, + "dependencies": { + "web3": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.1.tgz", + "integrity": "sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw==", + "requires": { + "web3-bzz": "1.2.1", + "web3-core": "1.2.1", + "web3-eth": "1.2.1", + "web3-eth-personal": "1.2.1", + "web3-net": "1.2.1", + "web3-shh": "1.2.1", + "web3-utils": "1.2.1" + } + } + } + }, + "@types/bignumber.js": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz", + "integrity": "sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==", + "requires": { + "bignumber.js": "*" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "@types/chai": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", + "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==" + }, + "@types/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q==", + "requires": { + "@types/chai": "*" + } + }, + "@types/concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0=", + "requires": { + "@types/node": "*" + } + }, + "@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", + "requires": { + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz", + "integrity": "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==" + }, + "@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "@types/node": { + "version": "13.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.5.tgz", + "integrity": "sha512-hkzMMD3xu6BrJpGVLeQ3htQQNAcOrJjX7WFmtK8zWQpz2UJf13LCFF2ALA7c9OVdvc2vQJeDdjfR35M0sBCxvw==" + }, + "@types/node-fetch": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", + "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/prettier": { + "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", "dev": true @@ -204,15 +1015,89 @@ "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", "dev": true, "requires": { - "@types/node": "13.9.5" + "@types/node": "*" + } + }, + "@types/sinon": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.0.tgz", + "integrity": "sha512-v2TkYHkts4VXshMkcmot/H+ERZ2SevKa10saGaJPGCJ8vh3lKrC4u663zYEeRZxep+VbG6YRDtQ6gVqw9dYzPA==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinon-chai": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.4.tgz", + "integrity": "sha512-xq5KOWNg70PRC7dnR2VOxgYQ6paumW+4pTZP+6uTSdhpYsAUEeeT5bw6rRHHQrZ4KyR+M5ojOR+lje6TGSpUxA==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/sinon": "*" } }, + "@types/sinonjs__fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz", + "integrity": "sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA==", + "dev": true + }, + "@types/underscore": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.9.4.tgz", + "integrity": "sha512-CjHWEMECc2/UxOZh0kpiz3lEyX2Px3rQS9HzD20lxMvx571ivOBQKeLnqEjxUY0BMgp6WJWo/pQLRBwMW5v4WQ==", + "dev": true + }, "@types/web3": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.2.2.tgz", "integrity": "sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A==", "requires": { - "web3": "0.18.4" + "web3": "*" + } + }, + "@web3-js/scrypt-shim": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz", + "integrity": "sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw==", + "requires": { + "scryptsy": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "scryptsy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@web3-js/websocket": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@web3-js/websocket/-/websocket-1.0.30.tgz", + "integrity": "sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } } }, "abbrev": { @@ -225,8 +1110,16 @@ "resolved": "https://registry.npmjs.org/abi-decoder/-/abi-decoder-2.3.0.tgz", "integrity": "sha512-RZXG5mo1JhJjTBg/4NXlS8hyTr2fxiuFaz3UveRpoX9IIc3LPHmWz89dFqTHNQVbWi3VZqxSJqfUwWpb/mCHxA==", "requires": { - "web3-eth-abi": "1.2.1", - "web3-utils": "1.2.1" + "web3-eth-abi": "^1.2.1", + "web3-utils": "^1.2.1" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" } }, "abstract-leveldown": { @@ -234,7 +1127,7 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", "requires": { - "xtend": "4.0.2" + "xtend": "~4.0.0" } }, "accepts": { @@ -242,7 +1135,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "mime-types": "2.1.26", + "mime-types": "~2.1.24", "negotiator": "0.6.2" } }, @@ -257,8 +1150,8 @@ "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", "dev": true, "requires": { - "extend": "3.0.2", - "semver": "5.0.3" + "extend": "~3.0.0", + "semver": "~5.0.1" }, "dependencies": { "semver": { @@ -274,10 +1167,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "requires": { - "fast-deep-equal": "3.1.1", - "fast-json-stable-stringify": "2.1.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-align": { @@ -286,7 +1179,7 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -307,8 +1200,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -317,11 +1210,16 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", @@ -337,9 +1235,8 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "any-promise": { @@ -357,6 +1254,21 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" + } + } + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -368,8 +1280,8 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.7" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "arg": { @@ -383,7 +1295,7 @@ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "dev": true, "requires": { - "typical": "2.6.1" + "typical": "^2.6.1" } }, "array-flatten": { @@ -407,7 +1319,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "asn1.js": { @@ -415,9 +1327,9 @@ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.4", - "minimalistic-assert": "1.0.1" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert-plus": { @@ -435,7 +1347,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.14" } }, "async-eventemitter": { @@ -443,7 +1355,7 @@ "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", "requires": { - "async": "2.6.3" + "async": "^2.4.0" } }, "async-limiter": { @@ -476,7 +1388,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", "requires": { - "safe-buffer": "5.2.0" + "safe-buffer": "^5.0.1" } }, "base64-js": { @@ -489,7 +1401,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "big-number": { @@ -498,7 +1410,8 @@ "integrity": "sha512-C67Su0g+XsmXADX/UM9L/+xSbqqwq0D/qGJs2ky6Noy2FDuCZnC38ZSXODiaBvqWma2VYRZEXgm4H74PS6tCDg==" }, "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + "version": "2.0.7", + "resolved": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" }, "bindings": { "version": "1.5.0", @@ -508,24 +1421,45 @@ "file-uri-to-path": "1.0.0" } }, - "bip39": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.6.0.tgz", - "integrity": "sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg==", - "requires": { - "create-hash": "1.2.0", - "pbkdf2": "3.0.17", - "randombytes": "2.1.0", - "safe-buffer": "5.2.0", - "unorm": "1.6.0" - } + "bip32": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.5.tgz", + "integrity": "sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g==", + "requires": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "dependencies": { + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + } + } + }, + "bip39": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.6.0.tgz", + "integrity": "sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg==", + "requires": { + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", + "unorm": "^1.3.3" + } }, "bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", "requires": { - "safe-buffer": "5.2.0" + "safe-buffer": "^5.0.1" } }, "bl": { @@ -533,8 +1467,8 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "2.3.7", - "safe-buffer": "5.2.0" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "block-stream": { @@ -542,7 +1476,7 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "requires": { - "inherits": "2.0.4" + "inherits": "~2.0.0" } }, "bluebird": { @@ -561,15 +1495,15 @@ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { "bytes": "3.1.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", + "depd": "~1.1.2", "http-errors": "1.7.2", "iconv-lite": "0.4.24", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.7.0", "raw-body": "2.4.0", - "type-is": "1.6.18" + "type-is": "~1.6.17" }, "dependencies": { "debug": { @@ -593,13 +1527,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.2", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.1" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -626,8 +1560,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -636,7 +1570,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -646,7 +1580,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -665,12 +1599,12 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -678,9 +1612,9 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.2", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -688,10 +1622,10 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.1", - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "browserify-rsa": { @@ -699,8 +1633,24 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "bn.js": "4.11.8", - "randombytes": "2.1.0" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sha3": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.4.tgz", + "integrity": "sha1-CGxHuMgjFsnUcCLCYYWVRXbdjiY=", + "requires": { + "js-sha3": "^0.6.1", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "js-sha3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.6.1.tgz", + "integrity": "sha1-W4n3enR3Z5h39YxKB1JAk0sflcA=" + } } }, "browserify-sign": { @@ -708,13 +1658,13 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.5.2", - "inherits": "2.0.4", - "parse-asn1": "5.1.5" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "bs58": { @@ -722,7 +1672,7 @@ "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", "requires": { - "base-x": "3.0.8" + "base-x": "^3.0.2" } }, "bs58check": { @@ -730,9 +1680,9 @@ "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "requires": { - "bs58": "4.0.1", - "create-hash": "1.2.0", - "safe-buffer": "5.2.0" + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" } }, "buffer": { @@ -740,8 +1690,8 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", "requires": { - "base64-js": "1.3.1", - "ieee754": "1.1.13" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-alloc": { @@ -749,8 +1699,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "1.1.0", - "buffer-fill": "1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { @@ -798,13 +1748,13 @@ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "requires": { - "clone-response": "1.0.2", - "get-stream": "5.1.0", - "http-cache-semantics": "4.1.0", - "keyv": "3.1.0", - "lowercase-keys": "2.0.0", - "normalize-url": "4.5.0", - "responselike": "1.0.2" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "dependencies": { "get-stream": { @@ -812,7 +1762,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "lowercase-keys": { @@ -838,17 +1788,28 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + } + }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" } }, "chai-as-promised": { @@ -856,18 +1817,17 @@ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "requires": { - "check-error": "1.0.2" + "check-error": "^1.0.2" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "charenc": { @@ -885,7 +1845,7 @@ "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", "requires": { - "functional-red-black-tree": "1.0.1" + "functional-red-black-tree": "^1.0.1" } }, "chownr": { @@ -904,8 +1864,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "cli-boxes": { @@ -920,7 +1880,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "cli-table3": { @@ -928,9 +1888,9 @@ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "requires": { - "colors": "1.4.0", - "object-assign": "4.1.1", - "string-width": "2.1.1" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -948,8 +1908,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -957,7 +1917,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -968,8 +1928,8 @@ "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", "dev": true, "requires": { - "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -990,8 +1950,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -1000,7 +1960,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -1010,9 +1970,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "clone": { @@ -1025,7 +1985,7 @@ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "mimic-response": "1.0.1" + "mimic-response": "^1.0.0" } }, "code-point-at": { @@ -1038,8 +1998,8 @@ "resolved": "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz", "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=", "requires": { - "bs58": "2.0.1", - "create-hash": "1.2.0" + "bs58": "^2.0.1", + "create-hash": "^1.1.1" }, "dependencies": { "bs58": { @@ -1053,7 +2013,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -1061,8 +2020,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { "version": "1.4.0", @@ -1075,8 +2033,8 @@ "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "dev": true, "requires": { - "strip-ansi": "3.0.1", - "wcwidth": "1.0.1" + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" } }, "combined-stream": { @@ -1084,18 +2042,23 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, "command-line-args": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "dev": true, "requires": { - "array-back": "2.0.0", - "find-replace": "1.0.3", - "typical": "2.6.1" + "array-back": "^2.0.0", + "find-replace": "^1.0.3", + "typical": "^2.6.1" } }, "commander": { @@ -1113,10 +2076,19 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.1.1", - "inherits": "2.0.4", - "readable-stream": "2.3.7", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, "configstore": { @@ -1125,12 +2097,12 @@ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.2.3", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.4.3", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "console-control-strings": { @@ -1158,6 +2130,21 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", @@ -1173,6 +2160,11 @@ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1183,8 +2175,8 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "requires": { - "object-assign": "4.1.1", - "vary": "1.1.2" + "object-assign": "^4", + "vary": "^1" } }, "create-ecdh": { @@ -1192,8 +2184,8 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.5.2" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-error-class": { @@ -1202,7 +2194,7 @@ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "1.0.1" + "capture-stack-trace": "^1.0.0" } }, "create-hash": { @@ -1210,11 +2202,11 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.4", - "md5.js": "1.3.5", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -1222,12 +2214,12 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.4", - "ripemd160": "2.0.2", - "safe-buffer": "5.2.0", - "sha.js": "2.4.11" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-spawn": { @@ -1236,9 +2228,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.5", - "shebang-command": "1.2.0", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypt": { @@ -1251,17 +2243,17 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.3", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", - "inherits": "2.0.4", - "pbkdf2": "3.0.17", - "public-encrypt": "4.0.3", - "randombytes": "2.1.0", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "crypto-js": { @@ -1280,8 +2272,8 @@ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "requires": { - "es5-ext": "0.10.53", - "type": "1.2.0" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, "dashdash": { @@ -1289,7 +2281,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -1315,14 +2307,14 @@ "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", "requires": { - "decompress-tar": "4.1.1", - "decompress-tarbz2": "4.1.1", - "decompress-targz": "4.1.1", - "decompress-unzip": "4.0.1", - "graceful-fs": "4.2.3", - "make-dir": "1.3.0", - "pify": "2.3.0", - "strip-dirs": "2.1.0" + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" } }, "decompress-response": { @@ -1330,7 +2322,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "1.0.1" + "mimic-response": "^1.0.0" } }, "decompress-tar": { @@ -1338,9 +2330,9 @@ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "requires": { - "file-type": "5.2.0", - "is-stream": "1.1.0", - "tar-stream": "1.6.2" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" } }, "decompress-tarbz2": { @@ -1348,11 +2340,11 @@ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "requires": { - "decompress-tar": "4.1.1", - "file-type": "6.2.0", - "is-stream": "1.1.0", - "seek-bzip": "1.0.5", - "unbzip2-stream": "1.3.3" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "dependencies": { "file-type": { @@ -1367,9 +2359,9 @@ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "requires": { - "decompress-tar": "4.1.1", - "file-type": "5.2.0", - "is-stream": "1.1.0" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" } }, "decompress-unzip": { @@ -1377,10 +2369,10 @@ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "requires": { - "file-type": "3.9.0", - "get-stream": "2.3.1", - "pify": "2.3.0", - "yauzl": "2.10.0" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" }, "dependencies": { "file-type": { @@ -1393,8 +2385,8 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } } } @@ -1404,7 +2396,7 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "requires": { - "type-detect": "4.0.8" + "type-detect": "^4.0.0" } }, "deep-equal": { @@ -1412,12 +2404,12 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "requires": { - "is-arguments": "1.0.4", - "is-date-object": "1.0.2", - "is-regex": "1.0.5", - "object-is": "1.0.2", - "object-keys": "1.1.1", - "regexp.prototype.flags": "1.3.0" + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" }, "dependencies": { "object-keys": { @@ -1433,13 +2425,18 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "1.0.4" + "clone": "^1.0.2" }, "dependencies": { "clone": { @@ -1460,7 +2457,7 @@ "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", "requires": { - "abstract-leveldown": "2.6.3" + "abstract-leveldown": "~2.6.0" } }, "define-properties": { @@ -1468,7 +2465,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "1.1.1" + "object-keys": "^1.0.12" }, "dependencies": { "object-keys": { @@ -1503,8 +2500,8 @@ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { - "inherits": "2.0.4", - "minimalistic-assert": "1.0.1" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "destroy": { @@ -1528,9 +2525,9 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.1.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "dir-to-object": { @@ -1550,7 +2547,7 @@ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "dotignore": { @@ -1558,7 +2555,137 @@ "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" + } + }, + "download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "requires": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + } + } + }, + "file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + } } }, "drbg.js": { @@ -1566,9 +2693,9 @@ "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", "requires": { - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "create-hmac": "1.1.7" + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" } }, "duplexer3": { @@ -1581,8 +2708,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ee-first": { @@ -1601,13 +2728,13 @@ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.7", - "hmac-drbg": "1.0.1", - "inherits": "2.0.4", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "emoji-regex": { @@ -1626,7 +2753,42 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.24" + "iconv-lite": "~0.4.13" + } + }, + "encoding-down": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz", + "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==", + "requires": { + "abstract-leveldown": "^5.0.0", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "requires": { + "xtend": "~4.0.0" + } + }, + "level-codec": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.1.tgz", + "integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q==" + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "requires": { + "errno": "~0.1.1" + } + } } }, "end-of-stream": { @@ -1634,7 +2796,15 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", + "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", + "requires": { + "ansi-colors": "^3.2.1" } }, "errno": { @@ -1642,7 +2812,7 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error-ex": { @@ -1650,7 +2820,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -1658,17 +2828,17 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "requires": { - "es-to-primitive": "1.2.1", - "function-bind": "1.1.1", - "has": "1.0.3", - "has-symbols": "1.0.1", - "is-callable": "1.1.5", - "is-regex": "1.0.5", - "object-inspect": "1.7.0", - "object-keys": "1.1.1", - "object.assign": "4.1.0", - "string.prototype.trimleft": "2.1.1", - "string.prototype.trimright": "2.1.1" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" }, "dependencies": { "object-keys": { @@ -1683,9 +2853,9 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "is-callable": "1.1.5", - "is-date-object": "1.0.2", - "is-symbol": "1.0.3" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, "es5-ext": { @@ -1693,9 +2863,9 @@ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.3", - "next-tick": "1.0.0" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -1703,9 +2873,9 @@ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { - "d": "1.0.1", - "es5-ext": "0.10.53", - "es6-symbol": "3.1.3" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-symbol": { @@ -1713,8 +2883,8 @@ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { - "d": "1.0.1", - "ext": "1.4.0" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "escape-html": { @@ -1739,7 +2909,7 @@ "integrity": "sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw==", "dev": true, "requires": { - "esprima": "4.0.1" + "esprima": "^4.0.0" } }, "etag": { @@ -1752,8 +2922,8 @@ "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", "requires": { - "idna-uts46-hx": "2.3.1", - "js-sha3": "0.5.7" + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" } }, "eth-gas-reporter": { @@ -1762,20 +2932,20 @@ "integrity": "sha512-E/RdhLK93XiiHxdrh3WmpjrH42o9IA+6KRSPOjsbbCpRazzQq9aKaIz4e+GRlHKP+dpamna4GNxILJOTIdVebA==", "requires": { "@ethersproject/abi": "5.0.0-beta.142", - "cli-table3": "0.5.1", - "colors": "1.4.0", + "cli-table3": "^0.5.0", + "colors": "^1.1.2", "ethereumjs-util": "6.2.0", - "ethers": "4.0.46", - "fs-readdir-recursive": "1.1.0", - "lodash": "4.17.15", - "markdown-table": "1.1.3", - "mocha": "5.2.0", - "req-cwd": "2.0.0", - "request": "2.88.2", - "request-promise-native": "1.0.8", - "sha1": "1.1.1", - "solidity-parser-diligence": "0.4.18", - "sync-request": "6.1.0" + "ethers": "^4.0.40", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^5.2.0", + "req-cwd": "^2.0.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "sha1": "^1.1.1", + "solidity-parser-diligence": "^0.4.17", + "sync-request": "^6.0.0" } }, "eth-lib": { @@ -1783,80 +2953,62 @@ "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.5.2", - "nano-json-stream-parser": "0.1.2", - "servify": "0.1.12", - "ws": "3.3.3", - "xhr-request-promise": "0.1.2" - } - }, - "ethereum-common": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", - "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" - }, - "ethereumjs-account": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", - "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", - "requires": { - "ethereumjs-util": "5.2.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "eth-sig-util": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.3.tgz", + "integrity": "sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw==", + "requires": { + "buffer": "^5.2.1", + "elliptic": "^6.4.0", + "ethereumjs-abi": "0.6.5", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.0", + "tweetnacl-util": "^0.15.0" }, "dependencies": { - "ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "ethereumjs-abi": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz", + "integrity": "sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE=", "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" + "bn.js": "^4.10.0", + "ethereumjs-util": "^4.3.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", + "requires": { + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "keccakjs": "^0.2.0", + "rlp": "^2.0.0", + "secp256k1": "^3.0.1" + } + } } }, - "keccak": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", - "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", - "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" - } - } - } - }, - "ethereumjs-block": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", - "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", - "requires": { - "async": "2.6.3", - "ethereum-common": "0.2.0", - "ethereumjs-tx": "1.3.7", - "ethereumjs-util": "5.2.0", - "merkle-patricia-tree": "2.3.2" - }, - "dependencies": { "ethereumjs-util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, "keccak": { @@ -1864,155 +3016,600 @@ "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" } } }, - "ethereumjs-common": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", - "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==" - }, - "ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "ethashjs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.7.tgz", + "integrity": "sha1-ML/kGWcmaQoMWdO4Jy5w1NDDS64=", "requires": { - "ethereum-common": "0.0.18", - "ethereumjs-util": "5.2.0" + "async": "^1.4.2", + "buffer-xor": "^1.0.3", + "ethereumjs-util": "^4.0.1", + "miller-rabin": "^4.0.0" }, "dependencies": { - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", - "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" - } - }, - "keccak": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", - "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "keccakjs": "^0.2.0", + "rlp": "^2.0.0", + "secp256k1": "^3.0.1" } } } }, - "ethereumjs-util": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", - "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "ethereum-bloom-filters": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz", + "integrity": "sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ==", "requires": { - "@types/bn.js": "4.11.6", - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "2.1.0", - "rlp": "2.2.4", - "secp256k1": "3.8.0" + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + } } }, - "ethereumjs-vm": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", - "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", - "requires": { - "async": "2.6.3", - "async-eventemitter": "0.2.4", - "ethereumjs-account": "2.0.5", - "ethereumjs-block": "2.2.2", - "ethereumjs-common": "1.5.0", - "ethereumjs-util": "6.2.0", - "fake-merkle-patricia-tree": "1.0.1", - "functional-red-black-tree": "1.0.1", - "merkle-patricia-tree": "2.3.2", - "rustbn.js": "0.2.0", - "safe-buffer": "5.2.0" + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + }, + "ethereum-ens": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/ethereum-ens/-/ethereum-ens-0.8.0.tgz", + "integrity": "sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg==", + "requires": { + "bluebird": "^3.4.7", + "eth-ens-namehash": "^2.0.0", + "js-sha3": "^0.5.7", + "pako": "^1.0.4", + "underscore": "^1.8.3", + "web3": "^1.0.0-beta.34" }, "dependencies": { - "ethereumjs-block": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", - "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", - "requires": { - "async": "2.6.3", - "ethereumjs-common": "1.5.0", - "ethereumjs-tx": "2.1.2", - "ethereumjs-util": "5.2.0", - "merkle-patricia-tree": "2.3.2" - }, - "dependencies": { - "ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", - "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" - } - } - } + "@types/node": { + "version": "10.17.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.21.tgz", + "integrity": "sha512-PQKsydPxYxF1DsAFWmunaxd3sOi3iMt6Zmx/tgaagHYmwJ/9cRH91hQkeJZaUGWbvn0K5HlSVEXkn5U/llWPpQ==" + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" }, "ethereumjs-tx": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "requires": { - "ethereumjs-common": "1.5.0", - "ethereumjs-util": "6.2.0" + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" } }, - "keccak": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", - "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "ethers": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", + "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" - } + "@types/node": "^10.3.2", + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.3.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.3", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "elliptic": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", + "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + } + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "scrypt-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "swarm-js": { + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", + "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + } + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + }, + "web3": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.7.tgz", + "integrity": "sha512-jAAJHMfUlTps+jH2li1ckDFEpPrEEriU/ubegSTGRl3KRdNhEqT93+3kd7FHJTn3NgjcyURo2+f7Da1YcZL8Mw==", + "requires": { + "web3-bzz": "1.2.7", + "web3-core": "1.2.7", + "web3-eth": "1.2.7", + "web3-eth-personal": "1.2.7", + "web3-net": "1.2.7", + "web3-shh": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-bzz": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.7.tgz", + "integrity": "sha512-iTIWBR+Z+Bn09WprtKm46LmyNOasg2lUn++AjXkBTB8UNxlUybxtza84yl2ETTZUs0zuFzdSSAEgbjhygG+9oA==", + "requires": { + "@types/node": "^10.12.18", + "got": "9.6.0", + "swarm-js": "^0.1.40", + "underscore": "1.9.1" + } + }, + "web3-core": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.7.tgz", + "integrity": "sha512-QA0MTae0gXcr3KHe3cQ4x56+Wh43ZKWfMwg1gfCc3NNxPRM1jJ8qudzyptCAUcxUGXWpDG8syLIn1APDz5J8BQ==", + "requires": { + "@types/bn.js": "^4.11.4", + "@types/node": "^12.6.1", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.2.7", + "web3-core-method": "1.2.7", + "web3-core-requestmanager": "1.2.7", + "web3-utils": "1.2.7" + }, + "dependencies": { + "@types/node": { + "version": "12.12.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.37.tgz", + "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==" + } + } + }, + "web3-core-helpers": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.7.tgz", + "integrity": "sha512-bdU++9QATGeCetVrMp8pV97aQtVkN5oLBf/TWu/qumC6jK/YqrvLlBJLdwbz0QveU8zOSap6GCvJbqKvmmbV2A==", + "requires": { + "underscore": "1.9.1", + "web3-eth-iban": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-core-method": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.7.tgz", + "integrity": "sha512-e1TI0QUnByDMbQ8QHwnjxfjKw0LIgVRY4TYrlPijET9ebqUJU1HCayn/BHIMpV6LKyR1fQj9EldWyT64wZQXkg==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.7", + "web3-core-promievent": "1.2.7", + "web3-core-subscriptions": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-core-promievent": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.7.tgz", + "integrity": "sha512-jNmsM/czCeMGQqKKwM9/HZVTJVIF96hdMVNN/V9TGvp+EEE7vDhB4pUocDnc/QF9Z/5QFBCVmvNWttlRgZmU0A==", + "requires": { + "eventemitter3": "3.1.2" + } + }, + "web3-core-requestmanager": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.7.tgz", + "integrity": "sha512-HJb/txjHixu1dxIebiZQKBoJCaNu4gsh7mq/uj6Z/w6tIHbybL90s/7ADyMED353yyJ2tDWtYJqeMVAR+KtdaA==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.7", + "web3-providers-http": "1.2.7", + "web3-providers-ipc": "1.2.7", + "web3-providers-ws": "1.2.7" + } + }, + "web3-core-subscriptions": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.7.tgz", + "integrity": "sha512-W/CzQYOUawdMDvkgA/fmLsnG5aMpbjrs78LZMbc0MFXLpH3ofqAgO2by4QZrrTShUUTeWS0ZuEkFFL/iFrSObw==", + "requires": { + "eventemitter3": "3.1.2", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.7" + } + }, + "web3-eth": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.7.tgz", + "integrity": "sha512-ljLd0oB4IjWkzFGVan4HkYhJXhSXgn9iaSaxdJixKGntZPgWMJfxeA+uLwTrlxrWzhvy4f+39WnT7wCh5e9TGg==", + "requires": { + "underscore": "1.9.1", + "web3-core": "1.2.7", + "web3-core-helpers": "1.2.7", + "web3-core-method": "1.2.7", + "web3-core-subscriptions": "1.2.7", + "web3-eth-abi": "1.2.7", + "web3-eth-accounts": "1.2.7", + "web3-eth-contract": "1.2.7", + "web3-eth-ens": "1.2.7", + "web3-eth-iban": "1.2.7", + "web3-eth-personal": "1.2.7", + "web3-net": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-eth-abi": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.7.tgz", + "integrity": "sha512-4FnlT1q+D0XBkxSMXlIb/eG337uQeMaUdtVQ4PZ3XzxqpcoDuMgXm4o+3NRxnWmr4AMm6QKjM+hcC7c0mBKcyg==", + "requires": { + "ethers": "4.0.0-beta.3", + "underscore": "1.9.1", + "web3-utils": "1.2.7" + } + }, + "web3-eth-accounts": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.7.tgz", + "integrity": "sha512-AE7QWi/iIQIjXwlAPtlMabm/OPFF0a1PhxT1EiTckpYNP8fYs6jW7lYxEtJPPJIKqfMjoi1xkEqTVR1YZQ88lg==", + "requires": { + "@web3-js/scrypt-shim": "^0.1.0", + "crypto-browserify": "3.12.0", + "eth-lib": "^0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.2.7", + "web3-core-helpers": "1.2.7", + "web3-core-method": "1.2.7", + "web3-utils": "1.2.7" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } + }, + "web3-eth-contract": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.7.tgz", + "integrity": "sha512-uW23Y0iL7XroRNbf9fWZ1N6OYhEYTJX8gTuYASuRnpYrISN5QGiQML6pq/NCzqypR1bl5E0fuINZQSK/xefIVw==", + "requires": { + "@types/bn.js": "^4.11.4", + "underscore": "1.9.1", + "web3-core": "1.2.7", + "web3-core-helpers": "1.2.7", + "web3-core-method": "1.2.7", + "web3-core-promievent": "1.2.7", + "web3-core-subscriptions": "1.2.7", + "web3-eth-abi": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-eth-ens": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.7.tgz", + "integrity": "sha512-SPRnvUNWQ0CnnTDBteGIJkvFWEizJcAHlVsrFLICwcwFZu+appjX1UOaoGu2h3GXWtc/XZlu7B451Gi+Os2cTg==", + "requires": { + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.2.7", + "web3-core-helpers": "1.2.7", + "web3-core-promievent": "1.2.7", + "web3-eth-abi": "1.2.7", + "web3-eth-contract": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-eth-iban": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.7.tgz", + "integrity": "sha512-2NrClz1PoQ3nSJBd+91ylCOVga9qbTxjRofq/oSCoHVAEvz3WZyttx9k5DC+0rWqwJF1h69ufFvdHAAlmN/4lg==", + "requires": { + "bn.js": "4.11.8", + "web3-utils": "1.2.7" + } + }, + "web3-eth-personal": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.7.tgz", + "integrity": "sha512-2OAa1Spz0uB29dwCM8+1y0So7E47A4gKznjBEwXIYEcUIsvwT5X7ofFhC2XxyRpqlIWZSQAxRSSJFyupRRXzyw==", + "requires": { + "@types/node": "^12.6.1", + "web3-core": "1.2.7", + "web3-core-helpers": "1.2.7", + "web3-core-method": "1.2.7", + "web3-net": "1.2.7", + "web3-utils": "1.2.7" + }, + "dependencies": { + "@types/node": { + "version": "12.12.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.37.tgz", + "integrity": "sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg==" + } + } + }, + "web3-net": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.7.tgz", + "integrity": "sha512-j9qeZrS1FNyCeA0BfdLojkxOZQz3FKa1DJI+Dw9fEVhZS68vLOFANu2RB96gR9BoPHo5+k5D3NsKOoxt1gw3Gg==", + "requires": { + "web3-core": "1.2.7", + "web3-core-method": "1.2.7", + "web3-utils": "1.2.7" + } + }, + "web3-providers-http": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.7.tgz", + "integrity": "sha512-vazGx5onuH/zogrwkUaLFJwFcJ6CckP65VFSHoiV+GTQdkOqgoDIha7StKkslvDz4XJ2FuY/zOZHbtuOYeltXQ==", + "requires": { + "web3-core-helpers": "1.2.7", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.7.tgz", + "integrity": "sha512-/zc0y724H2zbkV4UbGGMhsEiLfafjagIzfrsWZnyTZUlSB0OGRmmFm2EkLJAgtXrLiodaHHyXKM0vB8S24bxdA==", + "requires": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.7" + } + }, + "web3-providers-ws": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.7.tgz", + "integrity": "sha512-b5XzqDpRkNVe6MFs5K6iqOEyjQikHtg3KuU2/ClCDV37hm0WN4xCRVMC0LwegulbDXZej3zT9+1CYzGaGFREzA==", + "requires": { + "@web3-js/websocket": "^1.0.29", + "eventemitter3": "^4.0.0", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.7" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + } + } + }, + "web3-shh": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.7.tgz", + "integrity": "sha512-f6PAgcpG0ZAo98KqCmeHoDEx5qzm3d5plet18DkT4U6WIeYowKdec8vZaLPRR7c2XreXFJ2gQf45CB7oqR7U/w==", + "requires": { + "web3-core": "1.2.7", + "web3-core-method": "1.2.7", + "web3-core-subscriptions": "1.2.7", + "web3-net": "1.2.7" + } + }, + "web3-utils": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.7.tgz", + "integrity": "sha512-FBh/CPJND+eiPeUF9KVbTyTZtXNWxPWtByBaWS6e2x4ACazPX711EeNaZaChIOGSLGe6se2n7kg6wnawe/MjuQ==", + "requires": { + "bn.js": "4.11.8", + "eth-lib": "0.2.7", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + } + } } } }, - "ethereumjs-wallet": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz", - "integrity": "sha512-DHEKPV9lYORM7dL8602dkb+AgdfzCYz2lxpdYQoD3OwG355LLDuivW9rGuLpDMCry/ORyBYV6n+QCo/71SwACg==", + "ethereum-waffle": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-2.4.1.tgz", + "integrity": "sha512-52HOubO/V80LDGN+N3FVb6yBq8L5vV2+kP7wjR5AgDoEeQHIrwqumcjJ22tE+FvzR8+eHTh3ItXjQPqJrMp+Mw==", + "dev": true, + "requires": { + "@ethereum-waffle/chai": "^2.4.1", + "@ethereum-waffle/compiler": "^2.4.1", + "@ethereum-waffle/provider": "^2.4.1", + "ethers": "^4.0.45" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", "requires": { - "aes-js": "3.1.2", - "bs58check": "2.1.2", - "ethereumjs-util": "5.2.0", - "hdkey": "1.1.1", - "safe-buffer": "5.2.0", - "scrypt.js": "0.2.1", - "utf8": "3.0.0", - "uuid": "3.4.0" + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" }, "dependencies": { "ethereumjs-util": { @@ -2020,13 +3617,13 @@ "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, "keccak": { @@ -2034,75 +3631,378 @@ "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" } } } }, - "ethers": { - "version": "4.0.46", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.46.tgz", - "integrity": "sha512-/dPMzzpInhtiip4hKFvsDiJKeRk64IhyA+Po7CtNXneQFSOCYXg8eBFt+jXbxUQyApgWnWOtYxWdfn9+CvvxDA==", + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", "requires": { - "aes-js": "3.0.0", - "bn.js": "4.11.8", - "elliptic": "6.5.2", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" }, "dependencies": { - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", "requires": { - "inherits": "2.0.4", - "minimalistic-assert": "1.0.1" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } } } }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" + "ethereumjs-blockchain": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.3.tgz", + "integrity": "sha512-0nJWbyA+Gu0ZKZr/cywMtB/77aS/4lOVsIKbgUN2sFQYscXO5rPbUfrEe7G2Zhjp86/a0VqLllemDSTHvx3vZA==", + "requires": { + "async": "^2.6.1", + "ethashjs": "~0.0.7", + "ethereumjs-block": "~2.2.2", + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "~6.1.0", + "flow-stoplight": "^1.0.0", + "level-mem": "^3.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.2", + "semaphore": "^1.1.0" }, "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - } - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz", + "integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "ethereumjs-common": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", + "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==" + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethereumjs-wallet": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.2.tgz", + "integrity": "sha512-DHEKPV9lYORM7dL8602dkb+AgdfzCYz2lxpdYQoD3OwG355LLDuivW9rGuLpDMCry/ORyBYV6n+QCo/71SwACg==", + "requires": { + "aes-js": "^3.1.1", + "bs58check": "^2.1.2", + "ethereumjs-util": "^5.2.0", + "hdkey": "^1.0.0", + "safe-buffer": "^5.1.2", + "scrypt.js": "^0.2.0", + "utf8": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethers": { + "version": "4.0.46", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.46.tgz", + "integrity": "sha512-/dPMzzpInhtiip4hKFvsDiJKeRk64IhyA+Po7CtNXneQFSOCYXg8eBFt+jXbxUQyApgWnWOtYxWdfn9+CvvxDA==", + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.5.2", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, "eventemitter3": { "version": "3.1.2", @@ -2114,8 +4014,8 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "md5.js": "1.3.5", - "safe-buffer": "5.2.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "execa": { @@ -2124,13 +4024,13 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.3", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { "get-stream": { @@ -2147,41 +4047,59 @@ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", "dev": true }, + "exorcist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exorcist/-/exorcist-1.0.1.tgz", + "integrity": "sha1-eTFuPEiFhFSQ97tAXA5bXbEWfFI=", + "requires": { + "is-stream": "~1.1.0", + "minimist": "0.0.5", + "mkdirp": "~0.5.1", + "mold-source-map": "~0.4.0" + }, + "dependencies": { + "minimist": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz", + "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=" + } + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "accepts": "1.3.7", + "accepts": "~1.3.7", "array-flatten": "1.1.1", "body-parser": "1.19.0", "content-disposition": "0.5.3", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.2", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.3", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.6", + "proxy-addr": "~2.0.5", "qs": "6.7.0", - "range-parser": "1.2.1", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", "send": "0.17.1", "serve-static": "1.14.1", "setprototypeof": "1.1.1", - "statuses": "1.5.0", - "type-is": "1.6.18", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -2209,7 +4127,7 @@ "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", "requires": { - "type": "2.0.0" + "type": "^2.0.0" }, "dependencies": { "type": { @@ -2219,6 +4137,23 @@ } } }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2230,8 +4165,8 @@ "integrity": "sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==", "dev": true, "requires": { - "esprima-extract-comments": "1.1.0", - "parse-code-context": "1.0.0" + "esprima-extract-comments": "^1.1.0", + "parse-code-context": "^1.0.0" } }, "extsprintf": { @@ -2244,7 +4179,7 @@ "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", "requires": { - "checkpoint-store": "1.1.0" + "checkpoint-store": "^1.1.0" } }, "fast-deep-equal": { @@ -2262,7 +4197,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "file-type": { @@ -2275,18 +4210,33 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" + }, + "filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.3", - "statuses": "1.5.0", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -2305,8 +4255,8 @@ "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", "dev": true, "requires": { - "array-back": "1.0.4", - "test-value": "2.1.0" + "array-back": "^1.0.4", + "test-value": "^2.1.0" }, "dependencies": { "array-back": { @@ -2315,7 +4265,7 @@ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "dev": true, "requires": { - "typical": "2.6.1" + "typical": "^2.6.0" } } } @@ -2325,16 +4275,21 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, + "flow-stoplight": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz", + "integrity": "sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s=" + }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "is-callable": "1.1.5" + "is-callable": "^1.1.3" } }, "forever-agent": { @@ -2347,9 +4302,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.8", - "mime-types": "2.1.26" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "forwarded": { @@ -2357,11 +4312,25 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==" + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2372,11 +4341,11 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.7.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, "fs-minipass": { @@ -2384,7 +4353,29 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "requires": { - "minipass": "2.9.0" + "minipass": "^2.6.0" + } + }, + "fs-promise": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fs-promise/-/fs-promise-2.0.3.tgz", + "integrity": "sha1-9k5PhUvPaJqovdy6JokW2z20aFQ=", + "requires": { + "any-promise": "^1.3.0", + "fs-extra": "^2.0.0", + "mz": "^2.6.0", + "thenify-all": "^1.6.0" + }, + "dependencies": { + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0" + } + } } }, "fs-readdir-recursive": { @@ -2402,35 +4393,14440 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "requires": { - "graceful-fs": "4.2.3", - "inherits": "2.0.4", - "mkdirp": "0.5.4", - "rimraf": "2.7.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "ganache-core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/ganache-core/-/ganache-core-2.10.2.tgz", + "integrity": "sha512-4XEO0VsqQ1+OW7Za5fQs9/Kk7o8M0T1sRfFSF8h9NeJ2ABaqMO5waqxf567ZMcSkRKaTjUucBSz83xNfZv1HDg==", + "dev": true, + "requires": { + "abstract-leveldown": "3.0.0", + "async": "2.6.2", + "bip39": "2.5.0", + "cachedown": "1.0.0", + "clone": "2.1.2", + "debug": "3.2.6", + "encoding-down": "5.0.4", + "eth-sig-util": "2.3.0", + "ethereumjs-abi": "0.6.7", + "ethereumjs-account": "3.0.0", + "ethereumjs-block": "2.2.2", + "ethereumjs-common": "1.5.0", + "ethereumjs-tx": "2.1.2", + "ethereumjs-util": "6.2.0", + "ethereumjs-vm": "4.1.3", + "ethereumjs-wallet": "0.6.3", + "heap": "0.2.6", + "level-sublevel": "6.6.4", + "levelup": "3.1.1", + "lodash": "4.17.14", + "merkle-patricia-tree": "2.3.2", + "seedrandom": "3.0.1", + "source-map-support": "0.5.12", + "tmp": "0.1.0", + "web3": "1.2.4", + "web3-provider-engine": "14.2.1", + "websocket": "1.0.29" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/core": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", + "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", + "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz", + "integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", + "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" + }, + "@babel/runtime": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz", + "integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==", + "requires": { + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } + } + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", + "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==" + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/bignumber.js": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz", + "integrity": "sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==", + "requires": { + "bignumber.js": "*" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "requires": { + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/node": { + "version": "13.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.5.2.tgz", + "integrity": "sha512-Fr6a47c84PRLfd7M7u3/hEknyUdQrrBA6VoPmkze0tcflhU5UnpWEX2kn12ktA/lb+MNHSqFlSiPHIHsaErTPA==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/web3": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.2.2.tgz", + "integrity": "sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A==", + "requires": { + "web3": "*" + } + }, + "@web3-js/scrypt-shim": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz", + "integrity": "sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw==", + "requires": { + "scryptsy": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "scryptsy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@web3-js/websocket": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@web3-js/websocket/-/websocket-1.0.30.tgz", + "integrity": "sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abstract-leveldown": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz", + "integrity": "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" + }, + "aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "dev": true, + "optional": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + } + } + }, + "ajv": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "requires": { + "default-require-extensions": "^3.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "assert-match": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/assert-match/-/assert-match-1.1.1.tgz", + "integrity": "sha512-c0QY2kpYVrH/jis6cCq9Mnt4/bIdGALDh1N8HY9ZARZedsMs5LSbgywxkjd5A1uNVLN0L8evANxBPxKiabVoZw==", + "requires": { + "assert": "^1.4.1", + "babel-runtime": "^6.23.0", + "es-to-primitive": "^1.1.1", + "lodash.merge": "^4.6.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "requires": { + "async": "^2.4.0" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", + "dev": true, + "requires": { + "babel-core": "^6.0.14", + "object-assign": "^4.0.0" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "dev": true, + "requires": { + "precond": "0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base-x": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", + "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip39": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz", + "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==", + "dev": true, + "requires": { + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", + "unorm": "^1.3.3" + } + }, + "bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "browserfs": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/browserfs/-/browserfs-1.4.3.tgz", + "integrity": "sha512-tz8HClVrzTJshcyIu8frE15cjqjcBIu15Bezxsvl/i+6f59iNCN3kznlWjz0FEb3DlnDx3gW5szxeT6D1x0s0w==", + "requires": { + "async": "^2.1.4", + "pako": "^1.0.4" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sha3": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/browserify-sha3/-/browserify-sha3-0.0.4.tgz", + "integrity": "sha1-CGxHuMgjFsnUcCLCYYWVRXbdjiY=", + "dev": true, + "requires": { + "js-sha3": "^0.6.1", + "safe-buffer": "^5.1.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "optional": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "optional": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "bytewise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4=", + "dev": true, + "requires": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "bytewise-core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI=", + "dev": true, + "requires": { + "typewise-core": "^1.2" + } + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "cachedown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz", + "integrity": "sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU=", + "dev": true, + "requires": { + "abstract-leveldown": "^2.4.1", + "lru-cache": "^3.2.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "requires": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001023", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz", + "integrity": "sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", + "dev": true, + "requires": { + "functional-red-black-tree": "^1.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + } + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "coinstring": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz", + "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=", + "dev": true, + "optional": true, + "requires": { + "bs58": "^2.0.1", + "create-hash": "^1.1.1" + }, + "dependencies": { + "bs58": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz", + "integrity": "sha1-VZCNWPGYKrogCPob7Y+RmYopv40=", + "dev": true, + "optional": true + } + } + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", + "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + } + } + }, + "coveralls": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.9.tgz", + "integrity": "sha512-nNBg3B1+4iDox5A5zqHKzUTiwl2ey4k2o0NEcVZYvl+GOSJdKBj4AJGKLv6h3SvWch7tABHePAQOSZWM9E2hMg==", + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.0", + "request": "^2.88.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-env": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", + "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "requires": { + "cross-spawn": "^7.0.0" + } + }, + "cross-fetch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.3.tgz", + "integrity": "sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw==", + "dev": true, + "requires": { + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" + } + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "requires": { + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.341", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.341.tgz", + "integrity": "sha512-iezlV55/tan1rvdvt7yg7VHRSkt+sKfzQ16wTDqTbQqtl4+pSUkKPXpQHDvEt0c7gKcUHHwUbffOgXz6bn096g==", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "encoding-down": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz", + "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==", + "dev": true, + "requires": { + "abstract-leveldown": "^5.0.0", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", + "integrity": "sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA==" + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", + "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "eslint-plugin-es": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", + "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", + "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, + "eslint-plugin-node": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", + "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", + "requires": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==" + }, + "eslint-plugin-standard": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==" + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eth-block-tracker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz", + "integrity": "sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug==", + "dev": true, + "requires": { + "eth-query": "^2.1.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.3", + "ethjs-util": "^0.1.3", + "json-rpc-engine": "^3.6.0", + "pify": "^2.3.0", + "tape": "^4.6.3" + }, + "dependencies": { + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + } + } + }, + "eth-json-rpc-infura": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz", + "integrity": "sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==", + "dev": true, + "requires": { + "cross-fetch": "^2.1.1", + "eth-json-rpc-middleware": "^1.5.0", + "json-rpc-engine": "^3.4.0", + "json-rpc-error": "^2.0.0" + } + }, + "eth-json-rpc-middleware": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz", + "integrity": "sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==", + "dev": true, + "requires": { + "async": "^2.5.0", + "eth-query": "^2.1.2", + "eth-tx-summary": "^3.1.2", + "ethereumjs-block": "^1.6.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.2", + "ethereumjs-vm": "^2.1.0", + "fetch-ponyfill": "^4.0.0", + "json-rpc-engine": "^3.6.0", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "tape": "^4.6.3" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "dev": true + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", + "dev": true + } + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "dev": true, + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + } + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + } + } + }, + "eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha1-1nQdkAAQa1FRDHLbktY2VFam2l4=", + "dev": true, + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-sig-util": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.3.0.tgz", + "integrity": "sha512-ugD1AvaggvKaZDgnS19W5qOfepjGc7qHrt7TrAaL54gJw9SHvgIXJ3r2xOMW30RWJZNP+1GlTOy5oye7yXA4xA==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "elliptic": "^6.4.0", + "ethereumjs-abi": "0.6.5", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.0", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "ethereumjs-abi": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz", + "integrity": "sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE=", + "dev": true, + "requires": { + "bn.js": "^4.10.0", + "ethereumjs-util": "^4.3.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", + "dev": true, + "requires": { + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "keccakjs": "^0.2.0", + "rlp": "^2.0.0", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + } + } + }, + "eth-tx-summary": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz", + "integrity": "sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==", + "dev": true, + "requires": { + "async": "^2.1.2", + "clone": "^2.0.0", + "concat-stream": "^1.5.1", + "end-of-stream": "^1.1.0", + "eth-query": "^2.0.2", + "ethereumjs-block": "^1.4.1", + "ethereumjs-tx": "^1.1.1", + "ethereumjs-util": "^5.0.1", + "ethereumjs-vm": "^2.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "dev": true + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", + "dev": true + } + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "dev": true, + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + } + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + } + } + }, + "ethashjs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.7.tgz", + "integrity": "sha1-ML/kGWcmaQoMWdO4Jy5w1NDDS64=", + "dev": true, + "requires": { + "async": "^1.4.2", + "buffer-xor": "^1.0.3", + "ethereumjs-util": "^4.0.1", + "miller-rabin": "^4.0.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "ethereumjs-util": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", + "dev": true, + "requires": { + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "keccakjs": "^0.2.0", + "rlp": "^2.0.0", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereum-bloom-filters": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz", + "integrity": "sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA==", + "requires": { + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + } + } + }, + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", + "dev": true + }, + "ethereumjs-abi": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.7.tgz", + "integrity": "sha512-EMLOA8ICO5yAaXDhjVEfYjsJIXYutY8ufTE93eEKwsVtp2usQreKwsDTJ9zvam3omYqNuffr8IONIqb2uUslGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-account": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz", + "integrity": "sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==", + "dev": true, + "requires": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereumjs-blockchain": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.3.tgz", + "integrity": "sha512-0nJWbyA+Gu0ZKZr/cywMtB/77aS/4lOVsIKbgUN2sFQYscXO5rPbUfrEe7G2Zhjp86/a0VqLllemDSTHvx3vZA==", + "dev": true, + "requires": { + "async": "^2.6.1", + "ethashjs": "~0.0.7", + "ethereumjs-block": "~2.2.2", + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "~6.1.0", + "flow-stoplight": "^1.0.0", + "level-mem": "^3.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.2", + "semaphore": "^1.1.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz", + "integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "ethereumjs-common": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", + "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==" + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + }, + "dependencies": { + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + } + } + }, + "ethereumjs-vm": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.1.3.tgz", + "integrity": "sha512-RTrD0y7My4O6Qr1P2ZIsMfD6RzL6kU/RhBZ0a5XrPzAeR61crBS7or66ohDrvxDI/rDBxMi+6SnsELih6fzalw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "core-js-pure": "^3.0.1", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.2", + "ethereumjs-blockchain": "^4.0.3", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.2", + "ethereumjs-util": "^6.2.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1", + "util.promisify": "^1.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + } + } + }, + "ethereumjs-wallet": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz", + "integrity": "sha512-qiXPiZOsStem+Dj/CQHbn5qex+FVkuPmGH7SvSnA9F3tdRDt8dLMyvIj3+U05QzVZNPYh4HXEdnzoYI4dZkr9w==", + "dev": true, + "optional": true, + "requires": { + "aes-js": "^3.1.1", + "bs58check": "^2.1.2", + "ethereumjs-util": "^6.0.0", + "hdkey": "^1.1.0", + "randombytes": "^2.0.6", + "safe-buffer": "^5.1.2", + "scrypt.js": "^0.3.0", + "utf8": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "ethers": { + "version": "4.0.43", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.43.tgz", + "integrity": "sha512-VjQRVgPrlU12jSMvypdE1yEqYQccdVbH8bbiz67dLF7raHlRV4+zW70GlxHcZYqgsnz0XYWrn6C06gqTQRb5tw==", + "requires": { + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.5.2", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + }, + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", + "dev": true, + "requires": { + "checkpoint-store": "^1.1.0" + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fetch-ponyfill": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", + "integrity": "sha1-rjzl9zLGReq4fkroeTQUcJsjmJM=", + "dev": true, + "requires": { + "node-fetch": "~1.7.1" + }, + "dependencies": { + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "find-cache-dir": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", + "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, + "flow-stoplight": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz", + "integrity": "sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s=", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fromentries": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", + "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "generic-pool": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.0.4.tgz", + "integrity": "sha1-+XGN7agvoSXtXEPjQcmiFadm2aM=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz", + "integrity": "sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==", + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + } + } + }, + "hdkey": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-1.1.1.tgz", + "integrity": "sha512-DvHZ5OuavsfWs5yfVJZestsnc3wzPvLWNk6c2nRUfo6X+OtxypGt20vDDf7Ba+MJzjL3KS1og2nw2eBbLCOUTA==", + "dev": true, + "optional": true, + "requires": { + "coinstring": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "heap": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", + "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==" + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "humanize": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/humanize/-/humanize-0.0.9.tgz", + "integrity": "sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=" + }, + "husky": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.0.10.tgz", + "integrity": "sha512-Ptm4k2DqOwxeK/kzu5RaJmNRoGvESrgDXObFcZ8aJZcyXyMBHhM2FqZj6zYKdetadmP3wCwxEHCBuB9xGlRp8A==", + "requires": { + "chalk": "^3.0.0", + "ci-info": "^2.0.0", + "cosmiconfig": "^6.0.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + } + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "requires": { + "append-transform": "^2.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz", + "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==", + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "requires": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" + }, + "dependencies": { + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", + "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==", + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-scrypt": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/js-scrypt/-/js-scrypt-0.2.0.tgz", + "integrity": "sha1-emK3AbRhbnCtDN5URiequ5nX/jk=", + "requires": { + "generic-pool": "~2.0.4" + } + }, + "js-sha3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.6.1.tgz", + "integrity": "sha1-W4n3enR3Z5h39YxKB1JAk0sflcA=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-rpc-engine": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz", + "integrity": "sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==", + "dev": true, + "requires": { + "async": "^2.0.1", + "babel-preset-env": "^1.7.0", + "babelify": "^7.3.0", + "json-rpc-error": "^2.0.0", + "promise-to-callback": "^1.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "json-rpc-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz", + "integrity": "sha1-p6+cICg4tekFxyUOVH8a/3cligI=", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha1-uknZat7RRE27jaPSA3SKy7zeyMg=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "dev": true, + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, + "keccakjs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.3.tgz", + "integrity": "sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg==", + "dev": true, + "requires": { + "browserify-sha3": "^0.0.4", + "sha3": "^1.2.2" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=" + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "level-codec": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.1.tgz", + "integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q==", + "dev": true + }, + "level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==" + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "level-errors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz", + "integrity": "sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-mem": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz", + "integrity": "sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==", + "dev": true, + "requires": { + "level-packager": "~4.0.0", + "memdown": "~3.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "memdown": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz", + "integrity": "sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~5.0.0", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "level-packager": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz", + "integrity": "sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==", + "dev": true, + "requires": { + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" + } + }, + "level-post": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz", + "integrity": "sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==", + "dev": true, + "requires": { + "ltgt": "^2.1.2" + } + }, + "level-sublevel": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz", + "integrity": "sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA==", + "dev": true, + "requires": { + "bytewise": "~1.1.0", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "level-iterator-stream": "^2.0.3", + "ltgt": "~2.1.1", + "pull-defer": "^0.2.2", + "pull-level": "^2.0.3", + "pull-stream": "^3.6.8", + "typewiselite": "~1.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "level-iterator-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz", + "integrity": "sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.5", + "xtend": "^4.0.0" + } + }, + "ltgt": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz", + "integrity": "sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ=", + "dev": true + } + } + }, + "level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "requires": { + "xtend": "^4.0.2" + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz", + "integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==", + "dev": true, + "requires": { + "deferred-leveldown": "~4.0.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~3.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz", + "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==", + "dev": true, + "requires": { + "abstract-leveldown": "~5.0.0", + "inherits": "^2.0.3" + } + }, + "level-iterator-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz", + "integrity": "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "xtend": "^4.0.0" + } + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "lint-staged": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.0.0.tgz", + "integrity": "sha512-/MrZOLMnljjMHakxlRd1Z5Kr8wWWlrWFasye7HaTv5tx56icwzT/STRty8flMKsyzBGTfTa9QszNVPsDS/yOug==", + "requires": { + "chalk": "^3.0.0", + "commander": "^4.0.1", + "cosmiconfig": "^6.0.0", + "debug": "^4.1.1", + "dedent": "^0.7.0", + "execa": "^3.4.0", + "listr": "^0.14.3", + "log-symbols": "^3.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "stringify-object": "^3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.0.tgz", + "integrity": "sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "^1.0.0" + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "looper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", + "integrity": "sha1-Zs0Md0rz1P7axTeU90LbVtqPCew=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "dev": true, + "requires": { + "pseudomap": "^1.0.1" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memdown": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", + "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", + "requires": { + "abstract-leveldown": "~6.2.1", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.2.tgz", + "integrity": "sha512-/a+Iwj0rn//CX0EJOasNyZJd2o8xur8Ce9C57Sznti/Ilt/cb6Qd8/k98A4ZOklXgTG+iAYYUs1OTG0s1eH+zQ==", + "requires": { + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz", + "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==" + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "requires": { + "mkdirp": "*" + } + }, + "mocha": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.0.0.tgz", + "integrity": "sha512-CirsOPbO3jU86YKjjMzFLcXIb5YiGLUrjrXFHoJ3e2z9vWiaZVCZQ2+gtRGMPWF+nFhN6AWwLM/juzAQ6KRkbA==", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "requires": { + "picomatch": "^2.0.4" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "mocha-lcov-reporter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mocha-lcov-reporter/-/mocha-lcov-reporter-1.3.0.tgz", + "integrity": "sha1-Rpve9PivyaEWBW8HnfYYLQr7A4Q=" + }, + "mock-fs": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.10.4.tgz", + "integrity": "sha512-gDfZDLaPIvtOusbusLinfx6YSe2YpQsDT8qdP41P47dQ/NQggtkHukz7hwqgt8QvMBmAv+Z6DGmXPyb5BWX2nQ==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "requires": { + "process-on-spawn": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "nyc": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz", + "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==", + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "js-yaml": "^3.13.1", + "make-dir": "^3.0.0", + "node-preload": "^0.2.0", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "uuid": "^3.3.3", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "rimraf": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", + "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", + "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^16.1.0" + } + }, + "yargs-parser": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", + "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "oboe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", + "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", + "requires": { + "http-https": "^1.0.0" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==" + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "requires": { + "semver-compare": "^1.0.0" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "requires": { + "fromentries": "^1.2.0" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha1-XSp0kBC/tn2WNZj805YHRqaP7vc=", + "dev": true, + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pull-cat": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", + "integrity": "sha1-tkLdElXaN2pwa220+pYvX9t0wxs=", + "dev": true + }, + "pull-defer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz", + "integrity": "sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==", + "dev": true + }, + "pull-level": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pull-level/-/pull-level-2.0.4.tgz", + "integrity": "sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg==", + "dev": true, + "requires": { + "level-post": "^1.0.7", + "pull-cat": "^1.1.9", + "pull-live": "^1.0.1", + "pull-pushable": "^2.0.0", + "pull-stream": "^3.4.0", + "pull-window": "^2.1.4", + "stream-to-pull-stream": "^1.7.1" + } + }, + "pull-live": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz", + "integrity": "sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU=", + "dev": true, + "requires": { + "pull-cat": "^1.1.9", + "pull-stream": "^3.4.0" + } + }, + "pull-pushable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz", + "integrity": "sha1-Xy867UethpGfAbEqLpnW8b13ZYE=", + "dev": true + }, + "pull-stream": { + "version": "3.6.14", + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.14.tgz", + "integrity": "sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew==", + "dev": true + }, + "pull-window": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", + "integrity": "sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA=", + "dev": true, + "requires": { + "looper": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "requires": { + "es6-error": "^4.0.1" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", + "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.4.tgz", + "integrity": "sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw==", + "requires": { + "bn.js": "^4.11.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "dev": true, + "requires": { + "events": "^3.0.0" + } + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "scrypt": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", + "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.0.8" + } + }, + "scrypt-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" + }, + "scrypt.js": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.3.0.tgz", + "integrity": "sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A==", + "dev": true, + "optional": true, + "requires": { + "scrypt": "^6.0.2", + "scryptsy": "^1.2.1" + } + }, + "scryptsy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", + "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", + "dev": true, + "optional": true, + "requires": { + "pbkdf2": "^3.0.3" + } + }, + "secp256k1": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", + "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.5.2", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + } + } + }, + "seedrandom": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz", + "integrity": "sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==", + "dev": true + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "requires": { + "commander": "~2.8.1" + } + }, + "semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", + "dev": true + }, + "semver": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.1.tgz", + "integrity": "sha512-WfuG+fl6eh3eZ2qAf6goB7nhiCd7NPXhmyFxigB/TOkQyeLP8w8GsVehvtGNtnNmyboz4TgeK40B1Kbql/8c5A==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "sha3": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.2.6.tgz", + "integrity": "sha512-KgLGmJGrmNB4JWVsAV11Yk6KbvsAiygWJc7t5IebWva/0NukNrjJqhtKhzy3Eiv2AKuGvhZZt7dt1mDo7HkoiQ==", + "dev": true, + "requires": { + "nan": "2.13.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "solc": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.1.tgz", + "integrity": "sha512-iKqNYps2p++x8L9sBg7JeAJb7EmW8VJ/2asAzwlLYcUhj86AzuWLe94UTSQHv1SSCCj/x6lya8twvXkZtlTbIQ==", + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "requires": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "dependencies": { + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "requires": { + "semver": "^6.0.0" + } + }, + "rimraf": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz", + "integrity": "sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + } + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + }, + "dependencies": { + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "stream-to-pull-stream": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz", + "integrity": "sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==", + "dev": true, + "requires": { + "looper": "^3.0.0", + "pull-stream": "^3.2.3" + }, + "dependencies": { + "looper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", + "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trim": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", + "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "swarm-js": { + "version": "0.1.39", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.39.tgz", + "integrity": "sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg==", + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "decompress": "^4.0.0", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "tape": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.0.tgz", + "integrity": "sha512-J/hvA+GJnuWJ0Sj8Z0dmu3JgMNU+MmusvkCT7+SN4/2TklW18FNCp/UuHIEhPZwHfy4sXfKYgC7kypKg4umbOw==", + "dev": true, + "requires": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.0", + "object-inspect": "~1.7.0", + "resolve": "~1.14.2", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "temp": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.1.tgz", + "integrity": "sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA==", + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "terser": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", + "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.2.tgz", + "integrity": "sha512-SmvB/6gtEPv+CJ88MH5zDOsZdKXPS/Uzv2//e90+wM1IHFUhsguPKEILgzqrM1nQ4acRXN/SV4Obr55SXC+0oA==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^24.9.0", + "schema-utils": "^2.6.1", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.2.tgz", + "integrity": "sha512-+8aPRjmXgf1VqvyxSlBUzKzeYqVS9Ai8vZ28g+mL7dNQl1jlUTCMDZnvNQdAS1xTywMkIXwJsfipsR/6s2+syw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.0.tgz", + "integrity": "sha1-RXbBzuXi1j0gf+5S8boCgZSAvHU=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typewise": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE=", + "dev": true, + "requires": { + "typewise-core": "^1.2.0" + } + }, + "typewise-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", + "integrity": "sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU=", + "dev": true + }, + "typewiselite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz", + "integrity": "sha1-yIgvobsQksBgBal/NO9chQjjZk4=", + "dev": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "unbzip2-stream": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unorm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "web3": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.4.tgz", + "integrity": "sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A==", + "requires": { + "@types/node": "^12.6.1", + "web3-bzz": "1.2.4", + "web3-core": "1.2.4", + "web3-eth": "1.2.4", + "web3-eth-personal": "1.2.4", + "web3-net": "1.2.4", + "web3-shh": "1.2.4", + "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "12.12.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.26.tgz", + "integrity": "sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA==" + } + } + }, + "web3-bzz": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.4.tgz", + "integrity": "sha512-MqhAo/+0iQSMBtt3/QI1rU83uvF08sYq8r25+OUZ+4VtihnYsmkkca+rdU0QbRyrXY2/yGIpI46PFdh0khD53A==", + "requires": { + "@types/node": "^10.12.18", + "got": "9.6.0", + "swarm-js": "0.1.39", + "underscore": "1.9.1" + }, + "dependencies": { + "@types/node": { + "version": "10.17.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.14.tgz", + "integrity": "sha512-G0UmX5uKEmW+ZAhmZ6PLTQ5eu/VPaT+d/tdLd5IFsKRPcbe6lPxocBtcYBFSaLaCW8O60AX90e91Nsp8lVHCNw==" + } + } + }, + "web3-core": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.4.tgz", + "integrity": "sha512-CHc27sMuET2cs1IKrkz7xzmTdMfZpYswe7f0HcuyneTwS1yTlTnHyqjAaTy0ZygAb/x4iaVox+Gvr4oSAqSI+A==", + "requires": { + "@types/bignumber.js": "^5.0.0", + "@types/bn.js": "^4.11.4", + "@types/node": "^12.6.1", + "web3-core-helpers": "1.2.4", + "web3-core-method": "1.2.4", + "web3-core-requestmanager": "1.2.4", + "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "12.12.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.26.tgz", + "integrity": "sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA==" + } + } + }, + "web3-core-helpers": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.4.tgz", + "integrity": "sha512-U7wbsK8IbZvF3B7S+QMSNP0tni/6VipnJkB0tZVEpHEIV2WWeBHYmZDnULWcsS/x/jn9yKhJlXIxWGsEAMkjiw==", + "requires": { + "underscore": "1.9.1", + "web3-eth-iban": "1.2.4", + "web3-utils": "1.2.4" + } + }, + "web3-core-method": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.4.tgz", + "integrity": "sha512-8p9kpL7di2qOVPWgcM08kb+yKom0rxRCMv6m/K+H+yLSxev9TgMbCgMSbPWAHlyiF3SJHw7APFKahK5Z+8XT5A==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.4", + "web3-core-promievent": "1.2.4", + "web3-core-subscriptions": "1.2.4", + "web3-utils": "1.2.4" + } + }, + "web3-core-promievent": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.4.tgz", + "integrity": "sha512-gEUlm27DewUsfUgC3T8AxkKi8Ecx+e+ZCaunB7X4Qk3i9F4C+5PSMGguolrShZ7Zb6717k79Y86f3A00O0VAZw==", + "requires": { + "any-promise": "1.3.0", + "eventemitter3": "3.1.2" + } + }, + "web3-core-requestmanager": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.4.tgz", + "integrity": "sha512-eZJDjyNTDtmSmzd3S488nR/SMJtNnn/GuwxnMh3AzYCqG3ZMfOylqTad2eYJPvc2PM5/Gj1wAMQcRpwOjjLuPg==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.4", + "web3-providers-http": "1.2.4", + "web3-providers-ipc": "1.2.4", + "web3-providers-ws": "1.2.4" + } + }, + "web3-core-subscriptions": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.4.tgz", + "integrity": "sha512-3D607J2M8ymY9V+/WZq4MLlBulwCkwEjjC2U+cXqgVO1rCyVqbxZNCmHyNYHjDDCxSEbks9Ju5xqJxDSxnyXEw==", + "requires": { + "eventemitter3": "3.1.2", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.4" + } + }, + "web3-eth": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.4.tgz", + "integrity": "sha512-+j+kbfmZsbc3+KJpvHM16j1xRFHe2jBAniMo1BHKc3lho6A8Sn9Buyut6odubguX2AxoRArCdIDCkT9hjUERpA==", + "requires": { + "underscore": "1.9.1", + "web3-core": "1.2.4", + "web3-core-helpers": "1.2.4", + "web3-core-method": "1.2.4", + "web3-core-subscriptions": "1.2.4", + "web3-eth-abi": "1.2.4", + "web3-eth-accounts": "1.2.4", + "web3-eth-contract": "1.2.4", + "web3-eth-ens": "1.2.4", + "web3-eth-iban": "1.2.4", + "web3-eth-personal": "1.2.4", + "web3-net": "1.2.4", + "web3-utils": "1.2.4" + } + }, + "web3-eth-abi": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz", + "integrity": "sha512-8eLIY4xZKoU3DSVu1pORluAw9Ru0/v4CGdw5so31nn+7fR8zgHMgwbFe0aOqWQ5VU42PzMMXeIJwt4AEi2buFg==", + "requires": { + "ethers": "4.0.0-beta.3", + "underscore": "1.9.1", + "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "10.17.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.14.tgz", + "integrity": "sha512-G0UmX5uKEmW+ZAhmZ6PLTQ5eu/VPaT+d/tdLd5IFsKRPcbe6lPxocBtcYBFSaLaCW8O60AX90e91Nsp8lVHCNw==" + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, + "elliptic": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", + "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "ethers": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", + "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", + "requires": { + "@types/node": "^10.3.2", + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.3.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.3", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + } + } + }, + "web3-eth-accounts": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.4.tgz", + "integrity": "sha512-04LzT/UtWmRFmi4hHRewP5Zz43fWhuHiK5XimP86sUQodk/ByOkXQ3RoXyGXFMNoRxdcAeRNxSfA2DpIBc9xUw==", + "requires": { + "@web3-js/scrypt-shim": "^0.1.0", + "any-promise": "1.3.0", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.7", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.2.4", + "web3-core-helpers": "1.2.4", + "web3-core-method": "1.2.4", + "web3-utils": "1.2.4" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } + }, + "web3-eth-contract": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.4.tgz", + "integrity": "sha512-b/9zC0qjVetEYnzRA1oZ8gF1OSSUkwSYi5LGr4GeckLkzXP7osEnp9lkO/AQcE4GpG+l+STnKPnASXJGZPgBRQ==", + "requires": { + "@types/bn.js": "^4.11.4", + "underscore": "1.9.1", + "web3-core": "1.2.4", + "web3-core-helpers": "1.2.4", + "web3-core-method": "1.2.4", + "web3-core-promievent": "1.2.4", + "web3-core-subscriptions": "1.2.4", + "web3-eth-abi": "1.2.4", + "web3-utils": "1.2.4" + } + }, + "web3-eth-ens": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.4.tgz", + "integrity": "sha512-g8+JxnZlhdsCzCS38Zm6R/ngXhXzvc3h7bXlxgKU4coTzLLoMpgOAEz71GxyIJinWTFbLXk/WjNY0dazi9NwVw==", + "requires": { + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.2.4", + "web3-core-helpers": "1.2.4", + "web3-core-promievent": "1.2.4", + "web3-eth-abi": "1.2.4", + "web3-eth-contract": "1.2.4", + "web3-utils": "1.2.4" + } + }, + "web3-eth-iban": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.4.tgz", + "integrity": "sha512-D9HIyctru/FLRpXakRwmwdjb5bWU2O6UE/3AXvRm6DCOf2e+7Ve11qQrPtaubHfpdW3KWjDKvlxV9iaFv/oTMQ==", + "requires": { + "bn.js": "4.11.8", + "web3-utils": "1.2.4" + } + }, + "web3-eth-personal": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz", + "integrity": "sha512-5Russ7ZECwHaZXcN3DLuLS7390Vzgrzepl4D87SD6Sn1DHsCZtvfdPIYwoTmKNp69LG3mORl7U23Ga5YxqkICw==", + "requires": { + "@types/node": "^12.6.1", + "web3-core": "1.2.4", + "web3-core-helpers": "1.2.4", + "web3-core-method": "1.2.4", + "web3-net": "1.2.4", + "web3-utils": "1.2.4" + }, + "dependencies": { + "@types/node": { + "version": "12.12.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.26.tgz", + "integrity": "sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA==" + } + } + }, + "web3-net": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.4.tgz", + "integrity": "sha512-wKOsqhyXWPSYTGbp7ofVvni17yfRptpqoUdp3SC8RAhDmGkX6irsiT9pON79m6b3HUHfLoBilFQyt/fTUZOf7A==", + "requires": { + "web3-core": "1.2.4", + "web3-core-method": "1.2.4", + "web3-utils": "1.2.4" + } + }, + "web3-provider-engine": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz", + "integrity": "sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==", + "dev": true, + "requires": { + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^3.0.0", + "eth-json-rpc-infura": "^3.1.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-tx": "^1.2.0", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", + "dev": true, + "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1cfbb13862f90f0b391d8a699544d5fe4dfb8c7b", + "ethereumjs-util": "^5.1.1" + } + }, + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "dev": true + }, + "ethereumjs-abi": { + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1cfbb13862f90f0b391d8a699544d5fe4dfb8c7b", + "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + } + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + }, + "dependencies": { + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", + "dev": true + } + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + }, + "dependencies": { + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "dev": true, + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "dev": true, + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + } + } + }, + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "web3-providers-http": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.4.tgz", + "integrity": "sha512-dzVCkRrR/cqlIrcrWNiPt9gyt0AZTE0J+MfAu9rR6CyIgtnm1wFUVVGaxYRxuTGQRO4Dlo49gtoGwaGcyxqiTw==", + "requires": { + "web3-core-helpers": "1.2.4", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.4.tgz", + "integrity": "sha512-8J3Dguffin51gckTaNrO3oMBo7g+j0UNk6hXmdmQMMNEtrYqw4ctT6t06YOf9GgtOMjSAc1YEh3LPrvgIsR7og==", + "requires": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.4" + } + }, + "web3-providers-ws": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.4.tgz", + "integrity": "sha512-F/vQpDzeK+++oeeNROl1IVTufFCwCR2hpWe5yRXN0ApLwHqXrMI7UwQNdJ9iyibcWjJf/ECbauEEQ8CHgE+MYQ==", + "requires": { + "@web3-js/websocket": "^1.0.29", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.4" + } + }, + "web3-shh": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.4.tgz", + "integrity": "sha512-z+9SCw0dE+69Z/Hv8809XDbLj7lTfEv9Sgu8eKEIdGntZf4v7ewj5rzN5bZZSz8aCvfK7Y6ovz1PBAu4QzS4IQ==", + "requires": { + "web3-core": "1.2.4", + "web3-core-method": "1.2.4", + "web3-core-subscriptions": "1.2.4", + "web3-net": "1.2.4" + } + }, + "web3-utils": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.4.tgz", + "integrity": "sha512-+S86Ip+jqfIPQWvw2N/xBQq5JNqCO0dyvukGdJm8fEWHZbckT4WxSpHbx+9KLEWY4H4x9pUwnoRkK87pYyHfgQ==", + "requires": { + "bn.js": "4.11.8", + "eth-lib": "0.2.7", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + } + } + }, + "webpack": { + "version": "4.41.5", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.5.tgz", + "integrity": "sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } + } + }, + "webpack-bundle-size-analyzer": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-size-analyzer/-/webpack-bundle-size-analyzer-3.1.0.tgz", + "integrity": "sha512-8WlTT6uuCxZgZYNnCB0pRGukWRGH+Owg+HsqQUe1Zexakdno1eDYO+lE7ihBo9G0aCCZCJa8JWjYr9eLYfZrBA==", + "requires": { + "commander": "^2.19.0", + "filesize": "^3.6.1", + "humanize": "0.0.9" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "webpack-cli": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz", + "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==", + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket": { + "version": "1.0.29", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.29.tgz", + "integrity": "sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "gulp": "^4.0.2", + "nan": "^2.11.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "write-file-atomic": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", + "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "requires": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz", + "integrity": "sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0=", + "requires": { + "xhr-request": "^1.0.1" + } + }, + "xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "requires": { + "cookiejar": "^2.1.1" + } + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", + "requires": { + "@babel/runtime": "^7.6.3" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.3", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.3" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "get-caller-file": { @@ -2448,12 +18844,20 @@ "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "requires": { + "npm-conf": "^1.1.0" + } + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "getpass": { @@ -2461,7 +18865,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -2469,12 +18873,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.4", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "global": { @@ -2482,17 +18886,16 @@ "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "requires": { - "min-document": "2.19.0", - "process": "0.5.2" + "min-document": "^2.19.0", + "process": "~0.5.1" } }, "global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "got": { @@ -2500,17 +18903,17 @@ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "requires": { - "@sindresorhus/is": "0.14.0", - "@szmarczak/http-timer": "1.1.2", - "cacheable-request": "6.1.0", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "4.1.0", - "lowercase-keys": "1.0.1", - "mimic-response": "1.0.1", - "p-cancelable": "1.1.0", - "to-readable-stream": "1.0.0", - "url-parse-lax": "3.0.0" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" } }, "graceful-fs": { @@ -2538,8 +18941,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "6.12.0", - "har-schema": "2.0.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has": { @@ -2547,7 +18950,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -2556,7 +18959,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2579,7 +18982,7 @@ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" } }, "has-unicode": { @@ -2592,8 +18995,8 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "hash.js": { @@ -2601,8 +19004,8 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { - "inherits": "2.0.4", - "minimalistic-assert": "1.0.1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, "hdkey": { @@ -2610,9 +19013,9 @@ "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-1.1.1.tgz", "integrity": "sha512-DvHZ5OuavsfWs5yfVJZestsnc3wzPvLWNk6c2nRUfo6X+OtxypGt20vDDf7Ba+MJzjL3KS1og2nw2eBbLCOUTA==", "requires": { - "coinstring": "2.3.0", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" + "coinstring": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, "he": { @@ -2625,9 +19028,9 @@ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { - "hash.js": "1.1.7", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hosted-git-info": { @@ -2640,10 +19043,10 @@ "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "requires": { - "caseless": "0.12.0", - "concat-stream": "1.6.2", - "http-response-object": "3.0.2", - "parse-cache-control": "1.0.1" + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" } }, "http-cache-semantics": { @@ -2656,10 +19059,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.1", - "statuses": "1.5.0", + "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" }, "dependencies": { @@ -2681,9 +19084,9 @@ "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.2" + "agent-base": "2", + "debug": "2", + "extend": "3" }, "dependencies": { "debug": { @@ -2702,7 +19105,7 @@ "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "requires": { - "@types/node": "10.17.17" + "@types/node": "^10.0.3" }, "dependencies": { "@types/node": { @@ -2717,9 +19120,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.16.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-proxy-agent": { @@ -2728,9 +19131,9 @@ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.2" + "agent-base": "2", + "debug": "2", + "extend": "3" }, "dependencies": { "debug": { @@ -2749,7 +19152,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "idna-uts46-hx": { @@ -2794,8 +19197,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2806,8 +19209,16 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } }, "invariant": { "version": "2.2.4", @@ -2815,7 +19226,7 @@ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "loose-envify": "1.4.0" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -2823,6 +19234,14 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "requires": { + "fp-ts": "^1.0.0" + } + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2834,8 +19253,8 @@ "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", "dev": true, "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" + "is-relative": "^0.2.1", + "is-windows": "^0.2.0" } }, "is-arguments": { @@ -2864,7 +19283,7 @@ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "dev": true, "requires": { - "ci-info": "1.6.0" + "ci-info": "^1.5.0" } }, "is-date-object": { @@ -2877,7 +19296,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-function": { @@ -2896,8 +19315,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-natural-number": { @@ -2928,7 +19347,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -2947,7 +19366,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "requires": { - "has": "1.0.3" + "has": "^1.0.3" } }, "is-relative": { @@ -2956,7 +19375,7 @@ "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", "dev": true, "requires": { - "is-unc-path": "0.1.2" + "is-unc-path": "^0.1.1" } }, "is-retry-allowed": { @@ -2974,7 +19393,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "1.0.1" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -2988,9 +19407,15 @@ "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", "dev": true, "requires": { - "unc-path-regex": "0.1.2" + "unc-path-regex": "^0.1.0" } }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -3023,8 +19448,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "3.0.0" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" } }, "isstream": { @@ -3037,8 +19462,8 @@ "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "js-sha3": { @@ -3082,7 +19507,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.6" } }, "jspm-config": { @@ -3091,15 +19516,15 @@ "integrity": "sha1-RMJpAuSujs4jZs7cn/FrEKXzkcY=", "dev": true, "requires": { - "any-promise": "1.3.0", - "graceful-fs": "4.2.3", - "make-error-cause": "1.2.2", - "object.pick": "1.3.0", - "parse-json": "2.2.0", - "strip-bom": "3.0.0", - "thenify": "3.3.0", - "throat": "3.2.0", - "xtend": "4.0.2" + "any-promise": "^1.3.0", + "graceful-fs": "^4.1.4", + "make-error-cause": "^1.2.1", + "object.pick": "^1.1.2", + "parse-json": "^2.2.0", + "strip-bom": "^3.0.0", + "thenify": "^3.2.0", + "throat": "^3.0.0", + "xtend": "^4.0.1" }, "dependencies": { "strip-bom": { @@ -3126,10 +19551,19 @@ "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + }, + "keccakjs": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/keccakjs/-/keccakjs-0.2.3.tgz", + "integrity": "sha512-BjLkNDcfaZ6l8HBG9tH0tpmDv3sS2mA7FNQxFHpCdzP3Gb2MVruXBSuoM66SnVxKJpAr5dKGdkHD+bDokt8fTg==", + "requires": { + "browserify-sha3": "^0.0.4", + "sha3": "^1.2.2" } }, "keyv": { @@ -3145,7 +19579,7 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.9" } }, "latest-version": { @@ -3154,7 +19588,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lcid": { @@ -3162,7 +19596,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "level-codec": { @@ -3175,7 +19609,7 @@ "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", "requires": { - "errno": "0.1.7" + "errno": "~0.1.1" } }, "level-iterator-stream": { @@ -3183,10 +19617,10 @@ "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", "requires": { - "inherits": "2.0.4", - "level-errors": "1.0.5", - "readable-stream": "1.1.14", - "xtend": "4.0.2" + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" }, "dependencies": { "isarray": { @@ -3199,10 +19633,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -3212,13 +19646,107 @@ } } }, + "level-mem": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz", + "integrity": "sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==", + "requires": { + "level-packager": "~4.0.0", + "memdown": "~3.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "requires": { + "xtend": "~4.0.0" + } + }, + "memdown": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz", + "integrity": "sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==", + "requires": { + "abstract-leveldown": "~5.0.0", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "level-packager": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz", + "integrity": "sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==", + "requires": { + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz", + "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==", + "requires": { + "abstract-leveldown": "~5.0.0", + "inherits": "^2.0.3" + } + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz", + "integrity": "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "xtend": "^4.0.0" + } + }, + "levelup": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz", + "integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==", + "requires": { + "deferred-leveldown": "~4.0.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~3.0.0", + "xtend": "~4.0.0" + } + } + } + }, "level-ws": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", "requires": { - "readable-stream": "1.0.34", - "xtend": "2.1.2" + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" }, "dependencies": { "isarray": { @@ -3231,10 +19759,10 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -3247,7 +19775,7 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "requires": { - "object-keys": "0.4.0" + "object-keys": "~0.4.0" } } } @@ -3257,13 +19785,13 @@ "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", "requires": { - "deferred-leveldown": "1.2.2", - "level-codec": "7.0.1", - "level-errors": "1.0.5", - "level-iterator-stream": "1.3.1", - "prr": "1.0.1", - "semver": "5.4.1", - "xtend": "4.0.2" + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" }, "dependencies": { "semver": { @@ -3284,11 +19812,27 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { - "graceful-fs": "4.2.3", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } } }, "lockfile": { @@ -3297,7 +19841,7 @@ "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "dev": true, "requires": { - "signal-exit": "3.0.3" + "signal-exit": "^3.0.2" } }, "lodash": { @@ -3321,8 +19865,8 @@ "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "cli-cursor": "1.0.2" + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" } }, "loose-envify": { @@ -3331,7 +19875,7 @@ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { - "js-tokens": "4.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "lowercase-keys": { @@ -3345,8 +19889,8 @@ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" }, "dependencies": { "yallist": { @@ -3367,7 +19911,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -3388,7 +19932,7 @@ "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", "dev": true, "requires": { - "make-error": "1.3.6" + "make-error": "^1.2.0" } }, "markdown-table": { @@ -3401,9 +19945,9 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "media-typer": { @@ -3416,12 +19960,12 @@ "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", "requires": { - "abstract-leveldown": "2.7.2", - "functional-red-black-tree": "1.0.1", - "immediate": "3.2.3", - "inherits": "2.0.4", - "ltgt": "2.2.1", - "safe-buffer": "5.1.2" + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" }, "dependencies": { "abstract-leveldown": { @@ -3429,7 +19973,7 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", "requires": { - "xtend": "4.0.2" + "xtend": "~4.0.0" } }, "safe-buffer": { @@ -3459,14 +20003,14 @@ "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", "requires": { - "async": "1.5.2", - "ethereumjs-util": "5.2.0", + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", "level-ws": "0.0.0", - "levelup": "1.3.9", - "memdown": "1.4.1", - "readable-stream": "2.3.7", - "rlp": "2.2.4", - "semaphore": "1.1.0" + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" }, "dependencies": { "async": { @@ -3479,13 +20023,13 @@ "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, "keccak": { @@ -3493,10 +20037,10 @@ "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" } } } @@ -3506,11 +20050,11 @@ "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.1.11.tgz", "integrity": "sha512-nJN3VIHeIAyB/PjO5Dj/Y0SEK7CGCCLD2IbV4el2kUIwlOtX3GOr5MwVO4EU+0AXvoDnJ0nmaLe5O86uIjWz/Q==", "requires": { - "buffer-reverse": "1.0.1", - "crypto-js": "3.3.0", - "is-buffer": "2.0.4", - "merkle-lib": "2.0.10", - "treeify": "1.1.0" + "buffer-reverse": "^1.0.1", + "crypto-js": "^3.1.9-1", + "is-buffer": "^2.0.3", + "merkle-lib": "^2.0.10", + "treeify": "^1.1.0" } }, "methods": { @@ -3523,8 +20067,8 @@ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime": { @@ -3555,7 +20099,7 @@ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "requires": { - "dom-walk": "0.1.1" + "dom-walk": "^0.1.0" } }, "minimalistic-assert": { @@ -3573,7 +20117,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -3586,8 +20130,8 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "requires": { - "safe-buffer": "5.2.0", - "yallist": "3.1.1" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, "minizlib": { @@ -3595,7 +20139,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "requires": { - "minipass": "2.9.0" + "minipass": "^2.9.0" } }, "mkdirp": { @@ -3603,7 +20147,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.5" } }, "mkdirp-promise": { @@ -3611,7 +20155,7 @@ "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", "requires": { - "mkdirp": "0.5.4" + "mkdirp": "*" } }, "mocha": { @@ -3637,12 +20181,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.4", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "minimist": { @@ -3665,11 +20209,42 @@ "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.11.0.tgz", "integrity": "sha512-Yp4o3/ZA15wsXqJTT+R+9w2AYIkD1i80Lds47wDbuUhOvQvm+O2EfjFZSz0pMgZZSPHRhGxgcd2+GL4+jZMtdw==" }, + "mold-source-map": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mold-source-map/-/mold-source-map-0.4.0.tgz", + "integrity": "sha1-z2fgsxxHq5uttcnCVlGGISe7gxc=", + "requires": { + "convert-source-map": "^1.1.0", + "through": "~2.2.7" + }, + "dependencies": { + "through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" + } + } + }, + "mout": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", + "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", @@ -3695,8 +20270,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-gyp": { @@ -3704,18 +20279,18 @@ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", "requires": { - "fstream": "1.0.12", - "glob": "7.1.6", - "graceful-fs": "4.2.3", - "mkdirp": "0.5.4", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.88.2", - "rimraf": "2.7.1", - "semver": "5.3.0", - "tar": "2.2.2", - "which": "1.3.1" + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" } }, "nopt": { @@ -3723,7 +20298,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -3731,10 +20306,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "requires": { - "hosted-git-info": "2.8.8", - "resolve": "1.15.1", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.4" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-url": { @@ -3742,13 +20317,29 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npmlog": { @@ -3756,10 +20347,10 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -3813,10 +20404,10 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1", - "has-symbols": "1.0.1", - "object-keys": "1.1.1" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" }, "dependencies": { "object-keys": { @@ -3826,13 +20417,22 @@ } } }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "oboe": { @@ -3840,7 +20440,7 @@ "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", "requires": { - "http-https": "1.0.0" + "http-https": "^1.0.0" } }, "on-finished": { @@ -3856,7 +20456,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -3880,7 +20480,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.0" } }, "os-tmpdir": { @@ -3893,8 +20493,8 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "p-cancelable": { @@ -3902,29 +20502,73 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, + "p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "requires": { + "p-timeout": "^2.0.1" + }, + "dependencies": { + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + } + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.4.0", - "registry-url": "3.1.0", - "semver": "5.3.0" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" }, "dependencies": { "get-stream": { @@ -3939,17 +20583,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.2.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.1", - "safe-buffer": "5.2.0", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "prepend-http": { @@ -3964,22 +20608,27 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } } } }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.17", - "safe-buffer": "5.2.0" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-cache-control": { @@ -4003,7 +20652,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "1.3.2" + "error-ex": "^1.2.0" } }, "parseurl": { @@ -4011,12 +20660,18 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -4027,8 +20682,7 @@ "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { "version": "2.0.1", @@ -4051,9 +20705,9 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "requires": { - "graceful-fs": "4.2.3", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pathval": { @@ -4066,11 +20720,11 @@ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "requires": { - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "ripemd160": "2.0.2", - "safe-buffer": "5.2.0", - "sha.js": "2.4.11" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "pend": { @@ -4098,7 +20752,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "popsicle": { @@ -4107,10 +20761,10 @@ "integrity": "sha512-petRj39w05GvH1WKuGFmzxR9+k+R9E7zX5XWTFee7P/qf88hMuLT7aAO/RsmldpQMtJsWQISkTQlfMRECKlxhw==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "form-data": "2.3.3", - "make-error-cause": "1.2.2", - "tough-cookie": "2.5.0" + "concat-stream": "^1.4.7", + "form-data": "^2.0.0", + "make-error-cause": "^1.2.1", + "tough-cookie": "^2.0.0" } }, "popsicle-proxy-agent": { @@ -4119,8 +20773,8 @@ "integrity": "sha1-uRM8VdlFdZq37mG3cRNkYg066tw=", "dev": true, "requires": { - "http-proxy-agent": "1.0.0", - "https-proxy-agent": "1.0.0" + "http-proxy-agent": "^1.0.0", + "https-proxy-agent": "^1.0.0" } }, "popsicle-retry": { @@ -4129,8 +20783,8 @@ "integrity": "sha1-4G6GZTO0KnoSPrMwy+Y6fOvLoQw=", "dev": true, "requires": { - "any-promise": "1.3.0", - "xtend": "4.0.2" + "any-promise": "^1.1.0", + "xtend": "^4.0.1" } }, "popsicle-rewrite": { @@ -4162,14 +20816,14 @@ "integrity": "sha512-3cDt2SEJz0irrTpx9UE2CFKYQ1Z9eDfjVm5jatpYqZSkCueEBDaPKEA6rrBPfz6Z6jVbjNKoDuJDzHa/y7oleQ==", "dev": true, "requires": { - "dir-to-object": "2.0.0", - "emoji-regex": "8.0.0", - "escape-string-regexp": "2.0.0", - "extract-comments": "1.1.0", - "prettier": "2.0.2", - "semver": "7.1.3", - "solidity-parser-diligence": "0.4.18", - "string-width": "4.2.0" + "dir-to-object": "^2.0.0", + "emoji-regex": "^8.0.0", + "escape-string-regexp": "^2.0.0", + "extract-comments": "^1.1.0", + "prettier": "^2.0.2", + "semver": "^7.1.3", + "solidity-parser-diligence": "^0.4.18", + "string-width": "^4.2.0" }, "dependencies": { "ansi-regex": { @@ -4208,9 +20862,9 @@ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "8.0.0", - "is-fullwidth-code-point": "3.0.0", - "strip-ansi": "6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { @@ -4219,7 +20873,7 @@ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "5.0.0" + "ansi-regex": "^5.0.0" } } } @@ -4239,7 +20893,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.6" } }, "promise-finally": { @@ -4248,12 +20902,17 @@ "integrity": "sha512-hsF8r05ZnypT00IZTC71Ejiu9A7kyyVfHpdl3faasOHNJX62sNPfE8vDAz6P27RJ31i2O5ruhc6JV5xWR6GElQ==", "dev": true }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" } }, @@ -4278,12 +20937,12 @@ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "parse-asn1": "5.1.5", - "randombytes": "2.1.0", - "safe-buffer": "5.2.0" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "pump": { @@ -4291,8 +20950,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "end-of-stream": "1.4.4", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "punycode": { @@ -4310,17 +20969,23 @@ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { - "safe-buffer": "5.2.0" + "safe-buffer": "^5.1.0" } }, "randomfill": { @@ -4328,8 +20993,8 @@ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "randombytes": "2.1.0", - "safe-buffer": "5.2.0" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "randomhex": { @@ -4359,10 +21024,10 @@ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.5", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } }, "read-pkg": { @@ -4370,9 +21035,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.5.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -4380,8 +21045,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "readable-stream": { @@ -4389,13 +21054,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", - "isarray": "1.0.0", - "process-nextick-args": "2.0.1", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" }, "dependencies": { "safe-buffer": { @@ -4410,8 +21075,8 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "registry-auth-token": { @@ -4420,8 +21085,8 @@ "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", "dev": true, "requires": { - "rc": "1.2.8", - "safe-buffer": "5.2.0" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -4430,7 +21095,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.8" + "rc": "^1.0.1" } }, "req-cwd": { @@ -4438,7 +21103,7 @@ "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", "integrity": "sha1-1AgrTURZgDZkD7c93qAe1T20nrw=", "requires": { - "req-from": "2.0.0" + "req-from": "^2.0.0" } }, "req-from": { @@ -4446,7 +21111,7 @@ "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", "integrity": "sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA=", "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "request": { @@ -4454,26 +21119,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.9.1", - "caseless": "0.12.0", - "combined-stream": "1.0.8", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.3", - "har-validator": "5.1.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.26", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.2.0", - "tough-cookie": "2.5.0", - "tunnel-agent": "0.6.0", - "uuid": "3.4.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "request-promise-core": { @@ -4481,7 +21146,7 @@ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.15" } }, "request-promise-native": { @@ -4490,8 +21155,8 @@ "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", "requires": { "request-promise-core": "1.1.3", - "stealthy-require": "1.1.1", - "tough-cookie": "2.5.0" + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "require-directory": { @@ -4514,7 +21179,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.6" } }, "resolve-from": { @@ -4527,7 +21192,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "lowercase-keys": "1.0.1" + "lowercase-keys": "^1.0.0" } }, "restore-cursor": { @@ -4536,8 +21201,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "resumer": { @@ -4545,7 +21210,7 @@ "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", "requires": { - "through": "2.3.8" + "through": "~2.3.4" } }, "rimraf": { @@ -4553,7 +21218,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "7.1.6" + "glob": "^7.1.3" } }, "ripemd160": { @@ -4561,8 +21226,8 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.4" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "rlp": { @@ -4570,7 +21235,7 @@ "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.4.tgz", "integrity": "sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw==", "requires": { - "bn.js": "4.11.8" + "bn.js": "^4.11.1" } }, "rustbn.js": { @@ -4593,7 +21258,7 @@ "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", "requires": { - "nan": "2.14.0" + "nan": "^2.0.8" } }, "scrypt-js": { @@ -4606,8 +21271,8 @@ "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.1.tgz", "integrity": "sha512-XMoqxwABdotuW+l+qACmJ/h0kVSCgMPZXpbncA/zyBO90z/NnDISzVw+xJ4tUY+X/Hh0EFT269OYHm26VCPgmA==", "requires": { - "scrypt": "6.0.3", - "scryptsy": "1.2.1" + "scrypt": "^6.0.2", + "scryptsy": "^1.2.1" } }, "scryptsy": { @@ -4615,7 +21280,7 @@ "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", "requires": { - "pbkdf2": "3.0.17" + "pbkdf2": "^3.0.3" } }, "secp256k1": { @@ -4623,14 +21288,14 @@ "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", "requires": { - "bindings": "1.5.0", - "bip66": "1.1.5", - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "drbg.js": "1.0.1", - "elliptic": "6.5.2", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.5.2", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" } }, "seek-bzip": { @@ -4638,7 +21303,7 @@ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "requires": { - "commander": "2.8.1" + "commander": "~2.8.1" }, "dependencies": { "commander": { @@ -4646,7 +21311,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } } } @@ -4667,7 +21332,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.3.0" + "semver": "^5.0.3" } }, "send": { @@ -4676,18 +21341,18 @@ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.7.2", + "http-errors": "~1.7.2", "mime": "1.6.0", "ms": "2.1.1", - "on-finished": "2.3.0", - "range-parser": "1.2.1", - "statuses": "1.5.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { "debug": { @@ -4717,9 +21382,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.3", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", "send": "0.17.1" } }, @@ -4728,11 +21393,11 @@ "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", "requires": { - "body-parser": "1.19.0", - "cors": "2.8.5", - "express": "4.17.1", - "request": "2.88.2", - "xhr": "2.5.0" + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" } }, "set-blocking": { @@ -4755,8 +21420,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { - "inherits": "2.0.4", - "safe-buffer": "5.2.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "sha1": { @@ -4764,8 +21429,23 @@ "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=", "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2" + "charenc": ">= 0.0.1", + "crypt": ">= 0.0.1" + } + }, + "sha3": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/sha3/-/sha3-1.2.6.tgz", + "integrity": "sha512-KgLGmJGrmNB4JWVsAV11Yk6KbvsAiygWJc7t5IebWva/0NukNrjJqhtKhzy3Eiv2AKuGvhZZt7dt1mDo7HkoiQ==", + "requires": { + "nan": "2.13.2" + }, + "dependencies": { + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + } } }, "shebang-command": { @@ -4774,7 +21454,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -4798,18 +21478,23 @@ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", "requires": { - "decompress-response": "3.3.0", - "once": "1.4.0", - "simple-concat": "1.0.0" + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, "slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { "is-fullwidth-code-point": { @@ -4825,11 +21510,11 @@ "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", "requires": { - "fs-extra": "0.30.0", - "memorystream": "0.3.1", - "require-from-string": "1.2.1", - "semver": "5.3.0", - "yargs": "4.8.1" + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" } }, "solidity-bytes-utils": { @@ -4845,11 +21530,30 @@ "resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz", "integrity": "sha1-Dh3gIQS3PTh14c9wkzBbTqii2EM=", "requires": { - "bip39": "2.6.0", - "ethereumjs-wallet": "0.6.2", - "web3": "0.18.4", - "web3-provider-engine": "8.6.1" + "bip39": "^2.2.0", + "ethereumjs-wallet": "^0.6.0", + "web3": "^0.18.2", + "web3-provider-engine": "^8.4.0" + }, + "dependencies": { + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "requires": { + "bignumber.js": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "crypto-js": "^3.1.4", + "utf8": "^2.1.1", + "xhr2": "*", + "xmlhttprequest": "*" + } + } } + }, + "utf8": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz", + "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY=" } } }, @@ -4862,9 +21566,16 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "requires": { + "sort-keys": "^1.0.0" } }, "source-map": { @@ -4877,8 +21588,8 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { - "buffer-from": "1.1.1", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "spdx-correct": { @@ -4886,8 +21597,8 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.5" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -4900,8 +21611,8 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "requires": { - "spdx-exceptions": "2.2.0", - "spdx-license-ids": "3.0.5" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -4914,15 +21625,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "statuses": { @@ -4951,9 +21662,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string.prototype.trim": { @@ -4961,9 +21672,9 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz", "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" } }, "string.prototype.trimleft": { @@ -4971,8 +21682,8 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "string.prototype.trimright": { @@ -4980,8 +21691,8 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "string_decoder": { @@ -4989,7 +21700,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" }, "dependencies": { "safe-buffer": { @@ -5004,7 +21715,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -5012,7 +21723,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-dirs": { @@ -5020,7 +21731,7 @@ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "requires": { - "is-natural-number": "4.0.1" + "is-natural-number": "^4.0.1" } }, "strip-eof": { @@ -5043,12 +21754,20 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "swarm-js": { @@ -5056,18 +21775,18 @@ "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.39.tgz", "integrity": "sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg==", "requires": { - "bluebird": "3.7.2", - "buffer": "5.5.0", - "decompress": "4.2.0", - "eth-lib": "0.1.29", - "fs-extra": "4.0.3", - "got": "7.1.0", - "mime-types": "2.1.26", - "mkdirp-promise": "5.0.1", - "mock-fs": "4.11.0", - "setimmediate": "1.0.5", - "tar": "4.4.13", - "xhr-request-promise": "0.1.2" + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "decompress": "^4.0.0", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request-promise": "^0.1.2" }, "dependencies": { "fs-extra": { @@ -5075,9 +21794,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "get-stream": { @@ -5090,20 +21809,20 @@ "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.2.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.1", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.2.0", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" } }, "jsonfile": { @@ -5111,7 +21830,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.6" } }, "p-cancelable": { @@ -5134,13 +21853,13 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", "requires": { - "chownr": "1.1.4", - "fs-minipass": "1.2.7", - "minipass": "2.9.0", - "minizlib": "1.3.3", - "mkdirp": "0.5.4", - "safe-buffer": "5.2.0", - "yallist": "3.1.1" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" } }, "url-parse-lax": { @@ -5148,7 +21867,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } } } @@ -5158,9 +21877,9 @@ "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", "requires": { - "http-response-object": "3.0.2", - "sync-rpc": "1.3.6", - "then-request": "6.0.2" + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" } }, "sync-rpc": { @@ -5168,7 +21887,7 @@ "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", "requires": { - "get-port": "3.2.0" + "get-port": "^3.1.0" } }, "tape": { @@ -5176,21 +21895,21 @@ "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.2.tgz", "integrity": "sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ==", "requires": { - "deep-equal": "1.1.1", - "defined": "1.0.0", - "dotignore": "0.1.2", - "for-each": "0.3.3", - "function-bind": "1.1.1", - "glob": "7.1.6", - "has": "1.0.3", - "inherits": "2.0.4", - "is-regex": "1.0.5", - "minimist": "1.2.5", - "object-inspect": "1.7.0", - "resolve": "1.15.1", - "resumer": "0.0.0", - "string.prototype.trim": "1.2.1", - "through": "2.3.8" + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.0", + "object-inspect": "~1.7.0", + "resolve": "~1.15.1", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" } }, "tar": { @@ -5198,9 +21917,9 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.12", - "inherits": "2.0.4" + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" } }, "tar-stream": { @@ -5208,13 +21927,32 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.2.0", - "end-of-stream": "1.4.4", - "fs-constants": "1.0.0", - "readable-stream": "2.3.7", - "to-buffer": "1.1.1", - "xtend": "4.0.2" + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "tar.gz": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-1.0.7.tgz", + "integrity": "sha512-uhGatJvds/3diZrETqMj4RxBR779LKlIE74SsMcn5JProZsfs9j0QBwWO1RW+IWNJxS2x8Zzra1+AW6OQHWphg==", + "requires": { + "bluebird": "^2.9.34", + "commander": "^2.8.1", + "fstream": "^1.0.8", + "mout": "^0.11.0", + "tar": "^2.1.1" + }, + "dependencies": { + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=" + } } }, "term-size": { @@ -5223,7 +21961,7 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "test-value": { @@ -5232,8 +21970,8 @@ "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", "dev": true, "requires": { - "array-back": "1.0.4", - "typical": "2.6.1" + "array-back": "^1.0.3", + "typical": "^2.6.0" }, "dependencies": { "array-back": { @@ -5242,7 +21980,7 @@ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "dev": true, "requires": { - "typical": "2.6.1" + "typical": "^2.6.0" } } } @@ -5252,17 +21990,17 @@ "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", "requires": { - "@types/concat-stream": "1.6.0", + "@types/concat-stream": "^1.6.0", "@types/form-data": "0.0.33", - "@types/node": "8.10.59", - "@types/qs": "6.9.1", - "caseless": "0.12.0", - "concat-stream": "1.6.2", - "form-data": "2.3.3", - "http-basic": "8.1.3", - "http-response-object": "3.0.2", - "promise": "8.1.0", - "qs": "6.5.2" + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" }, "dependencies": { "@types/node": { @@ -5276,9 +22014,16 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "dev": true, "requires": { - "any-promise": "1.3.0" + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "requires": { + "thenify": ">= 3.1.0 < 4" } }, "throat": { @@ -5297,6 +22042,26 @@ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, + "tiny-secp256k1": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.4.tgz", + "integrity": "sha512-O7NfGzBdBy/jamehZ1ptutZsh2c+9pq2Pu+KPv75+yzk5/Q/6lppQGMUJucHdRGdkeBcAUeLAOdJInEAZgZ53A==", + "requires": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", @@ -5318,7 +22083,7 @@ "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", "dev": true, "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" }, "dependencies": { "nopt": { @@ -5327,7 +22092,7 @@ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } } } @@ -5337,8 +22102,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "psl": "1.8.0", - "punycode": "2.1.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "treeify": { @@ -5346,12 +22111,20 @@ "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "truffle": { "version": "5.1.19", "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.1.19.tgz", "integrity": "sha512-H4S7GbKCN56eW5ftLo+l160c+SLyF8C205hUF9VRfulxFBdXvmTIeHdRO/zcnBWiKfEbXzuHWSI9gyFkPtkvmw==", "requires": { - "app-module-path": "2.2.0", + "app-module-path": "^2.2.0", "mocha": "5.2.0", "original-require": "1.0.1" } @@ -5361,8 +22134,8 @@ "resolved": "https://registry.npmjs.org/truffle-assertions/-/truffle-assertions-0.9.2.tgz", "integrity": "sha512-9g2RhaxU2F8DeWhqoGQvL/bV8QVoSnQ6PY+ZPvYRP5eF7+/8LExb4mjLx/FeliLTjc3Tv1SABG05Gu5qQ/ErmA==", "requires": { - "assertion-error": "1.1.0", - "lodash.isequal": "4.5.0" + "assertion-error": "^1.1.0", + "lodash.isequal": "^4.5.0" } }, "truffle-hdwallet-provider": { @@ -5370,10 +22143,10 @@ "resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz", "integrity": "sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg==", "requires": { - "any-promise": "1.3.0", - "bindings": "1.5.0", + "any-promise": "^1.3.0", + "bindings": "^1.3.1", "web3": "1.2.1", - "websocket": "1.0.31" + "websocket": "^1.0.28" }, "dependencies": { "web3": { @@ -5397,9 +22170,9 @@ "resolved": "https://registry.npmjs.org/truffle-typings/-/truffle-typings-1.0.8.tgz", "integrity": "sha512-75yFYNt0ws1TTehrGxhOqH3tutvBCAs+RG2SrhVIqQvU72kLAb4ercl32dES8yKbXBVHjzv3OXNg5gsbak+3Dg==", "requires": { - "@types/chai": "4.2.11", - "@types/mocha": "5.2.7", - "@types/web3": "1.2.2" + "@types/chai": "^4.1.4", + "@types/mocha": "^5.2.5", + "@types/web3": "^1.0.18" } }, "ts-essentials": { @@ -5414,15 +22187,15 @@ "integrity": "sha512-Gi+aZCELpVL7Mqb+GuMgM+n8JZ/arZZib1iD/R9Ok8JDjOCOCrqS9b1lr72ku7J45WeDCFZxyJoRsiQvhokCnw==", "dev": true, "requires": { - "@types/mkdirp": "0.5.2", - "@types/prettier": "1.19.1", - "@types/resolve": "0.0.8", - "chalk": "2.4.2", - "glob": "7.1.6", - "mkdirp": "0.5.4", - "prettier": "1.19.1", - "resolve": "1.15.1", - "ts-essentials": "1.0.4" + "@types/mkdirp": "^0.5.2", + "@types/prettier": "^1.13.2", + "@types/resolve": "^0.0.8", + "chalk": "^2.4.1", + "glob": "^7.1.2", + "mkdirp": "^0.5.1", + "prettier": "^1.14.2", + "resolve": "^1.8.1", + "ts-essentials": "^1.0.0" } }, "ts-node": { @@ -5430,10 +22203,10 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.8.1.tgz", "integrity": "sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg==", "requires": { - "arg": "4.1.3", - "diff": "4.0.2", - "make-error": "1.3.6", - "source-map-support": "0.5.16", + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", "yn": "3.1.1" }, "dependencies": { @@ -5444,12 +22217,17 @@ } } }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=" + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.2.0" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -5457,6 +22235,11 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -5467,13 +22250,18 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.26" + "mime-types": "~2.1.24" } }, "typechain": { @@ -5482,12 +22270,12 @@ "integrity": "sha512-gbQmJXPKuYQ0p3tK+dMhpdQql/UPtSnkPQXw2QM/aqwCengI86z2vEM2e5rVQpmk/blFx1PYNdApSDxE12rR1Q==", "dev": true, "requires": { - "command-line-args": "4.0.7", - "debug": "3.1.0", - "fs-extra": "7.0.1", - "js-sha3": "0.8.0", - "lodash": "4.17.15", - "ts-generator": "0.0.8" + "command-line-args": "^4.0.7", + "debug": "^3.0.1", + "fs-extra": "^7.0.0", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "ts-generator": "^0.0.8" }, "dependencies": { "fs-extra": { @@ -5496,9 +22284,9 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "js-sha3": { @@ -5513,7 +22301,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.6" } } } @@ -5523,7 +22311,7 @@ "resolved": "https://registry.npmjs.org/typechain-target-truffle/-/typechain-target-truffle-1.0.2.tgz", "integrity": "sha512-XF3Iq2IzR+Pqvx6fcKIKGXNEk3lEcY24vYv9VqoVPfPB6vUM09PRLJCeLm1/ag6Pr2PICKUA0f4Es+YTR3ESKA==", "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.15" } }, "typedarray": { @@ -5536,9 +22324,14 @@ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "requires": { - "is-typedarray": "1.0.0" + "is-typedarray": "^1.0.0" } }, + "typeforce": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", + "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" + }, "typescript": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", @@ -5556,21 +22349,21 @@ "integrity": "sha1-usxp0lWXCkeOCfdsf2iZddU1p4o=", "dev": true, "requires": { - "archy": "1.0.0", - "bluebird": "3.7.2", - "chalk": "1.1.3", - "cli-truncate": "1.1.0", - "columnify": "1.5.4", - "elegant-spinner": "1.0.1", - "has-unicode": "2.0.1", - "listify": "1.0.0", - "log-update": "1.0.2", - "minimist": "1.2.5", - "promise-finally": "3.0.1", - "typings-core": "2.3.3", - "update-notifier": "2.5.0", - "wordwrap": "1.0.0", - "xtend": "4.0.2" + "archy": "^1.0.0", + "bluebird": "^3.1.1", + "chalk": "^1.0.0", + "cli-truncate": "^1.0.0", + "columnify": "^1.5.2", + "elegant-spinner": "^1.0.1", + "has-unicode": "^2.0.1", + "listify": "^1.0.0", + "log-update": "^1.0.2", + "minimist": "^1.2.0", + "promise-finally": "^3.0.0", + "typings-core": "^2.3.3", + "update-notifier": "^2.0.0", + "wordwrap": "^1.0.0", + "xtend": "^4.0.1" }, "dependencies": { "ansi-styles": { @@ -5585,11 +22378,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -5606,38 +22399,38 @@ "integrity": "sha1-CexUzVsR3V8e8vwKsx03ACyita0=", "dev": true, "requires": { - "array-uniq": "1.0.3", - "configstore": "3.1.2", - "debug": "2.6.9", - "detect-indent": "5.0.0", - "graceful-fs": "4.2.3", - "has": "1.0.3", - "invariant": "2.2.4", - "is-absolute": "0.2.6", - "jspm-config": "0.3.4", - "listify": "1.0.0", - "lockfile": "1.0.4", - "make-error-cause": "1.2.2", - "mkdirp": "0.5.4", - "object.pick": "1.3.0", - "parse-json": "2.2.0", - "popsicle": "9.2.0", - "popsicle-proxy-agent": "3.0.0", - "popsicle-retry": "3.2.1", - "popsicle-rewrite": "1.0.0", - "popsicle-status": "2.0.1", - "promise-finally": "3.0.1", - "rc": "1.2.8", - "rimraf": "2.7.1", - "sort-keys": "1.1.2", - "string-template": "1.0.0", - "strip-bom": "3.0.0", - "thenify": "3.3.0", - "throat": "3.2.0", - "touch": "1.0.0", - "typescript": "2.9.2", - "xtend": "4.0.2", - "zip-object": "0.1.0" + "array-uniq": "^1.0.2", + "configstore": "^3.0.0", + "debug": "^2.2.0", + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "has": "^1.0.1", + "invariant": "^2.2.0", + "is-absolute": "^0.2.3", + "jspm-config": "^0.3.0", + "listify": "^1.0.0", + "lockfile": "^1.0.1", + "make-error-cause": "^1.2.1", + "mkdirp": "^0.5.1", + "object.pick": "^1.1.1", + "parse-json": "^2.2.0", + "popsicle": "^9.0.0", + "popsicle-proxy-agent": "^3.0.0", + "popsicle-retry": "^3.2.0", + "popsicle-rewrite": "^1.0.0", + "popsicle-status": "^2.0.0", + "promise-finally": "^3.0.0", + "rc": "^1.1.5", + "rimraf": "^2.4.4", + "sort-keys": "^1.0.0", + "string-template": "^1.0.0", + "strip-bom": "^3.0.0", + "thenify": "^3.1.0", + "throat": "^3.0.0", + "touch": "^1.0.0", + "typescript": "^2.1.4", + "xtend": "^4.0.0", + "zip-object": "^0.1.0" }, "dependencies": { "debug": { @@ -5673,8 +22466,8 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", "requires": { - "buffer": "5.5.0", - "through": "2.3.8" + "buffer": "^5.2.1", + "through": "^2.3.8" } }, "unc-path-regex": { @@ -5694,7 +22487,7 @@ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "universalify": { @@ -5724,16 +22517,16 @@ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.4.2", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.2.1", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "uri-js": { @@ -5741,7 +22534,25 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } } }, "url-parse-lax": { @@ -5749,7 +22560,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "prepend-http": "2.0.0" + "prepend-http": "^2.0.0" } }, "url-set-query": { @@ -5772,6 +22583,17 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -5787,8 +22609,8 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { - "spdx-correct": "3.1.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vary": { @@ -5801,9 +22623,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "wcwidth": { @@ -5812,25 +22634,483 @@ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "requires": { - "defaults": "1.0.3" + "defaults": "^1.0.3" } }, "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "requires": { - "bignumber.js": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "crypto-js": "3.3.0", - "utf8": "2.1.2", - "xhr2": "0.2.0", - "xmlhttprequest": "1.8.0" + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.37.tgz", + "integrity": "sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ==", + "requires": { + "web3-bzz": "1.0.0-beta.37", + "web3-core": "1.0.0-beta.37", + "web3-eth": "1.0.0-beta.37", + "web3-eth-personal": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37", + "web3-shh": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" }, "dependencies": { - "utf8": { + "@types/node": { + "version": "10.17.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.21.tgz", + "integrity": "sha512-PQKsydPxYxF1DsAFWmunaxd3sOi3iMt6Zmx/tgaagHYmwJ/9cRH91hQkeJZaUGWbvn0K5HlSVEXkn5U/llWPpQ==" + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ethers": { + "version": "4.0.0-beta.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.1.tgz", + "integrity": "sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw==", + "requires": { + "@types/node": "^10.3.2", + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.3.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.3", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "elliptic": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", + "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + } + } + }, + "eventemitter3": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", + "integrity": "sha1-R3hr2qCHyvext15zq8XH1UAVjNA=" + }, + "fs-extra": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz", - "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY=" + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "oboe": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.3.tgz", + "integrity": "sha1-K0hl29Rr6BIlcT9Om/5Lz09oCk8=", + "requires": { + "http-https": "^1.0.0" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "scrypt-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" + }, + "scrypt.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.2.0.tgz", + "integrity": "sha1-r40UZbcemZARC+38WTuUeeA6ito=", + "requires": { + "scrypt": "^6.0.2", + "scryptsy": "^1.2.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "swarm-js": { + "version": "0.1.37", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.37.tgz", + "integrity": "sha512-G8gi5fcXP/2upwiuOShJ258sIufBVztekgobr3cVgYXObZwJ5AXLqZn52AI+/ffft29pJexF9WNdUxjlkVehoQ==", + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "decompress": "^4.0.0", + "eth-lib": "^0.1.26", + "fs-extra": "^2.1.2", + "fs-promise": "^2.0.0", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar.gz": "^1.0.5", + "xhr-request-promise": "^0.1.2" + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + }, + "utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.1.tgz", + "integrity": "sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + }, + "web3-bzz": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz", + "integrity": "sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ==", + "requires": { + "got": "7.1.0", + "swarm-js": "0.1.37", + "underscore": "1.8.3" + } + }, + "web3-core": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.37.tgz", + "integrity": "sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg==", + "requires": { + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-requestmanager": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-core-helpers": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", + "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", + "requires": { + "underscore": "1.8.3", + "web3-eth-iban": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-core-method": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz", + "integrity": "sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA==", + "requires": { + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-promievent": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-core-promievent": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz", + "integrity": "sha512-GTF2r1lP8nJBeA5Gxq5yZpJy9l8Fb9CXGZPfF8jHvaRdQHtm2Z+NDhqYmF833lcdkokRSyfPcXlz1mlWeClFpg==", + "requires": { + "any-promise": "1.3.0", + "eventemitter3": "1.1.1" + } + }, + "web3-core-requestmanager": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz", + "integrity": "sha512-66VUqye5BGp1Zz1r8psCxdNH+GtTjaFwroum2Osx+wbC5oRjAiXkkadiitf6wRb+edodjEMPn49u7B6WGNuewQ==", + "requires": { + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37", + "web3-providers-http": "1.0.0-beta.37", + "web3-providers-ipc": "1.0.0-beta.37", + "web3-providers-ws": "1.0.0-beta.37" + } + }, + "web3-core-subscriptions": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz", + "integrity": "sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA==", + "requires": { + "eventemitter3": "1.1.1", + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37" + } + }, + "web3-eth": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.37.tgz", + "integrity": "sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw==", + "requires": { + "underscore": "1.8.3", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-eth-abi": "1.0.0-beta.37", + "web3-eth-accounts": "1.0.0-beta.37", + "web3-eth-contract": "1.0.0-beta.37", + "web3-eth-ens": "1.0.0-beta.37", + "web3-eth-iban": "1.0.0-beta.37", + "web3-eth-personal": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-abi": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz", + "integrity": "sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA==", + "requires": { + "ethers": "4.0.0-beta.1", + "underscore": "1.8.3", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-accounts": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz", + "integrity": "sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g==", + "requires": { + "any-promise": "1.3.0", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.7", + "scrypt.js": "0.2.0", + "underscore": "1.8.3", + "uuid": "2.0.1", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + } + } + }, + "web3-eth-contract": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz", + "integrity": "sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ==", + "requires": { + "underscore": "1.8.3", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-promievent": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-eth-abi": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-ens": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz", + "integrity": "sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg==", + "requires": { + "eth-ens-namehash": "2.0.8", + "underscore": "1.8.3", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-promievent": "1.0.0-beta.37", + "web3-eth-abi": "1.0.0-beta.37", + "web3-eth-contract": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", + "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", + "requires": { + "bn.js": "4.11.6", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-personal": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz", + "integrity": "sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q==", + "requires": { + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-net": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.37.tgz", + "integrity": "sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw==", + "requires": { + "web3-core": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-providers-http": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz", + "integrity": "sha512-FM/1YDB1jtZuTo78habFj7S9tNHoqt0UipdyoQV29b8LkGKZV9Vs3is8L24hzuj1j/tbwkcAH+ewIseHwu0DTg==", + "requires": { + "web3-core-helpers": "1.0.0-beta.37", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz", + "integrity": "sha512-NdRPRxYMIU0C3u18NI8u4bwbhI9pCg5nRgDGYcmSAx5uOBxiYcQy+hb0WkJRRhBoyIXJmy+s26FoH8904+UnPg==", + "requires": { + "oboe": "2.1.3", + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37" + } + }, + "web3-providers-ws": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz", + "integrity": "sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw==", + "requires": { + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37", + "websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" + } + }, + "web3-shh": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.37.tgz", + "integrity": "sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw==", + "requires": { + "web3-core": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37" + } + }, + "web3-utils": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", + "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", + "requires": { + "bn.js": "4.11.6", + "eth-lib": "0.1.27", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randomhex": "0.1.5", + "underscore": "1.8.3", + "utf8": "2.1.1" + }, + "dependencies": { + "eth-lib": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.27.tgz", + "integrity": "sha512-B8czsfkJYzn2UIEMwjc7Mbj+Cy72V+/OXH/tb44LV8jhrjizQJJ325xMOMyk3+ETa6r6oi0jsUY14+om8mQMWA==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "keccakjs": "^0.2.1", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + } + } + }, + "websocket": { + "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", + "from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", + "requires": { + "debug": "^2.2.0", + "nan": "^2.3.3", + "typedarray-to-buffer": "^3.1.2", + "yaeti": "^0.0.6" + } } } }, @@ -5953,10 +23233,10 @@ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "inherits": "2.0.4" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" } }, "ethers": { @@ -5964,9 +23244,9 @@ "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", "requires": { - "@types/node": "10.17.17", + "@types/node": "^10.3.2", "aes-js": "3.0.0", - "bn.js": "4.11.8", + "bn.js": "^4.4.0", "elliptic": "6.3.3", "hash.js": "1.1.3", "js-sha3": "0.5.7", @@ -5981,8 +23261,8 @@ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "requires": { - "inherits": "2.0.4", - "minimalistic-assert": "1.0.1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "scrypt-js": { @@ -6020,9 +23300,9 @@ "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.5.2", - "xhr-request-promise": "0.1.2" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" } }, "scryptsy": { @@ -6108,37 +23388,38 @@ "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz", "integrity": "sha1-TYbhnjDKr5ffNRUR7A9gE25bMOs=", "requires": { - "async": "2.6.3", - "clone": "2.1.2", - "ethereumjs-block": "1.7.1", - "ethereumjs-tx": "1.3.7", - "ethereumjs-util": "5.2.0", - "ethereumjs-vm": "2.6.0", - "isomorphic-fetch": "2.2.1", - "request": "2.88.2", - "semaphore": "1.1.0", - "solc": "0.4.26", - "tape": "4.13.2", - "web3": "0.16.0", - "xhr": "2.5.0", - "xtend": "4.0.2" + "async": "^2.1.2", + "clone": "^2.0.0", + "ethereumjs-block": "^1.2.2", + "ethereumjs-tx": "^1.2.0", + "ethereumjs-util": "^5.0.1", + "ethereumjs-vm": "^2.0.2", + "isomorphic-fetch": "^2.2.0", + "request": "^2.67.0", + "semaphore": "^1.0.3", + "solc": "^0.4.2", + "tape": "^4.4.0", + "web3": "^0.16.0", + "xhr": "^2.2.0", + "xtend": "^4.0.1" }, "dependencies": { "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#c7a38de919ed75e6fb6ba38051986e294b328df9" + "version": "git+https://github.com/debris/bignumber.js.git#c7a38de919ed75e6fb6ba38051986e294b328df9", + "from": "git+https://github.com/debris/bignumber.js.git#master" }, "ethereumjs-util": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", "requires": { - "bn.js": "4.11.8", - "create-hash": "1.2.0", - "ethjs-util": "0.1.6", - "keccak": "1.4.0", - "rlp": "2.2.4", - "safe-buffer": "5.2.0", - "secp256k1": "3.8.0" + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" } }, "keccak": { @@ -6146,10 +23427,10 @@ "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", "requires": { - "bindings": "1.5.0", - "inherits": "2.0.4", - "nan": "2.14.0", - "safe-buffer": "5.2.0" + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" } }, "utf8": { @@ -6163,9 +23444,9 @@ "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", "requires": { "bignumber.js": "git+https://github.com/debris/bignumber.js.git#c7a38de919ed75e6fb6ba38051986e294b328df9", - "crypto-js": "3.3.0", - "utf8": "2.1.2", - "xmlhttprequest": "1.8.0" + "crypto-js": "^3.1.4", + "utf8": "^2.1.1", + "xmlhttprequest": "*" } } } @@ -6209,12 +23490,13 @@ }, "websocket": { "version": "github:web3-js/WebSocket-Node#905deb4812572b344f5801f8c9ce8bb02799d82e", + "from": "github:web3-js/WebSocket-Node#polyfill/globalThis", "requires": { - "debug": "2.6.9", - "es5-ext": "0.10.53", - "nan": "2.14.0", - "typedarray-to-buffer": "3.1.5", - "yaeti": "0.0.6" + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" } } } @@ -6249,9 +23531,9 @@ "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.5.2", - "xhr-request-promise": "0.1.2" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" } } } @@ -6261,11 +23543,11 @@ "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz", "integrity": "sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ==", "requires": { - "debug": "2.6.9", - "es5-ext": "0.10.53", - "nan": "2.14.0", - "typedarray-to-buffer": "3.1.5", - "yaeti": "0.0.6" + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" }, "dependencies": { "debug": { @@ -6288,7 +23570,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -6301,7 +23583,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2 || 2" } }, "widest-line": { @@ -6310,7 +23592,7 @@ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -6331,8 +23613,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -6341,11 +23623,19 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } }, + "wif": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", + "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", + "requires": { + "bs58check": "<3.0.0" + } + }, "window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", @@ -6362,8 +23652,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { @@ -6377,9 +23667,9 @@ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, "requires": { - "graceful-fs": "4.2.3", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.3" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "ws": { @@ -6387,9 +23677,9 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "1.0.1", - "safe-buffer": "5.1.2", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" }, "dependencies": { "safe-buffer": { @@ -6410,10 +23700,10 @@ "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", "requires": { - "global": "4.3.2", - "is-function": "1.0.1", - "parse-headers": "2.0.3", - "xtend": "4.0.2" + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" } }, "xhr-request": { @@ -6421,13 +23711,13 @@ "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", "requires": { - "buffer-to-arraybuffer": "0.0.5", - "object-assign": "4.1.1", - "query-string": "5.1.1", - "simple-get": "2.8.1", - "timed-out": "4.0.1", - "url-set-query": "1.0.0", - "xhr": "2.5.0" + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" } }, "xhr-request-promise": { @@ -6435,7 +23725,7 @@ "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz", "integrity": "sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0=", "requires": { - "xhr-request": "1.1.0" + "xhr-request": "^1.0.1" } }, "xhr2": { @@ -6448,7 +23738,7 @@ "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", "requires": { - "cookiejar": "2.1.2" + "cookiejar": "^2.1.1" } }, "xmlhttprequest": { @@ -6481,20 +23771,20 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.3", - "lodash.assign": "4.2.0", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "window-size": "0.2.0", - "y18n": "3.2.1", - "yargs-parser": "2.4.1" + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" } }, "yargs-parser": { @@ -6502,8 +23792,8 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", "requires": { - "camelcase": "3.0.0", - "lodash.assign": "4.2.0" + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" } }, "yauzl": { @@ -6511,8 +23801,8 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.1.0" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "yn": { diff --git a/package.json b/package.json index 9941166..24d4a7d 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,9 @@ }, "homepage": "https://github.com/vaibhavchellani/BOPR-contracts#readme", "dependencies": { + "@nomiclabs/buidler": "^1.3.1", + "@nomiclabs/buidler-truffle5": "^1.3.1", + "@nomiclabs/buidler-web3": "^1.3.1", "@types/chai-as-promised": "^7.1.2", "abi-decoder": "^2.3.0", "big-number": "^2.0.0", @@ -51,10 +54,14 @@ "ts-node": "^8.8.1", "typechain-target-truffle": "^1.0.2", "typescript": "^3.8.3", + "web3": "1.0.0-beta.37", "zeppelin-solidity": "^1.12.0" }, "devDependencies": { + "@nomiclabs/buidler-ethers": "^1.3.1", + "@nomiclabs/buidler-waffle": "^1.3.1", "@openzeppelin/contracts": "^2.4.0", + "ethereum-waffle": "^2.4.1", "prettier": "^1.19.1", "prettier-plugin-solidity": "^1.0.0-alpha.46", "ts-node": "^8.8.1", From a3a53791bc148b94a5ffc93ffe1f3e1c7650c5fc Mon Sep 17 00:00:00 2001 From: Vaibhav Chellani Date: Wed, 29 Apr 2020 17:34:46 +0530 Subject: [PATCH 2/2] added husky --- package-lock.json | 324 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 325 insertions(+) diff --git a/package-lock.json b/package-lock.json index 1df1daf..c300dd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,41 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@ethereum-waffle/chai": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-2.4.1.tgz", @@ -935,6 +970,12 @@ "@types/chai": "*" } }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.0.tgz", @@ -998,6 +1039,12 @@ } } }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, "@types/prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", @@ -1772,6 +1819,12 @@ } } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", @@ -2066,6 +2119,12 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2179,6 +2238,39 @@ "vary": "^1" } }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -4279,6 +4371,15 @@ "pinkie-promise": "^2.0.0" } }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, "flow-stoplight": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz", @@ -19147,6 +19248,82 @@ } } }, + "husky": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", + "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^6.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -19180,6 +19357,24 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -19487,6 +19682,12 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -19801,6 +20002,12 @@ } } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "listify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.0.tgz", @@ -20465,6 +20672,12 @@ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "dev": true + }, "original-require": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", @@ -20618,6 +20831,15 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -20755,6 +20977,75 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, "popsicle": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/popsicle/-/popsicle-9.2.0.tgz", @@ -21070,6 +21361,12 @@ } } }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, "regexp.prototype.flags": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", @@ -21326,6 +21623,12 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", @@ -21335,6 +21638,12 @@ "semver": "^5.0.3" } }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -23578,6 +23887,12 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -23766,6 +24081,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "yaml": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.9.2.tgz", + "integrity": "sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.9.2" + } + }, "yargs": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", diff --git a/package.json b/package.json index 24d4a7d..78e83a0 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "@nomiclabs/buidler-waffle": "^1.3.1", "@openzeppelin/contracts": "^2.4.0", "ethereum-waffle": "^2.4.1", + "husky": "^4.2.5", "prettier": "^1.19.1", "prettier-plugin-solidity": "^1.0.0-alpha.46", "ts-node": "^8.8.1",