Repository: raiden-network/raiden-contracts (language: python)

Issue:
Use error strings in smart contracts
## Description 
Since solidity 0.4.22 error strings are supported for revert and require:
```
pragma solidity ^0.4.22;

contract VendingMachine {
    function buy(uint amount) payable {
        if (amount > msg.value / 2 ether)
            revert("Not enough Ether provided.");
        // Alternative way to do it:
        require(
            amount <= msg.value / 2 ether,
            "Not enough Ether provided."
        );
        // Perform the purchase.
    }
}
```
Adding this to the smart contract will make it easier to debug where things go wrong in a function. It also makes the terrible work flow of removing `require`s to figure out which require is failing obsolete. 

## Tasklist 
- [x] SecretRegistry - no `require`s
- [x] TokenNetworkRegistry (#1498)
- [x] TokenNetwork (https://github.com/raiden-network/raiden-contracts/pull/1499)
- [x] Controllable (#1492)
- [x] MonitoringService
- [x] OneToN
- [x] ServiceRegistry
- [x] UserDeposit
Allow disabling limits after deployment
We want to be able to remove the limits without redeploying the contracts. We do this by setting the limits to MAX_INT.

Closes https://github.com/raiden-network/raiden-contracts/issues/1481.

To safely allow 3rd parties to create token networks after the limit removal, creating new TNs must not involve any parametrization. This is done by forcing the limits to be MAX_INT after the limits have been removed from the TNR.

Closes https://github.com/raiden-network/raiden-contracts/issues/1416.


Discussion / hints:
@loredanacirstea Do you think you can add them in this contract change (red eyes testnet 4)? I would say it's good to take advantage of the redeployment to include them.
Yes, added the milestone now.
Just some notes:

- revert error messages are not currently supported by web3.py - https://github.com/ethereum/web3.py/issues/941. When they will be supported, in order to get them, one would need to `eth_call` the contract function and get the encoded error.
- there are EIPs in discussion about standardizing status codes for errors (similar to http), that can also be handled in the EVM - https://eips.ethereum.org/EIPS/eip-1066; This is worth following in my opinion, as it could improve the automatic interaction between smart contracts.

Aside from these mentions, I am ok with just using some error strings right now and re-evaluating them after standards are clarified, because I assume it will take a while.
The revert error strings cannot be implemented right now in a satisfactory manner, as commented in https://github.com/raiden-network/raiden-contracts/pull/213#issuecomment-410788010
I would move this to the `Ithaca` milestone and address it after https://github.com/raiden-network/raiden-contracts/issues/215.

@LefterisJP ?
@loredanacirstea Was looking at the Testnet 4 milestone and was wondering why this is not there yet. I understand now. Sure let's do this. It's not a requirement right now at all anyway.
P2 because I heard error strings would have saved our time today.
If we don't hit the bytecode length after enabling cooperativeSettle(), this will be definitely implemented.  So the next task is to try enabling the cooperativeSettle() locally and see if the compilation still works.
Even if we recover `cooperativeSettle()`, we can still add at least a two-character message to each `require`.
If we recover `cooperativeSettle()` and add a two-character comment on each of `require`, the runtime codesize will be 28835 bytes, which exceeds the deployable limit of 24576 bytes.
Whether we optimize or not, any message that fits 32 bytes seems to compile into the samely sized runtime code.  So no need to go for cryptic "a" "b" "c" style messages.
I’ll just add somewhat recognizable comments under 32 bytes.
This depends on #401.
Just tried the old PR again, we're still running into code size issues.

Blocked by #401 
See https://github.com/raiden-network/raiden-contracts/issues/1435 for more space saving.


Fix patch:
diff --git a/raiden_contracts/data/contracts.json b/raiden_contracts/data/contracts.json
index 7bef28081..21ab58d3f 100644
--- a/raiden_contracts/data/contracts.json
+++ b/raiden_contracts/data/contracts.json
@@ -1180,9 +1180,9 @@
                     "type": "function"
                 }
             ],
-            "bin": "60806040523480156200001157600080fd5b506040516200184938038062001849833981810160405260808110156200003757600080fd5b50805160208201516040830151606090930151919290916001600160a01b038416620000aa576040805162461bcd60e51b815260206004820152601560248201527f546f6b656e2061742061646472657373207a65726f0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831662000106576040805162461bcd60e51b815260206004820152601f60248201527f5365727669636552656769737472792061742061646472657373207a65726f00604482015290519081900360640190fd5b6001600160a01b03821662000162576040805162461bcd60e51b815260206004820152601360248201527f5544432061742061646472657373207a65726f00000000000000000000000000604482015290519081900360640190fd5b6200016d84620003cb565b620001b3576040805162461bcd60e51b8152602060048201526011602482015270746f6b656e20686173206e6f20636f646560781b604482015290519081900360640190fd5b620001be83620003cb565b62000210576040805162461bcd60e51b815260206004820152601b60248201527f53657276696365526567697374727920686173206e6f20636f64650000000000604482015290519081900360640190fd5b6200021b82620003cb565b6200025f576040805162461bcd60e51b815260206004820152600f60248201526e55444320686173206e6f20636f646560881b604482015290519081900360640190fd5b6200026a81620003cb565b620002bc576040805162461bcd60e51b815260206004820181905260248201527f546f6b656e4e6574776f726b526567697374727920686173206e6f20636f6465604482015290519081900360640190fd5b600080546001600160a01b03199081166001600160a01b03878116919091178084556001805484168884161790556002805484168784161790556003805490931685831617909255604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b1580156200034057600080fd5b505afa15801562000355573d6000803e3d6000fd5b505050506040513d60208110156200036c57600080fd5b505111620003c1576040805162461bcd60e51b815260206004820152601c60248201527f546f6b656e2077697468207a65726f20746f74616c20737570706c7900000000604482015290519081900360640190fd5b50505050620003d1565b3b151590565b61146880620003e16000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637709bc78116100665780637709bc78146101aa57806381c6dac2146101d0578063b4238f4a146101d8578063d3b6c080146101e0578063fc0c546a146103d857610093565b80630e7dfb731461009857806360df33d8146100ea578063637d89d4146101425780636766923e14610166575b600080fd5b6100d6600480360360808110156100ae57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166103e0565b604080519115158252519081900360200190f35b610130600480360360a081101561010057600080fd5b506001600160a01b038135811691602081013591604082013581169160608101358216916080909101351661075e565b60408051918252519081900360200190f35b61014a6109e6565b604080516001600160a01b039092168252519081900360200190f35b610130600480360360a081101561017c57600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608090910135166109f5565b6100d6600480360360208110156101c057600080fd5b50356001600160a01b0316610b23565b61014a610b29565b61014a610b38565b6103d660048036036101408110156101f757600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561023e57600080fd5b82018360208201111561025057600080fd5b8035906020019184600183028401116401000000008311171561027257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156102c557600080fd5b8201836020820111156102d757600080fd5b803590602001918460018302840111640100000000831117156102f957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b036020870135169591945092506060810191506040013564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184600183028401116401000000008311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b47945050505050565b005b61014a610e0d565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60408110156104a057600080fd5b5080516020909101519250905060028260048111156104bb57fe5b14806104d2575060038260048111156104d057fe5b145b806104e8575060048260048111156104e657fe5b145b610539576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b43811061058d576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166105f2576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561065c57600080fd5b505af1158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b50516106d0576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d60208110156107d957600080fd5b5051610825576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d60408110156108a857600080fd5b5080516020909101519250905060028260048111156108c357fe5b1461090a576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b15801561094557600080fd5b505afa158015610959573d6000803e3d6000fd5b505050506040513d602081101561096f57600080fd5b50519050808210156109c8576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b8082036109d881838a8a8a6109f5565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610a6b576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610adf576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610b1057fe5b06929092019a9950505050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610b57828b8b868b338a88610e1c565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610bbc57600080fd5b505afa158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b50519050610bf782828e8e3361075e565b431015610c44576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ce1578181015183820152602001610cc9565b50505050905090810190601f168015610d0e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d41578181015183820152602001610d29565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b6000546001600160a01b031681565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d6020811015610e8657600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d6020811015610f0657600080fd5b50516001600160a01b031614610f5a576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610fba57600080fd5b505afa158015610fce573d6000803e3d6000fd5b505050506040513d6020811015610fe457600080fd5b505160408051633af973b160e01b81529051919250600091611067916001600160a01b03871691633af973b191600480820192602092909190829003018186803b15801561103157600080fd5b505afa158015611045573d6000803e3d6000fd5b505050506040513d602081101561105b57600080fd5b50518d8c898d8a6111e2565b9050896001600160a01b0316816001600160a01b0316146110c2576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002090508981600101541061115e576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106112895780518252601f19909201916020918201910161126a565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912097506112d696508795508994506113339350505050565b9150856001600160a01b0316826001600160a01b0316146113285760405162461bcd60e51b815260040180806020018281038252602f815260200180611404602f913960400191505060405180910390fd5b509695505050505050565b6000815160411461134357600080fd5b60208201516040830151606084015160001a601b81101561136257601b015b8060ff16601b148061137757508060ff16601c145b61138057600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113da573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b0384166113fa57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a2646970667358221220866eff812ce940fe285ac6ecab35c15b68cc19feee1247dc6f677fe35bd86a0e64736f6c63430007060033",
-            "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c80637709bc78116100665780637709bc78146101aa57806381c6dac2146101d0578063b4238f4a146101d8578063d3b6c080146101e0578063fc0c546a146103d857610093565b80630e7dfb731461009857806360df33d8146100ea578063637d89d4146101425780636766923e14610166575b600080fd5b6100d6600480360360808110156100ae57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166103e0565b604080519115158252519081900360200190f35b610130600480360360a081101561010057600080fd5b506001600160a01b038135811691602081013591604082013581169160608101358216916080909101351661075e565b60408051918252519081900360200190f35b61014a6109e6565b604080516001600160a01b039092168252519081900360200190f35b610130600480360360a081101561017c57600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608090910135166109f5565b6100d6600480360360208110156101c057600080fd5b50356001600160a01b0316610b23565b61014a610b29565b61014a610b38565b6103d660048036036101408110156101f757600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561023e57600080fd5b82018360208201111561025057600080fd5b8035906020019184600183028401116401000000008311171561027257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156102c557600080fd5b8201836020820111156102d757600080fd5b803590602001918460018302840111640100000000831117156102f957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b036020870135169591945092506060810191506040013564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184600183028401116401000000008311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b47945050505050565b005b61014a610e0d565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60408110156104a057600080fd5b5080516020909101519250905060028260048111156104bb57fe5b14806104d2575060038260048111156104d057fe5b145b806104e8575060048260048111156104e657fe5b145b610539576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b43811061058d576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166105f2576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561065c57600080fd5b505af1158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b50516106d0576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d60208110156107d957600080fd5b5051610825576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d60408110156108a857600080fd5b5080516020909101519250905060028260048111156108c357fe5b1461090a576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b15801561094557600080fd5b505afa158015610959573d6000803e3d6000fd5b505050506040513d602081101561096f57600080fd5b50519050808210156109c8576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b8082036109d881838a8a8a6109f5565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610a6b576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610adf576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610b1057fe5b06929092019a9950505050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610b57828b8b868b338a88610e1c565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610bbc57600080fd5b505afa158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b50519050610bf782828e8e3361075e565b431015610c44576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ce1578181015183820152602001610cc9565b50505050905090810190601f168015610d0e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d41578181015183820152602001610d29565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b6000546001600160a01b031681565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d6020811015610e8657600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d6020811015610f0657600080fd5b50516001600160a01b031614610f5a576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610fba57600080fd5b505afa158015610fce573d6000803e3d6000fd5b505050506040513d6020811015610fe457600080fd5b505160408051633af973b160e01b81529051919250600091611067916001600160a01b03871691633af973b191600480820192602092909190829003018186803b15801561103157600080fd5b505afa158015611045573d6000803e3d6000fd5b505050506040513d602081101561105b57600080fd5b50518d8c898d8a6111e2565b9050896001600160a01b0316816001600160a01b0316146110c2576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002090508981600101541061115e576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106112895780518252601f19909201916020918201910161126a565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912097506112d696508795508994506113339350505050565b9150856001600160a01b0316826001600160a01b0316146113285760405162461bcd60e51b815260040180806020018281038252602f815260200180611404602f913960400191505060405180910390fd5b509695505050505050565b6000815160411461134357600080fd5b60208201516040830151606084015160001a601b81101561136257601b015b8060ff16601b148061137757508060ff16601c145b61138057600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113da573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b0384166113fa57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a2646970667358221220866eff812ce940fe285ac6ecab35c15b68cc19feee1247dc6f677fe35bd86a0e64736f6c63430007060033",
-            "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_service_registry_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_udc_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token_network_registry_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"raiden_node_address\",\"type\":\"address\"}],\"name\":\"NewBalanceProofReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"reward_identifier\",\"type\":\"bytes32\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"contractExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"closed_at_block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"settle_timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"participant2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TokenNetwork\",\"name\":\"token_network\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitorChannel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balance_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"additional_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reward_proof_signature\",\"type\":\"bytes\"}],\"name\":\"monitor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"service_registry\",\"outputs\":[{\"internalType\":\"contract ServiceRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token_network_registry\",\"outputs\":[{\"internalType\":\"contract TokenNetworkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user_deposit\",\"outputs\":[{\"internalType\":\"contract UserDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"params\":{\"closing_participant\":\"Address of the participant of the channel that called close\",\"non_closing_participant\":\"The other participant of the channel\",\"token_network_address\":\"Address of the Token Network in which the channel exists\"}},\"constructor\":{\"params\":{\"_service_registry_address\":\"The address of the ServiceRegistry contract\",\"_token_address\":\"The address of the token to use for rewards\",\"_token_network_registry_address\":\"The address of the TokenNetworkRegistry for authenticating TokenNetworks\"}},\"contractExists(address)\":{\"params\":{\"contract_address\":\"The address to check whether a contract is deployed or not\"},\"returns\":{\"_0\":\"True if a contract exists, false otherwise\"}},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"params\":{\"nonce\":\"Strictly monotonic value used to order BPs omitting PB specific params, since these will not be provided in the future\",\"reward_amount\":\"Amount of tokens to be rewarded\",\"reward_proof_signature\":\"The signature of the signed reward proof\",\"token_network_address\":\"Address of the Token Network in which the channel being monitored exists.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"notice\":\"Called after a monitored channel is settled in order for MS to claim the reward Can be called once per settled channel by everyone on behalf of MS\"},\"constructor\":{\"notice\":\"Set the default values for the smart contract\"},\"contractExists(address)\":{\"notice\":\"Check if a contract exists\"},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"notice\":\"Called by a registered MS, when providing a new balance proof to a monitored channel. Can be called multiple times by different registered MSs as long as the BP provided is newer than the current newest registered BP.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"data/source/services/MonitoringService.sol\":\"MonitoringService\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":.=.\",\":lib=data/source/lib\",\":raiden=data/source/raiden\",\":services=data/source/services\",\":test=data/source/test\"]},\"sources\":{\"data/source/lib/ECVerify.sol\":{\"keccak256\":\"0xeced41e7578af77042e00fc68e482b754cd355da872bfdda95a0b74e3dbd90e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9838dc558bce37a7490ac84f834cb1cf33cba1e13438e1666be7011f03b0ac2\",\"dweb:/ipfs/QmUb9dn1FeZbJCNg5hN7wXapTcP5V52Q554bd97hhYr9qN\"]},\"data/source/lib/MessageType.sol\":{\"keccak256\":\"0xe4a3d54220ba19024c03fac9f8b3338245f2c4aa266627e6cdb5e97a2adcdee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b1d37be2f7d509e3c32f5e5cd5f58bcd67d11e907678e9343cccc9bc082476f\",\"dweb:/ipfs/QmTW6hUvkxXt5q7MbhtHPjWqdBd1tEC4bd1kFswDGhnvA6\"]},\"data/source/lib/TokenNetworkUtils.sol\":{\"keccak256\":\"0x9b7f52457a0d8e842eb6a64b9d30f044bbe1f4c6892d52c809924d837dc7ba75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://200eaf3a33fbb18518f21c88e3ece992a871738c725d4dd2c9e309f71adf7c6f\",\"dweb:/ipfs/QmX2WjHpEifYhj1ZMc8JJQMABvgCZ6XL4euq71cSXfmFpi\"]},\"data/source/raiden/Controllable.sol\":{\"keccak256\":\"0xccedede2950079f2e4dbe5f89f5a997bea0398828da90b6ef0f66bbd509d305c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b3ffa7945f7bd59dd46b622d69aa5970a5e858c690bf523d8151bf34b9d56c2\",\"dweb:/ipfs/QmcadWAn8FBfsxKrK9ScVCjHsjctBys2AgqGF8PWUij98y\"]},\"data/source/raiden/SecretRegistry.sol\":{\"keccak256\":\"0x828dbf9a344f66cb982df97f677d10942d1b163287b890860be40230b236642e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bde28a380d82203002375789cae1460df2128b7e21349f1c4436128ad581fed2\",\"dweb:/ipfs/QmZT8boB78rduGwZjPdwymuVuRQKhxh2N6D1uHbb5jtDZ8\"]},\"data/source/raiden/Token.sol\":{\"keccak256\":\"0x5a8ccb9fa426228d9e213164f22a94b0ac57f1aa15ab76ce88a96177edd7b0b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff1ddcfa729756503a156edda9aa65cbfd0522c449e0451ad3e5b5f72c2da256\",\"dweb:/ipfs/QmVQ4DeSBjo1W5obzasyT1re9jEQW2ydaMuj1GMa1cyKbV\"]},\"data/source/raiden/TokenNetwork.sol\":{\"keccak256\":\"0x88d6cb97eca333198c79ed2b6b86b9fac5edd629243c1261340f21125a4dc3de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b5cb209461763fd99a781a7f9b71275924a512f4ed81d285d54d372fe2bf0f\",\"dweb:/ipfs/QmPDVMJGH83DbHkHAdafhXZGcAMPZQP14wTLLam9996CDS\"]},\"data/source/raiden/TokenNetworkRegistry.sol\":{\"keccak256\":\"0xb20e56a9719fef0da8e3abecbfc4e5a00034979f038ab4b30ca425c6886bae61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5251c6d78680933fa5764557fb021a5ed20c79db93458e446db2697f85fa5f5\",\"dweb:/ipfs/Qmdq24hwQUscWY1GeNLNXTXyWFKgeyz7Cex7HKfXeLVJES\"]},\"data/source/raiden/Utils.sol\":{\"keccak256\":\"0x3fb4df9cdadd3711bffff81a451868c7a1ee8a2f3ff1a20a4343def15cb38e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67e2deac2f8ae6d3fc41d84474d2d7f2a098a9e1da70c60ae4590a05495c20c1\",\"dweb:/ipfs/QmRgqjDcKhG7dW68FRKZyYKhYULXx8keftggJFTfUoDGex\"]},\"data/source/services/MonitoringService.sol\":{\"keccak256\":\"0x4b3df68f82c37086cae8125076eed1754aef95dfe878f191e34ce0e424fc0c80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://452b2cd20963c7e9c3497abc274904fa5476f63580152116af790cb1d13dd63a\",\"dweb:/ipfs/QmSD3dWjDuwcPYp3TPDSDz8D8iYT8nC8NVcoQPGN6q8RsF\"]},\"data/source/services/ServiceRegistry.sol\":{\"keccak256\":\"0xacb22c106731315088e7203ad46ac892a29abf5549d86427b812adb9a1899ae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba03b692dd747974d79d06d781b6f0709eaf8d1eccc76bae04ebffbab2354d4f\",\"dweb:/ipfs/QmTUHeruGGafJ3GKbYLgRLHdgcSAghAmpE6GJHcm98LiAt\"]},\"data/source/services/UserDeposit.sol\":{\"keccak256\":\"0x479f63f142d920176d27efb01e2924d763131c7d4e08d5b531305219d169e31d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c53c484572b7a2d2c5f2681a16d6fce366ef6e06008a165b6f35789fbbd2279\",\"dweb:/ipfs/QmXaqDWqZ91As7JReLnENWnzVpUBrykcsqCrUyoEVyich4\"]}},\"version\":1}"
+            "bin": "60806040523480156200001157600080fd5b506040516200184938038062001849833981810160405260808110156200003757600080fd5b50805160208201516040830151606090930151919290916001600160a01b038416620000aa576040805162461bcd60e51b815260206004820152601560248201527f546f6b656e2061742061646472657373207a65726f0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03831662000106576040805162461bcd60e51b815260206004820152601f60248201527f5365727669636552656769737472792061742061646472657373207a65726f00604482015290519081900360640190fd5b6001600160a01b03821662000162576040805162461bcd60e51b815260206004820152601360248201527f5544432061742061646472657373207a65726f00000000000000000000000000604482015290519081900360640190fd5b6200016d84620003cb565b620001b3576040805162461bcd60e51b8152602060048201526011602482015270746f6b656e20686173206e6f20636f646560781b604482015290519081900360640190fd5b620001be83620003cb565b62000210576040805162461bcd60e51b815260206004820152601b60248201527f53657276696365526567697374727920686173206e6f20636f64650000000000604482015290519081900360640190fd5b6200021b82620003cb565b6200025f576040805162461bcd60e51b815260206004820152600f60248201526e55444320686173206e6f20636f646560881b604482015290519081900360640190fd5b6200026a81620003cb565b620002bc576040805162461bcd60e51b815260206004820181905260248201527f546f6b656e4e6574776f726b526567697374727920686173206e6f20636f6465604482015290519081900360640190fd5b600080546001600160a01b03199081166001600160a01b03878116919091178084556001805484168884161790556002805484168784161790556003805490931685831617909255604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b1580156200034057600080fd5b505afa15801562000355573d6000803e3d6000fd5b505050506040513d60208110156200036c57600080fd5b505111620003c1576040805162461bcd60e51b815260206004820152601c60248201527f546f6b656e2077697468207a65726f20746f74616c20737570706c7900000000604482015290519081900360640190fd5b50505050620003d1565b3b151590565b61146880620003e16000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637709bc78116100665780637709bc78146101aa57806381c6dac2146101d0578063b4238f4a146101d8578063d3b6c080146101e0578063fc0c546a146103d857610093565b80630e7dfb731461009857806360df33d8146100ea578063637d89d4146101425780636766923e14610166575b600080fd5b6100d6600480360360808110156100ae57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166103e0565b604080519115158252519081900360200190f35b610130600480360360a081101561010057600080fd5b506001600160a01b038135811691602081013591604082013581169160608101358216916080909101351661075e565b60408051918252519081900360200190f35b61014a6109e6565b604080516001600160a01b039092168252519081900360200190f35b610130600480360360a081101561017c57600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608090910135166109f5565b6100d6600480360360208110156101c057600080fd5b50356001600160a01b0316610b23565b61014a610b29565b61014a610b38565b6103d660048036036101408110156101f757600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561023e57600080fd5b82018360208201111561025057600080fd5b8035906020019184600183028401116401000000008311171561027257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156102c557600080fd5b8201836020820111156102d757600080fd5b803590602001918460018302840111640100000000831117156102f957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b036020870135169591945092506060810191506040013564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184600183028401116401000000008311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b47945050505050565b005b61014a610e0d565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60408110156104a057600080fd5b5080516020909101519250905060028260048111156104bb57fe5b14806104d2575060038260048111156104d057fe5b145b806104e8575060048260048111156104e657fe5b145b610539576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b43811061058d576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166105f2576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561065c57600080fd5b505af1158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b50516106d0576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d60208110156107d957600080fd5b5051610825576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d60408110156108a857600080fd5b5080516020909101519250905060028260048111156108c357fe5b1461090a576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b15801561094557600080fd5b505afa158015610959573d6000803e3d6000fd5b505050506040513d602081101561096f57600080fd5b50519050808210156109c8576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b8082036109d881838a8a8a6109f5565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610a6b576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610adf576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610b1057fe5b06929092019a9950505050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610b57828b8b868b338a88610e1c565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610bbc57600080fd5b505afa158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b50519050610bf782828e8e3361075e565b431015610c44576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ce1578181015183820152602001610cc9565b50505050905090810190601f168015610d0e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d41578181015183820152602001610d29565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b6000546001600160a01b031681565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d6020811015610e8657600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d6020811015610f0657600080fd5b50516001600160a01b031614610f5a576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610fba57600080fd5b505afa158015610fce573d6000803e3d6000fd5b505050506040513d6020811015610fe457600080fd5b505160408051633af973b160e01b81529051919250600091611067916001600160a01b03871691633af973b191600480820192602092909190829003018186803b15801561103157600080fd5b505afa158015611045573d6000803e3d6000fd5b505050506040513d602081101561105b57600080fd5b50518d8c898d8a6111e2565b9050896001600160a01b0316816001600160a01b0316146110c2576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002090508981600101541061115e576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106112895780518252601f19909201916020918201910161126a565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912097506112d696508795508994506113339350505050565b9150856001600160a01b0316826001600160a01b0316146113285760405162461bcd60e51b815260040180806020018281038252602f815260200180611404602f913960400191505060405180910390fd5b509695505050505050565b6000815160411461134357600080fd5b60208201516040830151606084015160001a601b81101561136257601b015b8060ff16601b148061137757508060ff16601c145b61138057600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113da573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b0384166113fa57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a2646970667358221220cffb455af8d8582f82f7cfec4b8627723ff799abe2303661bf481e1045806ce564736f6c63430007060033",
+            "bin-runtime": "608060405234801561001057600080fd5b50600436106100935760003560e01c80637709bc78116100665780637709bc78146101aa57806381c6dac2146101d0578063b4238f4a146101d8578063d3b6c080146101e0578063fc0c546a146103d857610093565b80630e7dfb731461009857806360df33d8146100ea578063637d89d4146101425780636766923e14610166575b600080fd5b6100d6600480360360808110156100ae57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166103e0565b604080519115158252519081900360200190f35b610130600480360360a081101561010057600080fd5b506001600160a01b038135811691602081013591604082013581169160608101358216916080909101351661075e565b60408051918252519081900360200190f35b61014a6109e6565b604080516001600160a01b039092168252519081900360200190f35b610130600480360360a081101561017c57600080fd5b508035906020810135906001600160a01b0360408201358116916060810135821691608090910135166109f5565b6100d6600480360360208110156101c057600080fd5b50356001600160a01b0316610b23565b61014a610b29565b61014a610b38565b6103d660048036036101408110156101f757600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561023e57600080fd5b82018360208201111561025057600080fd5b8035906020019184600183028401116401000000008311171561027257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156102c557600080fd5b8201836020820111156102d757600080fd5b803590602001918460018302840111640100000000831117156102f957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b036020870135169591945092506060810191506040013564010000000081111561036157600080fd5b82018360208201111561037357600080fd5b8035906020019184600183028401116401000000008311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b47945050505050565b005b61014a610e0d565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60408110156104a057600080fd5b5080516020909101519250905060028260048111156104bb57fe5b14806104d2575060038260048111156104d057fe5b145b806104e8575060048260048111156104e657fe5b145b610539576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b43811061058d576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166105f2576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561065c57600080fd5b505af1158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b50516106d0576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d60208110156107d957600080fd5b5051610825576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d60408110156108a857600080fd5b5080516020909101519250905060028260048111156108c357fe5b1461090a576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b15801561094557600080fd5b505afa158015610959573d6000803e3d6000fd5b505050506040513d602081101561096f57600080fd5b50519050808210156109c8576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b8082036109d881838a8a8a6109f5565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610a6b576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610adf576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610b1057fe5b06929092019a9950505050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610b57828b8b868b338a88610e1c565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610bbc57600080fd5b505afa158015610bd0573d6000803e3d6000fd5b505050506040513d6020811015610be657600080fd5b50519050610bf782828e8e3361075e565b431015610c44576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ce1578181015183820152602001610cc9565b50505050905090810190601f168015610d0e5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610d41578181015183820152602001610d29565b50505050905090810190601f168015610d6e5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b6000546001600160a01b031681565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d6020811015610e8657600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d6020811015610f0657600080fd5b50516001600160a01b031614610f5a576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610fba57600080fd5b505afa158015610fce573d6000803e3d6000fd5b505050506040513d6020811015610fe457600080fd5b505160408051633af973b160e01b81529051919250600091611067916001600160a01b03871691633af973b191600480820192602092909190829003018186803b15801561103157600080fd5b505afa158015611045573d6000803e3d6000fd5b505050506040513d602081101561105b57600080fd5b50518d8c898d8a6111e2565b9050896001600160a01b0316816001600160a01b0316146110c2576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120905060006004600083815260200190815260200160002090508981600101541061115e576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106112895780518252601f19909201916020918201910161126a565b51815160209384036101000a60001901801990921691161790529201938452506040805180850381529382019052825192019190912097506112d696508795508994506113339350505050565b9150856001600160a01b0316826001600160a01b0316146113285760405162461bcd60e51b815260040180806020018281038252602f815260200180611404602f913960400191505060405180910390fd5b509695505050505050565b6000815160411461134357600080fd5b60208201516040830151606084015160001a601b81101561136257601b015b8060ff16601b148061137757508060ff16601c145b61138057600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113da573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b0384166113fa57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a2646970667358221220cffb455af8d8582f82f7cfec4b8627723ff799abe2303661bf481e1045806ce564736f6c63430007060033",
+            "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_service_registry_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_udc_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token_network_registry_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"raiden_node_address\",\"type\":\"address\"}],\"name\":\"NewBalanceProofReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"reward_identifier\",\"type\":\"bytes32\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"contractExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"closed_at_block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"settle_timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"participant2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TokenNetwork\",\"name\":\"token_network\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitorChannel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balance_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"additional_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reward_proof_signature\",\"type\":\"bytes\"}],\"name\":\"monitor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"service_registry\",\"outputs\":[{\"internalType\":\"contract ServiceRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token_network_registry\",\"outputs\":[{\"internalType\":\"contract TokenNetworkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user_deposit\",\"outputs\":[{\"internalType\":\"contract UserDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"params\":{\"closing_participant\":\"Address of the participant of the channel that called close\",\"non_closing_participant\":\"The other participant of the channel\",\"token_network_address\":\"Address of the Token Network in which the channel exists\"}},\"constructor\":{\"params\":{\"_service_registry_address\":\"The address of the ServiceRegistry contract\",\"_token_address\":\"The address of the token to use for rewards\",\"_token_network_registry_address\":\"The address of the TokenNetworkRegistry for authenticating TokenNetworks\"}},\"contractExists(address)\":{\"params\":{\"contract_address\":\"The address to check whether a contract is deployed or not\"},\"returns\":{\"_0\":\"True if a contract exists, false otherwise\"}},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"params\":{\"nonce\":\"Strictly monotonic value used to order BPs omitting PB specific params, since these will not be provided in the future\",\"reward_amount\":\"Amount of tokens to be rewarded\",\"reward_proof_signature\":\"The signature of the signed reward proof\",\"token_network_address\":\"Address of the Token Network in which the channel being monitored exists.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"notice\":\"Called after a monitored channel is settled in order for MS to claim the reward Can be called once per settled channel by everyone on behalf of MS\"},\"constructor\":{\"notice\":\"Set the default values for the smart contract\"},\"contractExists(address)\":{\"notice\":\"Check if a contract exists\"},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"notice\":\"Called by a registered MS, when providing a new balance proof to a monitored channel. Can be called multiple times by different registered MSs as long as the BP provided is newer than the current newest registered BP.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"data/source/services/MonitoringService.sol\":\"MonitoringService\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":.=.\",\":lib=data/source/lib\",\":raiden=data/source/raiden\",\":services=data/source/services\",\":test=data/source/test\"]},\"sources\":{\"data/source/lib/ECVerify.sol\":{\"keccak256\":\"0xeced41e7578af77042e00fc68e482b754cd355da872bfdda95a0b74e3dbd90e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9838dc558bce37a7490ac84f834cb1cf33cba1e13438e1666be7011f03b0ac2\",\"dweb:/ipfs/QmUb9dn1FeZbJCNg5hN7wXapTcP5V52Q554bd97hhYr9qN\"]},\"data/source/lib/MessageType.sol\":{\"keccak256\":\"0xe4a3d54220ba19024c03fac9f8b3338245f2c4aa266627e6cdb5e97a2adcdee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b1d37be2f7d509e3c32f5e5cd5f58bcd67d11e907678e9343cccc9bc082476f\",\"dweb:/ipfs/QmTW6hUvkxXt5q7MbhtHPjWqdBd1tEC4bd1kFswDGhnvA6\"]},\"data/source/lib/TokenNetworkUtils.sol\":{\"keccak256\":\"0x9b7f52457a0d8e842eb6a64b9d30f044bbe1f4c6892d52c809924d837dc7ba75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://200eaf3a33fbb18518f21c88e3ece992a871738c725d4dd2c9e309f71adf7c6f\",\"dweb:/ipfs/QmX2WjHpEifYhj1ZMc8JJQMABvgCZ6XL4euq71cSXfmFpi\"]},\"data/source/raiden/Controllable.sol\":{\"keccak256\":\"0xccedede2950079f2e4dbe5f89f5a997bea0398828da90b6ef0f66bbd509d305c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b3ffa7945f7bd59dd46b622d69aa5970a5e858c690bf523d8151bf34b9d56c2\",\"dweb:/ipfs/QmcadWAn8FBfsxKrK9ScVCjHsjctBys2AgqGF8PWUij98y\"]},\"data/source/raiden/SecretRegistry.sol\":{\"keccak256\":\"0x828dbf9a344f66cb982df97f677d10942d1b163287b890860be40230b236642e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bde28a380d82203002375789cae1460df2128b7e21349f1c4436128ad581fed2\",\"dweb:/ipfs/QmZT8boB78rduGwZjPdwymuVuRQKhxh2N6D1uHbb5jtDZ8\"]},\"data/source/raiden/Token.sol\":{\"keccak256\":\"0x5a8ccb9fa426228d9e213164f22a94b0ac57f1aa15ab76ce88a96177edd7b0b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff1ddcfa729756503a156edda9aa65cbfd0522c449e0451ad3e5b5f72c2da256\",\"dweb:/ipfs/QmVQ4DeSBjo1W5obzasyT1re9jEQW2ydaMuj1GMa1cyKbV\"]},\"data/source/raiden/TokenNetwork.sol\":{\"keccak256\":\"0x88d6cb97eca333198c79ed2b6b86b9fac5edd629243c1261340f21125a4dc3de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b5cb209461763fd99a781a7f9b71275924a512f4ed81d285d54d372fe2bf0f\",\"dweb:/ipfs/QmPDVMJGH83DbHkHAdafhXZGcAMPZQP14wTLLam9996CDS\"]},\"data/source/raiden/TokenNetworkRegistry.sol\":{\"keccak256\":\"0x90be9abb744abe3aefe806766bbe23e3cb330eb6664c1ce31ef92e835d58d319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6111bbd6bf38ca7fa460d3868f98c11dd7ceb274d05beffceadc8e1fae314060\",\"dweb:/ipfs/QmW27Y6ySudin8TNA7QoNRoSMhJsQ6X9R5EYCJFmB2uzjc\"]},\"data/source/raiden/Utils.sol\":{\"keccak256\":\"0x3fb4df9cdadd3711bffff81a451868c7a1ee8a2f3ff1a20a4343def15cb38e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67e2deac2f8ae6d3fc41d84474d2d7f2a098a9e1da70c60ae4590a05495c20c1\",\"dweb:/ipfs/QmRgqjDcKhG7dW68FRKZyYKhYULXx8keftggJFTfUoDGex\"]},\"data/source/services/MonitoringService.sol\":{\"keccak256\":\"0x4b3df68f82c37086cae8125076eed1754aef95dfe878f191e34ce0e424fc0c80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://452b2cd20963c7e9c3497abc274904fa5476f63580152116af790cb1d13dd63a\",\"dweb:/ipfs/QmSD3dWjDuwcPYp3TPDSDz8D8iYT8nC8NVcoQPGN6q8RsF\"]},\"data/source/services/ServiceRegistry.sol\":{\"keccak256\":\"0xacb22c106731315088e7203ad46ac892a29abf5549d86427b812adb9a1899ae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba03b692dd747974d79d06d781b6f0709eaf8d1eccc76bae04ebffbab2354d4f\",\"dweb:/ipfs/QmTUHeruGGafJ3GKbYLgRLHdgcSAghAmpE6GJHcm98LiAt\"]},\"data/source/services/UserDeposit.sol\":{\"keccak256\":\"0x479f63f142d920176d27efb01e2924d763131c7d4e08d5b531305219d169e31d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c53c484572b7a2d2c5f2681a16d6fce366ef6e06008a165b6f35789fbbd2279\",\"dweb:/ipfs/QmXaqDWqZ91As7JReLnENWnzVpUBrykcsqCrUyoEVyich4\"]}},\"version\":1}"
         },
         "MonitoringServiceInternalsTest": {
             "abi": [
@@ -1633,9 +1633,9 @@
                     "type": "function"
                 }
             ],
-            "bin": "60806040523480156200001157600080fd5b5060405162001b8338038062001b83833981810160405260808110156200003757600080fd5b5080516020820151604083015160609093015191929091838383836001600160a01b038416620000ae576040805162461bcd60e51b815260206004820152601560248201527f546f6b656e2061742061646472657373207a65726f0000000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166200010a576040805162461bcd60e51b815260206004820152601f60248201527f5365727669636552656769737472792061742061646472657373207a65726f00604482015290519081900360640190fd5b6001600160a01b03821662000166576040805162461bcd60e51b815260206004820152601360248201527f5544432061742061646472657373207a65726f00000000000000000000000000604482015290519081900360640190fd5b6200017184620003d3565b620001b7576040805162461bcd60e51b8152602060048201526011602482015270746f6b656e20686173206e6f20636f646560781b604482015290519081900360640190fd5b620001c283620003d3565b62000214576040805162461bcd60e51b815260206004820152601b60248201527f53657276696365526567697374727920686173206e6f20636f64650000000000604482015290519081900360640190fd5b6200021f82620003d3565b62000263576040805162461bcd60e51b815260206004820152600f60248201526e55444320686173206e6f20636f646560881b604482015290519081900360640190fd5b6200026e81620003d3565b620002c0576040805162461bcd60e51b815260206004820181905260248201527f546f6b656e4e6574776f726b526567697374727920686173206e6f20636f6465604482015290519081900360640190fd5b600080546001600160a01b03199081166001600160a01b03878116919091178084556001805484168884161790556002805484168784161790556003805490931685831617909255604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b1580156200034457600080fd5b505afa15801562000359573d6000803e3d6000fd5b505050506040513d60208110156200037057600080fd5b505111620003c5576040805162461bcd60e51b815260206004820152601c60248201527f546f6b656e2077697468207a65726f20746f74616c20737570706c7900000000604482015290519081900360640190fd5b5050505050505050620003d9565b3b151590565b61179a80620003e96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637709bc78116100715780637709bc781461047d57806381c6dac2146104a3578063b4238f4a146104ab578063d3b6c080146104b3578063dcf13767146106a3578063fc0c546a146106c0576100b4565b80630e7dfb73146100b957806330d676441461010b57806360df33d814610278578063637d89d4146102d05780636766923e146102d85780636a83a9481461031c575b600080fd5b6100f7600480360360808110156100cf57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166106c8565b604080519115158252519081900360200190f35b61025c600480360360c081101561012157600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561015b57600080fd5b82018360208201111561016d57600080fd5b803590602001918460018302840111600160201b8311171561018e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a46945050505050565b604080516001600160a01b039092168252519081900360200190f35b6102be600480360360a081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135811691606081013582169160809091013516610a61565b60408051918252519081900360200190f35b61025c610ce9565b6102be600480360360a08110156102ee57600080fd5b508035906020810135906001600160a01b036040820135811691606081013582169160809091013516610cf8565b61047b600480360361010081101561033357600080fd5b6001600160a01b0382358116926020810135821692604082013583169260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b81111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460018302840111600160201b831117156103b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561040757600080fd5b82018360208201111561041957600080fd5b803590602001918460018302840111600160201b8311171561043a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e26945050505050565b005b6100f76004803603602081101561049357600080fd5b50356001600160a01b0316610e40565b61025c610e46565b61025c610e55565b61047b60048036036101408110156104ca57600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b81111561051057600080fd5b82018360208201111561052257600080fd5b803590602001918460018302840111600160201b8311171561054357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561059557600080fd5b8201836020820111156105a757600080fd5b803590602001918460018302840111600160201b831117156105c857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b0360208701351695919450925060608101915060400135600160201b81111561062f57600080fd5b82018360208201111561064157600080fd5b803590602001918460018302840111600160201b8311171561066257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e64945050505050565b6102be600480360360208110156106b957600080fd5b503561112a565b61025c61113f565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d604081101561078857600080fd5b5080516020909101519250905060028260048111156107a357fe5b14806107ba575060038260048111156107b857fe5b145b806107d0575060048260048111156107ce57fe5b145b610821576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b438110610875576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166108da576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561094457600080fd5b505af1158015610958573d6000803e3d6000fd5b505050506040513d602081101561096e57600080fd5b50516109b8576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6000610a5687878787878761114e565b979650505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b158015610ab257600080fd5b505afa158015610ac6573d6000803e3d6000fd5b505050506040513d6020811015610adc57600080fd5b5051610b28576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6040811015610bab57600080fd5b508051602090910151925090506002826004811115610bc657fe5b14610c0d576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4857600080fd5b505afa158015610c5c573d6000803e3d6000fd5b505050506040513d6020811015610c7257600080fd5b5051905080821015610ccb576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b808203610cdb81838a8a8a610cf8565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610d6e576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610de2576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610e1357fe5b06929092019a9950505050505050505050565b610e36888888888888888861129f565b5050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610e74828b8b868b338a8861129f565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610ed957600080fd5b505afa158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b50519050610f1482828e8e33610a61565b431015610f61576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ffe578181015183820152602001610fe6565b50505050905090810190601f16801561102b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561105e578181015183820152602001611046565b50505050905090810190601f16801561108b5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b1580156110b257600080fd5b505af11580156110c6573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b60009081526004602052604090206001015490565b6000546001600160a01b031681565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106111f55780518252601f1990920191602091820191016111d6565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190528251920191909120975061124296508795508994506116659350505050565b9150856001600160a01b0316826001600160a01b0316146112945760405162461bcd60e51b815260040180806020018281038252602f815260200180611736602f913960400191505060405180910390fd5b509695505050505050565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d602081101561130957600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b15801561135f57600080fd5b505afa158015611373573d6000803e3d6000fd5b505050506040513d602081101561138957600080fd5b50516001600160a01b0316146113dd576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561143d57600080fd5b505afa158015611451573d6000803e3d6000fd5b505050506040513d602081101561146757600080fd5b505160408051633af973b160e01b815290519192506000916114ea916001600160a01b03871691633af973b191600480820192602092909190829003018186803b1580156114b457600080fd5b505afa1580156114c8573d6000803e3d6000fd5b505050506040513d60208110156114de57600080fd5b50518d8c898d8a61114e565b9050896001600160a01b0316816001600160a01b031614611545576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506000600460008381526020019081526020016000209050898160010154106115e1576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b6000815160411461167557600080fd5b60208201516040830151606084015160001a601b81101561169457601b015b8060ff16601b14806116a957508060ff16601c145b6116b257600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561170c573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661172c57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a2646970667358221220e4646b436f7f6f82f746acf4ddd3c0a594c7d912147808d57a5c52febb3dd68f64736f6c63430007060033",
-            "bin-runtime": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80637709bc78116100715780637709bc781461047d57806381c6dac2146104a3578063b4238f4a146104ab578063d3b6c080146104b3578063dcf13767146106a3578063fc0c546a146106c0576100b4565b80630e7dfb73146100b957806330d676441461010b57806360df33d814610278578063637d89d4146102d05780636766923e146102d85780636a83a9481461031c575b600080fd5b6100f7600480360360808110156100cf57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166106c8565b604080519115158252519081900360200190f35b61025c600480360360c081101561012157600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561015b57600080fd5b82018360208201111561016d57600080fd5b803590602001918460018302840111600160201b8311171561018e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a46945050505050565b604080516001600160a01b039092168252519081900360200190f35b6102be600480360360a081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135811691606081013582169160809091013516610a61565b60408051918252519081900360200190f35b61025c610ce9565b6102be600480360360a08110156102ee57600080fd5b508035906020810135906001600160a01b036040820135811691606081013582169160809091013516610cf8565b61047b600480360361010081101561033357600080fd5b6001600160a01b0382358116926020810135821692604082013583169260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b81111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460018302840111600160201b831117156103b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561040757600080fd5b82018360208201111561041957600080fd5b803590602001918460018302840111600160201b8311171561043a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e26945050505050565b005b6100f76004803603602081101561049357600080fd5b50356001600160a01b0316610e40565b61025c610e46565b61025c610e55565b61047b60048036036101408110156104ca57600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b81111561051057600080fd5b82018360208201111561052257600080fd5b803590602001918460018302840111600160201b8311171561054357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561059557600080fd5b8201836020820111156105a757600080fd5b803590602001918460018302840111600160201b831117156105c857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b0360208701351695919450925060608101915060400135600160201b81111561062f57600080fd5b82018360208201111561064157600080fd5b803590602001918460018302840111600160201b8311171561066257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e64945050505050565b6102be600480360360208110156106b957600080fd5b503561112a565b61025c61113f565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d604081101561078857600080fd5b5080516020909101519250905060028260048111156107a357fe5b14806107ba575060038260048111156107b857fe5b145b806107d0575060048260048111156107ce57fe5b145b610821576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b438110610875576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166108da576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561094457600080fd5b505af1158015610958573d6000803e3d6000fd5b505050506040513d602081101561096e57600080fd5b50516109b8576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6000610a5687878787878761114e565b979650505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b158015610ab257600080fd5b505afa158015610ac6573d6000803e3d6000fd5b505050506040513d6020811015610adc57600080fd5b5051610b28576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6040811015610bab57600080fd5b508051602090910151925090506002826004811115610bc657fe5b14610c0d576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4857600080fd5b505afa158015610c5c573d6000803e3d6000fd5b505050506040513d6020811015610c7257600080fd5b5051905080821015610ccb576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b808203610cdb81838a8a8a610cf8565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610d6e576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610de2576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610e1357fe5b06929092019a9950505050505050505050565b610e36888888888888888861129f565b5050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610e74828b8b868b338a8861129f565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610ed957600080fd5b505afa158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b50519050610f1482828e8e33610a61565b431015610f61576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ffe578181015183820152602001610fe6565b50505050905090810190601f16801561102b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561105e578181015183820152602001611046565b50505050905090810190601f16801561108b5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b1580156110b257600080fd5b505af11580156110c6573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b60009081526004602052604090206001015490565b6000546001600160a01b031681565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106111f55780518252601f1990920191602091820191016111d6565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190528251920191909120975061124296508795508994506116659350505050565b9150856001600160a01b0316826001600160a01b0316146112945760405162461bcd60e51b815260040180806020018281038252602f815260200180611736602f913960400191505060405180910390fd5b509695505050505050565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d602081101561130957600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b15801561135f57600080fd5b505afa158015611373573d6000803e3d6000fd5b505050506040513d602081101561138957600080fd5b50516001600160a01b0316146113dd576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561143d57600080fd5b505afa158015611451573d6000803e3d6000fd5b505050506040513d602081101561146757600080fd5b505160408051633af973b160e01b815290519192506000916114ea916001600160a01b03871691633af973b191600480820192602092909190829003018186803b1580156114b457600080fd5b505afa1580156114c8573d6000803e3d6000fd5b505050506040513d60208110156114de57600080fd5b50518d8c898d8a61114e565b9050896001600160a01b0316816001600160a01b031614611545576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506000600460008381526020019081526020016000209050898160010154106115e1576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b6000815160411461167557600080fd5b60208201516040830151606084015160001a601b81101561169457601b015b8060ff16601b14806116a957508060ff16601c145b6116b257600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561170c573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661172c57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a2646970667358221220e4646b436f7f6f82f746acf4ddd3c0a594c7d912147808d57a5c52febb3dd68f64736f6c63430007060033",
-            "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_service_registry_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_udc_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token_network_registry_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"raiden_node_address\",\"type\":\"address\"}],\"name\":\"NewBalanceProofReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"reward_identifier\",\"type\":\"bytes32\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"contractExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"closed_at_block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"settle_timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"participant2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TokenNetwork\",\"name\":\"token_network\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitorChannel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balance_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"additional_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reward_proof_signature\",\"type\":\"bytes\"}],\"name\":\"monitor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chain_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverAddressFromRewardProofPublic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signature_address\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"reward_identifier\",\"type\":\"bytes32\"}],\"name\":\"rewardNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"service_registry\",\"outputs\":[{\"internalType\":\"contract ServiceRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token_network_registry\",\"outputs\":[{\"internalType\":\"contract TokenNetworkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"reward_proof_signature\",\"type\":\"bytes\"}],\"name\":\"updateRewardPublic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user_deposit\",\"outputs\":[{\"internalType\":\"contract UserDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"params\":{\"closing_participant\":\"Address of the participant of the channel that called close\",\"non_closing_participant\":\"The other participant of the channel\",\"token_network_address\":\"Address of the Token Network in which the channel exists\"}},\"contractExists(address)\":{\"params\":{\"contract_address\":\"The address to check whether a contract is deployed or not\"},\"returns\":{\"_0\":\"True if a contract exists, false otherwise\"}},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"params\":{\"nonce\":\"Strictly monotonic value used to order BPs omitting PB specific params, since these will not be provided in the future\",\"reward_amount\":\"Amount of tokens to be rewarded\",\"reward_proof_signature\":\"The signature of the signed reward proof\",\"token_network_address\":\"Address of the Token Network in which the channel being monitored exists.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"notice\":\"Called after a monitored channel is settled in order for MS to claim the reward Can be called once per settled channel by everyone on behalf of MS\"},\"contractExists(address)\":{\"notice\":\"Check if a contract exists\"},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"notice\":\"Called by a registered MS, when providing a new balance proof to a monitored channel. Can be called multiple times by different registered MSs as long as the BP provided is newer than the current newest registered BP.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"data/source/test/MonitoringServiceInternalsTest.sol\":\"MonitoringServiceInternalsTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":.=.\",\":lib=data/source/lib\",\":raiden=data/source/raiden\",\":services=data/source/services\",\":test=data/source/test\"]},\"sources\":{\"data/source/lib/ECVerify.sol\":{\"keccak256\":\"0xeced41e7578af77042e00fc68e482b754cd355da872bfdda95a0b74e3dbd90e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9838dc558bce37a7490ac84f834cb1cf33cba1e13438e1666be7011f03b0ac2\",\"dweb:/ipfs/QmUb9dn1FeZbJCNg5hN7wXapTcP5V52Q554bd97hhYr9qN\"]},\"data/source/lib/MessageType.sol\":{\"keccak256\":\"0xe4a3d54220ba19024c03fac9f8b3338245f2c4aa266627e6cdb5e97a2adcdee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b1d37be2f7d509e3c32f5e5cd5f58bcd67d11e907678e9343cccc9bc082476f\",\"dweb:/ipfs/QmTW6hUvkxXt5q7MbhtHPjWqdBd1tEC4bd1kFswDGhnvA6\"]},\"data/source/lib/TokenNetworkUtils.sol\":{\"keccak256\":\"0x9b7f52457a0d8e842eb6a64b9d30f044bbe1f4c6892d52c809924d837dc7ba75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://200eaf3a33fbb18518f21c88e3ece992a871738c725d4dd2c9e309f71adf7c6f\",\"dweb:/ipfs/QmX2WjHpEifYhj1ZMc8JJQMABvgCZ6XL4euq71cSXfmFpi\"]},\"data/source/raiden/Controllable.sol\":{\"keccak256\":\"0xccedede2950079f2e4dbe5f89f5a997bea0398828da90b6ef0f66bbd509d305c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b3ffa7945f7bd59dd46b622d69aa5970a5e858c690bf523d8151bf34b9d56c2\",\"dweb:/ipfs/QmcadWAn8FBfsxKrK9ScVCjHsjctBys2AgqGF8PWUij98y\"]},\"data/source/raiden/SecretRegistry.sol\":{\"keccak256\":\"0x828dbf9a344f66cb982df97f677d10942d1b163287b890860be40230b236642e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bde28a380d82203002375789cae1460df2128b7e21349f1c4436128ad581fed2\",\"dweb:/ipfs/QmZT8boB78rduGwZjPdwymuVuRQKhxh2N6D1uHbb5jtDZ8\"]},\"data/source/raiden/Token.sol\":{\"keccak256\":\"0x5a8ccb9fa426228d9e213164f22a94b0ac57f1aa15ab76ce88a96177edd7b0b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff1ddcfa729756503a156edda9aa65cbfd0522c449e0451ad3e5b5f72c2da256\",\"dweb:/ipfs/QmVQ4DeSBjo1W5obzasyT1re9jEQW2ydaMuj1GMa1cyKbV\"]},\"data/source/raiden/TokenNetwork.sol\":{\"keccak256\":\"0x88d6cb97eca333198c79ed2b6b86b9fac5edd629243c1261340f21125a4dc3de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b5cb209461763fd99a781a7f9b71275924a512f4ed81d285d54d372fe2bf0f\",\"dweb:/ipfs/QmPDVMJGH83DbHkHAdafhXZGcAMPZQP14wTLLam9996CDS\"]},\"data/source/raiden/TokenNetworkRegistry.sol\":{\"keccak256\":\"0xb20e56a9719fef0da8e3abecbfc4e5a00034979f038ab4b30ca425c6886bae61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5251c6d78680933fa5764557fb021a5ed20c79db93458e446db2697f85fa5f5\",\"dweb:/ipfs/Qmdq24hwQUscWY1GeNLNXTXyWFKgeyz7Cex7HKfXeLVJES\"]},\"data/source/raiden/Utils.sol\":{\"keccak256\":\"0x3fb4df9cdadd3711bffff81a451868c7a1ee8a2f3ff1a20a4343def15cb38e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67e2deac2f8ae6d3fc41d84474d2d7f2a098a9e1da70c60ae4590a05495c20c1\",\"dweb:/ipfs/QmRgqjDcKhG7dW68FRKZyYKhYULXx8keftggJFTfUoDGex\"]},\"data/source/services/MonitoringService.sol\":{\"keccak256\":\"0x4b3df68f82c37086cae8125076eed1754aef95dfe878f191e34ce0e424fc0c80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://452b2cd20963c7e9c3497abc274904fa5476f63580152116af790cb1d13dd63a\",\"dweb:/ipfs/QmSD3dWjDuwcPYp3TPDSDz8D8iYT8nC8NVcoQPGN6q8RsF\"]},\"data/source/services/ServiceRegistry.sol\":{\"keccak256\":\"0xacb22c106731315088e7203ad46ac892a29abf5549d86427b812adb9a1899ae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba03b692dd747974d79d06d781b6f0709eaf8d1eccc76bae04ebffbab2354d4f\",\"dweb:/ipfs/QmTUHeruGGafJ3GKbYLgRLHdgcSAghAmpE6GJHcm98LiAt\"]},\"data/source/services/UserDeposit.sol\":{\"keccak256\":\"0x479f63f142d920176d27efb01e2924d763131c7d4e08d5b531305219d169e31d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c53c484572b7a2d2c5f2681a16d6fce366ef6e06008a165b6f35789fbbd2279\",\"dweb:/ipfs/QmXaqDWqZ91As7JReLnENWnzVpUBrykcsqCrUyoEVyich4\"]},\"data/source/test/MonitoringServiceInternalsTest.sol\":{\"keccak256\":\"0xbd5928ccfafe85b446fe6b2707d554648c23d70a099cb202f74179634d21c1d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://391aefe737f4eb13a8b665467042e85c37552521292055c0f7a6bf777612c6e3\",\"dweb:/ipfs/QmdFbmVPgDuon3kKuvqoSoPhzeeQAJcPTDtuiZciou9LWw\"]}},\"version\":1}"
+            "bin": "60806040523480156200001157600080fd5b5060405162001b8338038062001b83833981810160405260808110156200003757600080fd5b5080516020820151604083015160609093015191929091838383836001600160a01b038416620000ae576040805162461bcd60e51b815260206004820152601560248201527f546f6b656e2061742061646472657373207a65726f0000000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166200010a576040805162461bcd60e51b815260206004820152601f60248201527f5365727669636552656769737472792061742061646472657373207a65726f00604482015290519081900360640190fd5b6001600160a01b03821662000166576040805162461bcd60e51b815260206004820152601360248201527f5544432061742061646472657373207a65726f00000000000000000000000000604482015290519081900360640190fd5b6200017184620003d3565b620001b7576040805162461bcd60e51b8152602060048201526011602482015270746f6b656e20686173206e6f20636f646560781b604482015290519081900360640190fd5b620001c283620003d3565b62000214576040805162461bcd60e51b815260206004820152601b60248201527f53657276696365526567697374727920686173206e6f20636f64650000000000604482015290519081900360640190fd5b6200021f82620003d3565b62000263576040805162461bcd60e51b815260206004820152600f60248201526e55444320686173206e6f20636f646560881b604482015290519081900360640190fd5b6200026e81620003d3565b620002c0576040805162461bcd60e51b815260206004820181905260248201527f546f6b656e4e6574776f726b526567697374727920686173206e6f20636f6465604482015290519081900360640190fd5b600080546001600160a01b03199081166001600160a01b03878116919091178084556001805484168884161790556002805484168784161790556003805490931685831617909255604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b1580156200034457600080fd5b505afa15801562000359573d6000803e3d6000fd5b505050506040513d60208110156200037057600080fd5b505111620003c5576040805162461bcd60e51b815260206004820152601c60248201527f546f6b656e2077697468207a65726f20746f74616c20737570706c7900000000604482015290519081900360640190fd5b5050505050505050620003d9565b3b151590565b61179a80620003e96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637709bc78116100715780637709bc781461047d57806381c6dac2146104a3578063b4238f4a146104ab578063d3b6c080146104b3578063dcf13767146106a3578063fc0c546a146106c0576100b4565b80630e7dfb73146100b957806330d676441461010b57806360df33d814610278578063637d89d4146102d05780636766923e146102d85780636a83a9481461031c575b600080fd5b6100f7600480360360808110156100cf57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166106c8565b604080519115158252519081900360200190f35b61025c600480360360c081101561012157600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561015b57600080fd5b82018360208201111561016d57600080fd5b803590602001918460018302840111600160201b8311171561018e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a46945050505050565b604080516001600160a01b039092168252519081900360200190f35b6102be600480360360a081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135811691606081013582169160809091013516610a61565b60408051918252519081900360200190f35b61025c610ce9565b6102be600480360360a08110156102ee57600080fd5b508035906020810135906001600160a01b036040820135811691606081013582169160809091013516610cf8565b61047b600480360361010081101561033357600080fd5b6001600160a01b0382358116926020810135821692604082013583169260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b81111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460018302840111600160201b831117156103b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561040757600080fd5b82018360208201111561041957600080fd5b803590602001918460018302840111600160201b8311171561043a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e26945050505050565b005b6100f76004803603602081101561049357600080fd5b50356001600160a01b0316610e40565b61025c610e46565b61025c610e55565b61047b60048036036101408110156104ca57600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b81111561051057600080fd5b82018360208201111561052257600080fd5b803590602001918460018302840111600160201b8311171561054357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561059557600080fd5b8201836020820111156105a757600080fd5b803590602001918460018302840111600160201b831117156105c857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b0360208701351695919450925060608101915060400135600160201b81111561062f57600080fd5b82018360208201111561064157600080fd5b803590602001918460018302840111600160201b8311171561066257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e64945050505050565b6102be600480360360208110156106b957600080fd5b503561112a565b61025c61113f565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d604081101561078857600080fd5b5080516020909101519250905060028260048111156107a357fe5b14806107ba575060038260048111156107b857fe5b145b806107d0575060048260048111156107ce57fe5b145b610821576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b438110610875576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166108da576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561094457600080fd5b505af1158015610958573d6000803e3d6000fd5b505050506040513d602081101561096e57600080fd5b50516109b8576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6000610a5687878787878761114e565b979650505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b158015610ab257600080fd5b505afa158015610ac6573d6000803e3d6000fd5b505050506040513d6020811015610adc57600080fd5b5051610b28576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6040811015610bab57600080fd5b508051602090910151925090506002826004811115610bc657fe5b14610c0d576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4857600080fd5b505afa158015610c5c573d6000803e3d6000fd5b505050506040513d6020811015610c7257600080fd5b5051905080821015610ccb576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b808203610cdb81838a8a8a610cf8565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610d6e576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610de2576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610e1357fe5b06929092019a9950505050505050505050565b610e36888888888888888861129f565b5050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610e74828b8b868b338a8861129f565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610ed957600080fd5b505afa158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b50519050610f1482828e8e33610a61565b431015610f61576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ffe578181015183820152602001610fe6565b50505050905090810190601f16801561102b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561105e578181015183820152602001611046565b50505050905090810190601f16801561108b5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b1580156110b257600080fd5b505af11580156110c6573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b60009081526004602052604090206001015490565b6000546001600160a01b031681565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106111f55780518252601f1990920191602091820191016111d6565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190528251920191909120975061124296508795508994506116659350505050565b9150856001600160a01b0316826001600160a01b0316146112945760405162461bcd60e51b815260040180806020018281038252602f815260200180611736602f913960400191505060405180910390fd5b509695505050505050565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d602081101561130957600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b15801561135f57600080fd5b505afa158015611373573d6000803e3d6000fd5b505050506040513d602081101561138957600080fd5b50516001600160a01b0316146113dd576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561143d57600080fd5b505afa158015611451573d6000803e3d6000fd5b505050506040513d602081101561146757600080fd5b505160408051633af973b160e01b815290519192506000916114ea916001600160a01b03871691633af973b191600480820192602092909190829003018186803b1580156114b457600080fd5b505afa1580156114c8573d6000803e3d6000fd5b505050506040513d60208110156114de57600080fd5b50518d8c898d8a61114e565b9050896001600160a01b0316816001600160a01b031614611545576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506000600460008381526020019081526020016000209050898160010154106115e1576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b6000815160411461167557600080fd5b60208201516040830151606084015160001a601b81101561169457601b015b8060ff16601b14806116a957508060ff16601c145b6116b257600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561170c573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661172c57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a264697066735822122067115cc3ca36aa97114c1ef2809164ef891c84a5d69d8ce5a81266021ae753f264736f6c63430007060033",
+            "bin-runtime": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80637709bc78116100715780637709bc781461047d57806381c6dac2146104a3578063b4238f4a146104ab578063d3b6c080146104b3578063dcf13767146106a3578063fc0c546a146106c0576100b4565b80630e7dfb73146100b957806330d676441461010b57806360df33d814610278578063637d89d4146102d05780636766923e146102d85780636a83a9481461031c575b600080fd5b6100f7600480360360808110156100cf57600080fd5b508035906001600160a01b0360208201358116916040810135821691606090910135166106c8565b604080519115158252519081900360200190f35b61025c600480360360c081101561012157600080fd5b8135916001600160a01b03602082013581169260408301359091169190810190608081016060820135600160201b81111561015b57600080fd5b82018360208201111561016d57600080fd5b803590602001918460018302840111600160201b8311171561018e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a46945050505050565b604080516001600160a01b039092168252519081900360200190f35b6102be600480360360a081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135811691606081013582169160809091013516610a61565b60408051918252519081900360200190f35b61025c610ce9565b6102be600480360360a08110156102ee57600080fd5b508035906020810135906001600160a01b036040820135811691606081013582169160809091013516610cf8565b61047b600480360361010081101561033357600080fd5b6001600160a01b0382358116926020810135821692604082013583169260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b81111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460018302840111600160201b831117156103b557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561040757600080fd5b82018360208201111561041957600080fd5b803590602001918460018302840111600160201b8311171561043a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e26945050505050565b005b6100f76004803603602081101561049357600080fd5b50356001600160a01b0316610e40565b61025c610e46565b61025c610e55565b61047b60048036036101408110156104ca57600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a0820135600160201b81111561051057600080fd5b82018360208201111561052257600080fd5b803590602001918460018302840111600160201b8311171561054357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561059557600080fd5b8201836020820111156105a757600080fd5b803590602001918460018302840111600160201b831117156105c857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435956001600160a01b0360208701351695919450925060608101915060400135600160201b81111561062f57600080fd5b82018360208201111561064157600080fd5b803590602001918460018302840111600160201b8311171561066257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e64945050505050565b6102be600480360360208110156106b957600080fd5b503561112a565b61025c61113f565b6040805160208082018790526bffffffffffffffffffffffff19606087901b168284015282516034818403018152605483018085528151919092012063838d6e0560e01b909152605882018790526001600160a01b038581166078840152848116609884015283516000948894869384939087169263838d6e059260b88082019391829003018186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d604081101561078857600080fd5b5080516020909101519250905060028260048111156107a357fe5b14806107ba575060038260048111156107b857fe5b145b806107d0575060048260048111156107ce57fe5b145b610821576040805162461bcd60e51b815260206004820152601760248201527f746f6f206561726c79206368616e6e656c207374617465000000000000000000604482015290519081900360640190fd5b438110610875576040805162461bcd60e51b815260206004820152601760248201527f6368616e6e656c206e6f7420736574746c656420796574000000000000000000604482015290519081900360640190fd5b600083815260046020526040902060028101546001600160a01b03166108da576040805162461bcd60e51b81526020600482015260156024820152747265776172645f73656e646572206973207a65726f60581b604482015290519081900360640190fd5b600280549082015460038301548354604080516317d5759960e31b81526001600160a01b0394851660048201529284166024840152604483019190915251919092169163beabacc89160648083019260209291908290030181600087803b15801561094457600080fd5b505af1158015610958573d6000803e3d6000fd5b505050506040513d602081101561096e57600080fd5b50516109b8576040805162461bcd60e51b81526020600482015260146024820152732aa221903234b2103737ba103a3930b739b332b960611b604482015290519081900360640190fd5b60038101548154604080519182525186926001600160a01b0316917fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201919081900360200190a350505060009081526004602052604081208181556001808201929092556002810180546001600160a01b03199081169091556003909101805490911690559695505050505050565b6000610a5687878787878761114e565b979650505050505050565b6001546040805163ebc00c0560e01b81526001600160a01b0384811660048301529151600093929092169163ebc00c0591602480820192602092909190829003018186803b158015610ab257600080fd5b505afa158015610ac6573d6000803e3d6000fd5b505050506040513d6020811015610adc57600080fd5b5051610b28576040805162461bcd60e51b81526020600482015260166024820152751cd95c9d9a58d9481b9bdd081c9959da5cdd195c995960521b604482015290519081900360640190fd5b6040805163838d6e0560e01b8152600481018790526001600160a01b038681166024830152858116604483015282516000938493928b169263838d6e059260648083019392829003018186803b158015610b8157600080fd5b505afa158015610b95573d6000803e3d6000fd5b505050506040513d6040811015610bab57600080fd5b508051602090910151925090506002826004811115610bc657fe5b14610c0d576040805162461bcd60e51b815260206004820152601260248201527118da185b9b995b081b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b6000886001600160a01b031663b8378f756040518163ffffffff1660e01b815260040160206040518083038186803b158015610c4857600080fd5b505afa158015610c5c573d6000803e3d6000fd5b505050506040513d6020811015610c7257600080fd5b5051905080821015610ccb576040805162461bcd60e51b815260206004820152601b60248201527f746f6f206c6f7720736574746c6520626c6f636b206e756d6265720000000000604482015290519081900360640190fd5b808203610cdb81838a8a8a610cf8565b9a9950505050505050505050565b6002546001600160a01b031681565b60007f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8510610d6e576040805162461bcd60e51b815260206004820152601e60248201527f6d616c6963696f75736c792062696720736574746c652074696d656f75740000604482015290519081900360640190fd5b7f028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f8610610de2576040805162461bcd60e51b815260206004820152601f60248201527f6d616c6963696f75736c792062696720636c6f7365645f61745f626c6f636b00604482015290519081900360640190fd5b601e6050606487830281900489019060328902046000816001600160a01b038a81168a8216019089160181610e1357fe5b06929092019a9950505050505050505050565b610e36888888888888888861129f565b5050505050505050565b3b151590565b6001546001600160a01b031681565b6003546001600160a01b031681565b610e74828b8b868b338a8861129f565b60008290506000816001600160a01b031663938bcd678d8d6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015610ed957600080fd5b505afa158015610eed573d6000803e3d6000fd5b505050506040513d6020811015610f0357600080fd5b50519050610f1482828e8e33610a61565b431015610f61576040805162461bcd60e51b81526020600482015260166024820152753737ba1030b63637bbb2b2103a379036b7b734ba37b960511b604482015290519081900360640190fd5b816001600160a01b031663fadc554b828e8e8e8e8e8e8e6040518963ffffffff1660e01b815260040180898152602001886001600160a01b03168152602001876001600160a01b031681526020018681526020018581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ffe578181015183820152602001610fe6565b50505050905090810190601f16801561102b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561105e578181015183820152602001611046565b50505050905090810190601f16801561108b5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b1580156110b257600080fd5b505af11580156110c6573d6000803e3d6000fd5b5050604080516001600160a01b038881168252602082018690528183018a90529151918f1693503392508c917f486d5933a2980e097e7c32c7fe217158facf1a3973bac8235ac6c8b0e77d3dff9181900360600190a4505050505050505050505050565b60009081526004602052604090206001015490565b6000546001600160a01b031681565b600080308860068989898960405160200180807f19457468657265756d205369676e6564204d6573736167653a0a323231000000815250601d01886001600160a01b031660601b8152601401878152602001868152602001856001600160a01b031660601b8152601401846001600160a01b031660601b815260140183805190602001908083835b602083106111f55780518252601f1990920191602091820191016111d6565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190528251920191909120975061124296508795508994506116659350505050565b9150856001600160a01b0316826001600160a01b0316146112945760405162461bcd60e51b815260040180806020018281038252602f815260200180611736602f913960400191505060405180910390fd5b509695505050505050565b60008890506000816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d602081101561130957600080fd5b505160035460408051630fabd9e760e01b81526001600160a01b0380851660048301529151939450858216939190921691630fabd9e7916024808301926020929190829003018186803b15801561135f57600080fd5b505afa158015611373573d6000803e3d6000fd5b505050506040513d602081101561138957600080fd5b50516001600160a01b0316146113dd576040805162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e20546f6b656e4e6574776f726b60601b604482015290519081900360640190fd5b6000826001600160a01b031663938bcd678b8b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561143d57600080fd5b505afa158015611451573d6000803e3d6000fd5b505050506040513d602081101561146757600080fd5b505160408051633af973b160e01b815290519192506000916114ea916001600160a01b03871691633af973b191600480820192602092909190829003018186803b1580156114b457600080fd5b505afa1580156114c8573d6000803e3d6000fd5b505050506040513d60208110156114de57600080fd5b50518d8c898d8a61114e565b9050896001600160a01b0316816001600160a01b031614611545576040805162461bcd60e51b815260206004820152601060248201526f2130b2103932bbb0b93210383937b7b360811b604482015290519081900360640190fd5b6000828d60405160200180838152602001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506000600460008381526020019081526020016000209050898160010154106115e1576040805162461bcd60e51b815260206004820152600b60248201526a7374616c65206e6f6e636560a81b604482015290519081900360640190fd5b50604080516080810182529a8b526020808c019a8b526001600160a01b039c8d168c8301908152998d1660608d0190815260009384526004909152912099518a55975160018a0155505093516002870180549189166001600160a01b0319928316179055945160039096018054969097169590941694909417909455505050505050565b6000815160411461167557600080fd5b60208201516040830151606084015160001a601b81101561169457601b015b8060ff16601b14806116a957508060ff16601c145b6116b257600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561170c573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661172c57600080fd5b5050509291505056fe5265776172642070726f6f6620776974682077726f6e67206e6f6e5f636c6f73696e675f7061727469636970616e74a264697066735822122067115cc3ca36aa97114c1ef2809164ef891c84a5d69d8ce5a81266021ae753f264736f6c63430007060033",
+            "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_service_registry_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_udc_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token_network_registry_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"raiden_node_address\",\"type\":\"address\"}],\"name\":\"NewBalanceProofReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ms_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"reward_identifier\",\"type\":\"bytes32\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"contractExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"closed_at_block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"settle_timeout\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"participant1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"participant2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract TokenNetwork\",\"name\":\"token_network\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channel_identifier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"}],\"name\":\"firstBlockAllowedToMonitorChannel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balance_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"additional_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reward_proof_signature\",\"type\":\"bytes\"}],\"name\":\"monitor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chain_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverAddressFromRewardProofPublic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signature_address\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"reward_identifier\",\"type\":\"bytes32\"}],\"name\":\"rewardNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"service_registry\",\"outputs\":[{\"internalType\":\"contract ServiceRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token_network_registry\",\"outputs\":[{\"internalType\":\"contract TokenNetworkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"closing_participant\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"non_closing_participant\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"monitoring_service_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"non_closing_signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"reward_proof_signature\",\"type\":\"bytes\"}],\"name\":\"updateRewardPublic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"user_deposit\",\"outputs\":[{\"internalType\":\"contract UserDeposit\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"params\":{\"closing_participant\":\"Address of the participant of the channel that called close\",\"non_closing_participant\":\"The other participant of the channel\",\"token_network_address\":\"Address of the Token Network in which the channel exists\"}},\"contractExists(address)\":{\"params\":{\"contract_address\":\"The address to check whether a contract is deployed or not\"},\"returns\":{\"_0\":\"True if a contract exists, false otherwise\"}},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"params\":{\"nonce\":\"Strictly monotonic value used to order BPs omitting PB specific params, since these will not be provided in the future\",\"reward_amount\":\"Amount of tokens to be rewarded\",\"reward_proof_signature\":\"The signature of the signed reward proof\",\"token_network_address\":\"Address of the Token Network in which the channel being monitored exists.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimReward(uint256,address,address,address)\":{\"notice\":\"Called after a monitored channel is settled in order for MS to claim the reward Can be called once per settled channel by everyone on behalf of MS\"},\"contractExists(address)\":{\"notice\":\"Check if a contract exists\"},\"monitor(address,address,bytes32,uint256,bytes32,bytes,bytes,uint256,address,bytes)\":{\"notice\":\"Called by a registered MS, when providing a new balance proof to a monitored channel. Can be called multiple times by different registered MSs as long as the BP provided is newer than the current newest registered BP.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"data/source/test/MonitoringServiceInternalsTest.sol\":\"MonitoringServiceInternalsTest\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":.=.\",\":lib=data/source/lib\",\":raiden=data/source/raiden\",\":services=data/source/services\",\":test=data/source/test\"]},\"sources\":{\"data/source/lib/ECVerify.sol\":{\"keccak256\":\"0xeced41e7578af77042e00fc68e482b754cd355da872bfdda95a0b74e3dbd90e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9838dc558bce37a7490ac84f834cb1cf33cba1e13438e1666be7011f03b0ac2\",\"dweb:/ipfs/QmUb9dn1FeZbJCNg5hN7wXapTcP5V52Q554bd97hhYr9qN\"]},\"data/source/lib/MessageType.sol\":{\"keccak256\":\"0xe4a3d54220ba19024c03fac9f8b3338245f2c4aa266627e6cdb5e97a2adcdee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b1d37be2f7d509e3c32f5e5cd5f58bcd67d11e907678e9343cccc9bc082476f\",\"dweb:/ipfs/QmTW6hUvkxXt5q7MbhtHPjWqdBd1tEC4bd1kFswDGhnvA6\"]},\"data/source/lib/TokenNetworkUtils.sol\":{\"keccak256\":\"0x9b7f52457a0d8e842eb6a64b9d30f044bbe1f4c6892d52c809924d837dc7ba75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://200eaf3a33fbb18518f21c88e3ece992a871738c725d4dd2c9e309f71adf7c6f\",\"dweb:/ipfs/QmX2WjHpEifYhj1ZMc8JJQMABvgCZ6XL4euq71cSXfmFpi\"]},\"data/source/raiden/Controllable.sol\":{\"keccak256\":\"0xccedede2950079f2e4dbe5f89f5a997bea0398828da90b6ef0f66bbd509d305c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b3ffa7945f7bd59dd46b622d69aa5970a5e858c690bf523d8151bf34b9d56c2\",\"dweb:/ipfs/QmcadWAn8FBfsxKrK9ScVCjHsjctBys2AgqGF8PWUij98y\"]},\"data/source/raiden/SecretRegistry.sol\":{\"keccak256\":\"0x828dbf9a344f66cb982df97f677d10942d1b163287b890860be40230b236642e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bde28a380d82203002375789cae1460df2128b7e21349f1c4436128ad581fed2\",\"dweb:/ipfs/QmZT8boB78rduGwZjPdwymuVuRQKhxh2N6D1uHbb5jtDZ8\"]},\"data/source/raiden/Token.sol\":{\"keccak256\":\"0x5a8ccb9fa426228d9e213164f22a94b0ac57f1aa15ab76ce88a96177edd7b0b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff1ddcfa729756503a156edda9aa65cbfd0522c449e0451ad3e5b5f72c2da256\",\"dweb:/ipfs/QmVQ4DeSBjo1W5obzasyT1re9jEQW2ydaMuj1GMa1cyKbV\"]},\"data/source/raiden/TokenNetwork.sol\":{\"keccak256\":\"0x88d6cb97eca333198c79ed2b6b86b9fac5edd629243c1261340f21125a4dc3de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b5cb209461763fd99a781a7f9b71275924a512f4ed81d285d54d372fe2bf0f\",\"dweb:/ipfs/QmPDVMJGH83DbHkHAdafhXZGcAMPZQP14wTLLam9996CDS\"]},\"data/source/raiden/TokenNetworkRegistry.sol\":{\"keccak256\":\"0x90be9abb744abe3aefe806766bbe23e3cb330eb6664c1ce31ef92e835d58d319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6111bbd6bf38ca7fa460d3868f98c11dd7ceb274d05beffceadc8e1fae314060\",\"dweb:/ipfs/QmW27Y6ySudin8TNA7QoNRoSMhJsQ6X9R5EYCJFmB2uzjc\"]},\"data/source/raiden/Utils.sol\":{\"keccak256\":\"0x3fb4df9cdadd3711bffff81a451868c7a1ee8a2f3ff1a20a4343def15cb38e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67e2deac2f8ae6d3fc41d84474d2d7f2a098a9e1da70c60ae4590a05495c20c1\",\"dweb:/ipfs/QmRgqjDcKhG7dW68FRKZyYKhYULXx8keftggJFTfUoDGex\"]},\"data/source/services/MonitoringService.sol\":{\"keccak256\":\"0x4b3df68f82c37086cae8125076eed1754aef95dfe878f191e34ce0e424fc0c80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://452b2cd20963c7e9c3497abc274904fa5476f63580152116af790cb1d13dd63a\",\"dweb:/ipfs/QmSD3dWjDuwcPYp3TPDSDz8D8iYT8nC8NVcoQPGN6q8RsF\"]},\"data/source/services/ServiceRegistry.sol\":{\"keccak256\":\"0xacb22c106731315088e7203ad46ac892a29abf5549d86427b812adb9a1899ae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba03b692dd747974d79d06d781b6f0709eaf8d1eccc76bae04ebffbab2354d4f\",\"dweb:/ipfs/QmTUHeruGGafJ3GKbYLgRLHdgcSAghAmpE6GJHcm98LiAt\"]},\"data/source/services/UserDeposit.sol\":{\"keccak256\":\"0x479f63f142d920176d27efb01e2924d763131c7d4e08d5b531305219d169e31d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c53c484572b7a2d2c5f2681a16d6fce366ef6e06008a165b6f35789fbbd2279\",\"dweb:/ipfs/QmXaqDWqZ91As7JReLnENWnzVpUBrykcsqCrUyoEVyich4\"]},\"data/source/test/MonitoringServiceInternalsTest.sol\":{\"keccak256\":\"0xbd5928ccfafe85b446fe6b2707d554648c23d70a099cb202f74179634d21c1d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://391aefe737f4eb13a8b665467042e85c37552521292055c0f7a6bf777612c6e3\",\"dweb:/ipfs/QmdFbmVPgDuon3kKuvqoSoPhzeeQAJcPTDtuiZciou9LWw\"]}},\"version\":1}"
         },
         "OneToN": {
             "abi": [
@@ -6167,9 +6167,9 @@
                     "type": "function"
                 }
             ],
-            "bin": "6080604052600060065534801561001557600080fd5b50604051613c4f380380613c4f833981810160405260a081101561003857600080fd5b508051602082015160408301516060840151608090940151929391929091908361006157600080fd5b6000831161006e57600080fd5b6000821161007b57600080fd5b82821161008757600080fd5b6001600160a01b03851661009a57600080fd5b6100a3856100f9565b6100ac57600080fd5b600081116100b957600080fd5b600180546001600160a01b039096166001600160a01b031996871617905560029390935560039190915560045560055560008054909116331790556100ff565b3b151590565b613b418061010e6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063b0228f1e1161008c578063cc2799c711610066578063cc2799c7146101ba578063d0ad4bec146101ec578063f4a84298146101f4578063f77c47911461021a576100cf565b8063b0228f1e146101a2578063b61c4083146101aa578063b8378f75146101b2576100cf565b80630fabd9e7146100d4578063224df42f146101165780633af973b1146101305780633cebb82314610138578063751039fc146101605780637709bc7814610168575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b0316610222565b604080516001600160a01b039092168252519081900360200190f35b61011e61023d565b60408051918252519081900360200190f35b61011e610243565b61015e6004803603602081101561014e57600080fd5b50356001600160a01b0316610249565b005b61015e6102ca565b61018e6004803603602081101561017e57600080fd5b50356001600160a01b0316610331565b604080519115158252519081900360200190f35b61011e610337565b61011e61033d565b61011e610343565b6100fa600480360360608110156101d057600080fd5b506001600160a01b038135169060208101359060400135610349565b6100fa610597565b6100fa6004803603602081101561020a57600080fd5b50356001600160a01b03166105a6565b6100fa6105bb565b6007602052600090815260409020546001600160a01b031681565b60045481565b60025481565b6000546001600160a01b031633146102a8576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610329576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600019600555565b3b151590565b60055481565b60065481565b60035481565b600060055460065410610393576040805162461bcd60e51b815260206004820152600d60248201526c1c9959da5cdd1c9e48199d5b1b609a1b604482015290519081900360640190fd5b600019600554141561044b5760001983146103f5576040805162461bcd60e51b815260206004820152601d60248201527f4c696d697473206d7573742062652073657420746f204d41585f494e54000000604482015290519081900360640190fd5b600019821461044b576040805162461bcd60e51b815260206004820152601d60248201527f4c696d697473206d7573742062652073657420746f204d41585f494e54000000604482015290519081900360640190fd5b6001600160a01b03848116600090815260076020526040902054161561047057600080fd5b600654600101600681905550600084600160009054906101000a90046001600160a01b031660025460035460045460008054906101000a90046001600160a01b031689896040516104c0906105ca565b80896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001846001600160a01b0316815260200183815260200182815260200198505050505050505050604051809103906000f080158015610532573d6000803e3d6000fd5b506001600160a01b0386811660008181526007602052604080822080546001600160a01b031916948616948517905551939550859450919290917ff11a7558a113d9627989c5edf26cbd19143b7375248e621c8e30ac9e0847dc3f91a3509392505050565b6001546001600160a01b031681565b60006105b58260001980610349565b92915050565b6000546001600160a01b031681565b613534806105d88339019056fe60806040526009805460ff191690553480156200001b57600080fd5b5060405162003534380380620035348339810160408190526200003e916200020c565b6001600160a01b0388166200005257600080fd5b6001600160a01b0387166200006657600080fd5b6001600160a01b0383166200007a57600080fd5b600086116200008857600080fd5b600085116200009657600080fd5b848411620000a357600080fd5b620000ae88620001ea565b620000b857600080fd5b620000c387620001ea565b620000cd57600080fd5b60008211620000db57600080fd5b60008111620000e957600080fd5b81811015620000f757600080fd5b600180546001600160a01b03808b166001600160a01b03199283161792839055600280548b8316931692909217909155600388905560048781556005879055604080516318160ddd60e01b81529051600094909316926318160ddd92828101926020929190829003018186803b1580156200017157600080fd5b505afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000285565b11620001b757600080fd5b600080546001600160a01b0319166001600160a01b039490941693909317909255600655600755506200029e9350505050565b803b15155b919050565b80516001600160a01b0381168114620001ef57600080fd5b600080600080600080600080610100898b03121562000229578384fd5b6200023489620001f4565b97506200024460208a01620001f4565b96506040890151955060608901519450608089015193506200026960a08a01620001f4565b60c08a015160e0909a0151989b979a5095989497939692505050565b60006020828403121562000297578081fd5b5051919050565b61328680620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637c4734f41161010f578063b8378f75116100a2578063f77c479111610071578063f77c4791146103ee578063fadc554b146103f6578063fc0c546a14610409578063fe49ba1c14610411576101f0565b8063b8378f751461039a578063ca463cce146103a2578063e5949b5d146103b5578063ee4516d9146103c8576101f0565b80639cadb159116100de5780639cadb159146103595780639e67ca5f1461036c578063b7506d701461037f578063b79337bc14610387576101f0565b80637c4734f4146102ff57806382fd779514610312578063838d6e0514610325578063938bcd6714610346576101f0565b80634845be7611610187578063679b376311610156578063679b3763146102bc5780637313b25a146102c4578063751039fc146102d75780637709bc78146102df576101f0565b80634845be7614610286578063524bef8a1461028e5780635d6e441b146102a157806363ea0143146102a9576101f0565b8063224df42f116101c3578063224df42f1461024e57806324d73a93146102565780633af973b11461026b5780633cebb82314610273576101f0565b806303d9d253146101f55780630a798f241461020a5780630d4dc17f146102335780630fcc0c2814610246575b600080fd5b610208610203366004612ca8565b610424565b005b61021d610218366004612a40565b6106f4565b60405161022a91906130b3565b60405180910390f35b610208610241366004612e98565b61089b565b610208610b5b565b61021d610c18565b61025e610c1e565b60405161022a919061301d565b61021d610c2d565b6102086102813660046129f4565b610c33565b61021d610cb4565b61021d61029c366004612adc565b610cba565b61021d610ccc565b6102086102b7366004612d0e565b610cd2565b61021d610d23565b6102086102d2366004612edd565b610d29565b610208610f2f565b6102f26102ed3660046129f4565b610f9b565b60405161022a91906130a8565b61021d61030d366004612a0e565b610fa5565b610208610320366004612bff565b61104f565b610338610333366004612b0c565b6111ac565b60405161022a92919061315a565b61021d610354366004612a0e565b611262565b610208610367366004612d53565b6112cc565b61020861037a366004612dc9565b611329565b6102f261145e565b61021d610395366004612a7b565b611467565b61021d6114bf565b6102086103b0366004612e63565b6114c5565b6103386103c3366004612adc565b61174b565b6103db6103d6366004612b0c565b611767565b60405161022a97969594939291906131ea565b61025e6117f6565b610208610404366004612b47565b611805565b61025e6119fe565b61021d61041f366004612b0c565b611a0d565b61042e8383611262565b84141561043a57600080fd5b6000848152600a602052604081206001015460ff16600481111561045a57fe5b1461046457600080fd5b600080600080600061047586611a62565b909450925061048589888a611a0d565b6000818152600c602052604090206001810154815492975093509085146104ab57600080fd5b600083116104b857600080fd5b604051637ae2b5c760e01b815273__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c7906104f190879087906004016131dc565b60206040518083038186803b15801561050957600080fd5b505af415801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190612af4565b6000878152600c6020526040808220828155600101919091555190945084840392506001600160a01b03808a1691908b16908c907f8c03cf01b3d4e6068cc494e6fe02aa9e3d4af069d37c32ecc3b241af5c37e6c0906105a6908a908a908990613007565b60405180910390a483156106415760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105e6908c908890600401613055565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190612abc565b61064157600080fd5b81156106d45760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610679908b908690600401613055565b602060405180830381600087803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb9190612abc565b6106d457600080fd5b818310156106de57fe5b838310156106e857fe5b50505050505050505050565b60095460009060ff161561070757600080fd5b8160045481101561071757600080fd5b60055481111561072657600080fd5b6007546001546040516370a0823160e01b8152600092839290916001600160a01b03909116906370a082319061076090309060040161301d565b60206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b09190612af4565b106107ba57600080fd5b5060088054600101908190556107d08787610fa5565b6000818152600b6020526040902054909250156107ec57600080fd5b6000828152600b60209081526040808320849055838352600a909152902080541561081357fe5b6000600182015460ff16600481111561082857fe5b1461082f57fe5b8581556001808201805460ff191682800217905550866001600160a01b0316886001600160a01b0316837f669a4b0ac0b9994c0f82ed4dbe07bb421fe74e5951725af4f139c7443ebf049d8960405161088891906130b3565b60405180910390a4509695505050505050565b8160016000828152600a602052604090206001015460ff1660048111156108be57fe5b146108c857600080fd5b6000806000808560200151116108dd57600080fd5b846040015143106108ed57600080fd5b61090d600354878760000151886020015189604001518a60600151611ab6565b6001600160a01b031685600001516001600160a01b03161461094a5760405162461bcd60e51b8152600401610941906130bc565b60405180910390fd5b61096a600354878760000151886020015189604001518a60800151611ab6565b905061097a856000015182611262565b86146109985760405162461bcd60e51b815260040161094190613123565b6000868152600a6020908152604080832088516001600160a01b039081168552600282018452828520908616855291909320805482546001830154948b01519101975091929091018610156109ec57600080fd5b600181015460208901519081011015610a0457600080fd5b600182015460208901519081039550851115610a1f57600080fd5b60008511610a2c57600080fd5b87602001518583600101540114610a3f57fe5b87600001516001600160a01b0316897f98ed0357b86b313fa9f968de5c9d2bcf591432355b34aa1ab7e3e9e92f4284088a60200151604051610a8191906130b3565b60405180910390a3602088015160018084019190915554885160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91610ac7918990600401613055565b602060405180830381600087803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190612abc565b610b2257600080fd5b8154861015610b2d57fe5b8054861015610b3857fe5b600482015415610b4457fe5b600481015415610b5057fe5b505050505050505050565b60095460ff1615610b6b57600080fd5b6000546001600160a01b03163314610bca576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6009805460ff1916600117908190556040517f6151930a846a85f5e64d2dd1cc5deeafb010c63eec4b600458158edd0e33f15d91610c0e9160ff91909116906130a8565b60405180910390a1565b60055481565b6002546001600160a01b031681565b60035481565b6000546001600160a01b03163314610c92576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b600b6020526000908152604090205481565b60065481565b60095460ff1615610ce257600080fd5b8360016000828152600a602052604090206001015460ff166004811115610d0557fe5b14610d0f57600080fd5b610d1c8585858533611c38565b5050505050565b60085481565b8260016000828152600a602052604090206001015460ff166004811115610d4c57fe5b14610d5657600080fd5b600080610d6b85600001518560000151611262565b8614610d7657600080fd5b6000868152600a6020908152604080832088516001600160a01b03908116855260028201845282852089519091168552919093208054825489850151948b01519101965091929091018514610ddd5760405162461bcd60e51b8152600401610941906130f3565b866020015188602001510188602001511115610df857600080fd5b602088015115610e5a57604051630d4dc17f60e01b81523090630d4dc17f90610e27908c908c90600401613178565b600060405180830381600087803b158015610e4157600080fd5b505af1158015610e55573d6000803e3d6000fd5b505050505b602087015115610ebc57604051630d4dc17f60e01b81523090630d4dc17f90610e89908c908b90600401613178565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b505050505b610ed0838a8a600001518a60000151611e3d565b887f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c89600001518a6020015160008b600001518c602001516000604051610f1c9695949392919061306e565b60405180910390a2505050505050505050565b6000546001600160a01b03163314610f8e576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6000196006819055600755565b803b15155b919050565b60006001600160a01b038316610fba57600080fd5b6001600160a01b038216610fcd57600080fd5b816001600160a01b0316836001600160a01b03161415610fec57600080fd5b816001600160a01b0316836001600160a01b03161015611036578282604051602001611019929190612fb5565b604051602081830303815290604052805190602001209050611049565b8183604051602001611019929190612fb5565b92915050565b8760016000828152600a602052604090206001015460ff16600481111561107257fe5b1461107c57600080fd5b6110868789611262565b891461109157600080fd5b6000898152600a602052604081206001808201805460029260ff19909116908302179055506001600160a01b038916600090815260028083016020526040822001805460ff191660019081179091558254430183556003546110f991908e8c8c8c8c8c611ee0565b9050806001600160a01b03168a6001600160a01b03161461111957600080fd5b871561115b5761112f6003548d8b8b8b8b6120a6565b9250826001600160a01b03168b6001600160a01b03161461114f57600080fd5b61115b82848a8c6121fe565b878a6001600160a01b03168d7f09d2f946e008c38931cd739dd20e35146deff8ab3134caee6d54fe50816a81b88c60405161119691906130b3565b60405180910390a4505050505050505050505050565b6000838152600a6020526040812060018101548291829182919060ff16828160048111156111d657fe5b1480156111e35750600089115b80156111f157506008548911155b1561125357506003611204898989611a0d565b6000818152600c602052604090209094506112208a898b611a0d565b6000818152600c6020526040902060018301549195509015801561124657506001810154155b1561125057600492505b50505b90549890975095505050505050565b60006001600160a01b03831661127757600080fd5b6001600160a01b03821661128a57600080fd5b816001600160a01b0316836001600160a01b031614156112a957600080fd5b60006112b58484610fa5565b6000908152600b6020526040902054949350505050565b610b508960405180608001604052808b6001600160a01b031681526020018a8152602001898152602001888152506040518060800160405280886001600160a01b03168152602001878152602001868152602001858152506114c5565b8760016000828152600a602052604090206001015460ff16600481111561134c57fe5b1461135657600080fd5b306001600160a01b0316630d4dc17f8a6040518060a001604052808c6001600160a01b031681526020018b81526020018a815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201919091525050509152506040516001600160e01b031960e085901b168152611421929190600401613178565b600060405180830381600087803b15801561143b57600080fd5b505af115801561144f573d6000803e3d6000fd5b50505050505050505050505050565b60095460ff1681565b60095460009060ff161561147a57600080fd5b8260045481101561148a57600080fd5b60055481111561149957600080fd5b60006114a68787876106f4565b90506114b58188868933611c38565b9695505050505050565b60045481565b815181516114d38282611262565b85146114de57600080fd5b6000858152600a602052604090206002600182015460ff16600481111561150157fe5b1461150b57600080fd5b8054431161151857600080fd5b6001600160a01b03808416600090815260028301602052604080822092851682529020611545828861223a565b61154e57600080fd5b611558818761223a565b61156157600080fd5b61157f8288602001518960400151848a602001518b604001516122b1565b6040808b01919091528a01526020888101919091528801526115a383898787611e3d565b6115ae88888661252c565b6115b988878761252c565b877f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c8689602001518a60600151888b602001518c606001516040516116039695949392919061306e565b60405180910390a26020870151156116a657600154602088015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161164b91899190600401613055565b602060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190612abc565b6116a657600080fd5b60208601511561174157600154602087015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916116e691889190600401613055565b602060405180830381600087803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190612abc565b61174157600080fd5b5050505050505050565b600a602052600090815260409020805460019091015460ff1682565b6000838152600a602090815260408083206001600160a01b0386168452600201909152812081908190819081908190819081906117a58c8c8c611a0d565b6000908152600c6020526040902081546001808401546002850154600386015460049096015485549390950154939d50909b5060ff1699509297509095509093509150509397509397509397909450565b6000546001600160a01b031681565b61180f8989611262565b8a1461181a57600080fd5b8661182457600080fd5b6000861161183157600080fd5b60008a8152600a6020526040812081906002600182015460ff16600481111561185657fe5b1461186057600080fd5b6118ed60026003548f8d8d8d8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ee092505050565b9250826001600160a01b03168b6001600160a01b03161461190d57600080fd5b6119536003548e8c8c8c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120a692505050565b9150816001600160a01b03168c6001600160a01b03161461197357600080fd5b6001600160a01b038c166000908152600280830160205260409091209081015460ff1661199f57600080fd5b6119ab828e8c8e6121fe565b898d6001600160a01b03168f7f6fc5b4f4f9e65bfdc4c45456373906876cee8832b605478e281902468875eaed8e6040516119e691906130b3565b60405180910390a45050505050505050505050505050565b6001546001600160a01b031681565b6000816001600160a01b0316836001600160a01b03161415611a2e57600080fd5b838383604051602001611a4393929190612fdc565b6040516020818303038152906040528051906020012090509392505050565b805160009081906060810615611a7757600080fd5b6020600080805b84841015611aa257611a908885612573565b91508183019250606084019350611a7e565b505085516020870120945092505050915091565b6000806040518060400160405280600381526020016203230360ec1b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308b60036006811115611b1c57fe5b8c8c8c8c604051602001808a805190602001908083835b60208310611b525780518252601f199092019160209182019101611b33565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b60208310611b9a5780518252601f199092019160209182019101611b7b565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b8152601401878152602001868152602001858152602001846001600160a01b031660601b81526014018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b9998505050505050505050565b611c428483611262565b8514611c4d57600080fd5b60008311611c5a57600080fd5b600654831115611c6957600080fd5b6000858152600a602090815260408083206001600160a01b0380891685526002820190935281842092861684529083208254870393929084611caa57600080fd5b87851115611cb757600080fd5b815485018814611cc357fe5b6007546001546040516370a0823160e01b815287916001600160a01b0316906370a0823190611cf690309060040161301d565b60206040518083038186803b158015611d0e57600080fd5b505afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d469190612af4565b011115611d5257600080fd5b87825580548801935087841015611d6857600080fd5b886001600160a01b03168a7f2b55547a3b586ab51f65ee9ce4927fa6d25191388299988e89e059a02f9dd4458460000154604051611da691906130b3565b60405180910390a36001546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611de290899030908a90600401613031565b602060405180830381600087803b158015611dfc57600080fd5b505af1158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190612abc565b6106e857600080fd5b6001600160a01b0380831660009081526002808701602090815260408084208481556001808201869055818501805460ff199081169091556003808401889055600493840188905597891687528387208781558083018890559586018054821690559685018690559301849055878452600a9091528220828155018054909216909155611eca8383610fa5565b6000908152600b60205260408120555050505050565b6000806040518060400160405280600381526020016232373760e81b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308c8e6006811115611f4557fe5b8d8d8d8d8d604051602001808b805190602001908083835b60208310611f7c5780518252601f199092019160209182019101611f5d565b51815160209384036101000a60001901801990921691161790528d5191909301928d0191508083835b60208310611fc45780518252601f199092019160209182019101611fa5565b6001836020036101000a038019825116818451168082178552505050505050905001896001600160a01b031660601b815260140188815260200187815260200186815260200185815260200184815260200183815260200182805190602001908083835b602083106120475780518252601f199092019160209182019101612028565b6001836020036101000a0380198251168184511680821785525050505050509050019a50505050505050505050506040516020818303038152906040528051906020012090506120978185612649565b9b9a5050505050505050505050565b604080518082018252600381526219189960e91b6020808301919091528251808401909352601a8352790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b90830152600091829082308b60018c8c8c8c604051602001808a805190602001908083835b602083106121315780518252601f199092019160209182019101612112565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b602083106121795780518252601f19909201916020918201910161215a565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b81526014018781526020018681526020018581526020018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b6001600160a01b038316600090815260028501602052604090206004810154831161222857600080fd5b60048101929092556003909101555050565b600382015460009015801561225157506020820151155b801561225f57506040820151155b1561226c57506001611049565b81602001518260400151836060015160405160200161228d93929190613007565b60405160208183030381529060405280519060200120836003015414905092915050565b60008060008060008060006122c46127ed565b6122cc6127ed565b8e600001548260000181815250508e600101548260200181815250508d8260400181815250508c8260600181815250508b600001548160000181815250508b600101548160200181815250508a816040018181525050898160600181815250506123368f8d612719565b9250612342828261272f565b604051637ae2b5c760e01b815290955073__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c79061237e90889087906004016131dc565b60206040518083038186803b15801561239657600080fd5b505af41580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612af4565b604051630c3d6f9760e11b8152909550858403945073__$34600480520cb524a2c423e33a5b4dd437$__9063187adf2e9061240f9088908e906004016131dc565b604080518083038186803b15801561242657600080fd5b505af415801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190612f47565b809b50819650505073__$34600480520cb524a2c423e33a5b4dd437$__63187adf2e858f6040518363ffffffff1660e01b815260040161249f9291906131dc565b604080518083038186803b1580156124b657600080fd5b505af41580156124ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ee9190612f47565b9d509350828511156124fc57fe5b8284111561250657fe5b898d8587010101831461251557fe5b50929d919c50999a50959850949650505050505050565b604082015161253a5761256e565b600061254b84846000015184611a0d565b6000908152600c6020526040908190206060850151815590840151600190910155505b505050565b600080600080600085875111612590576000945050505050611049565b508585018051602082015160409283015160025493516360fb14a360e11b8152929650909450916001600160a01b03169063c1f62946906125d59084906004016130b3565b60206040518083038186803b1580156125ed57600080fd5b505afa158015612601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126259190612af4565b91508115806126345750818411155b1561263e57600092505b509095945050505050565b6000815160411461265957600080fd5b60208201516040830151606084015160001a601b81101561267857601b015b8060ff16601b148061268d57508060ff16601c145b61269657600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156126f0573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661271057600080fd5b50505092915050565b6001808201549083015491549254909201030390565b600073__$34600480520cb524a2c423e33a5b4dd437$__63934455b984600001518560200151866040015187606001518760000151886020015189604001518a606001516040518963ffffffff1660e01b815260040161279698979695949392919061321a565b60206040518083038186803b1580156127ae57600080fd5b505af41580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190612af4565b9392505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610fa057600080fd5b60008083601f84011261283d578182fd5b50813567ffffffffffffffff811115612854578182fd5b60208301915083602082850101111561286c57600080fd5b9250929050565b600082601f830112612883578081fd5b813567ffffffffffffffff8082111561289857fe5b604051601f8301601f1916810160200182811182821017156128b657fe5b6040528281528483016020018610156128cd578384fd5b82602086016020830137918201602001929092529392505050565b6000608082840312156128f9578081fd5b6040516080810181811067ffffffffffffffff8211171561291657fe5b60405290508061292583612815565b81526020830135602082015260408301356040820152606083013560608201525092915050565b600060a0828403121561295d578081fd5b60405160a0810167ffffffffffffffff828210818311171561297b57fe5b8160405282935061298b85612815565b8352602085013560208401526040850135604084015260608501359150808211156129b557600080fd5b6129c186838701612873565b606084015260808501359150808211156129da57600080fd5b506129e785828601612873565b6080830152505092915050565b600060208284031215612a05578081fd5b6127e682612815565b60008060408385031215612a20578081fd5b612a2983612815565b9150612a3760208401612815565b90509250929050565b600080600060608486031215612a54578081fd5b612a5d84612815565b9250612a6b60208501612815565b9150604084013590509250925092565b60008060008060808587031215612a90578081fd5b612a9985612815565b9350612aa760208601612815565b93969395505050506040820135916060013590565b600060208284031215612acd578081fd5b815180151581146127e6578182fd5b600060208284031215612aed578081fd5b5035919050565b600060208284031215612b05578081fd5b5051919050565b600080600060608486031215612b20578283fd5b83359250612b3060208501612815565b9150612b3e60408501612815565b90509250925092565b6000806000806000806000806000806101008b8d031215612b66578586fd5b8a359950612b7660208c01612815565b9850612b8460408c01612815565b975060608b0135965060808b0135955060a08b0135945060c08b013567ffffffffffffffff80821115612bb5578586fd5b612bc18e838f0161282c565b909650945060e08d0135915080821115612bd9578384fd5b50612be68d828e0161282c565b915080935050809150509295989b9194979a5092959850565b600080600080600080600080610100898b031215612c1b578182fd5b88359750612c2b60208a01612815565b9650612c3960408a01612815565b9550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff80821115612c6a578384fd5b612c768c838d01612873565b935060e08b0135915080821115612c8b578283fd5b50612c988b828c01612873565b9150509295985092959890939650565b60008060008060808587031215612cbd578182fd5b84359350612ccd60208601612815565b9250612cdb60408601612815565b9150606085013567ffffffffffffffff811115612cf6578182fd5b612d0287828801612873565b91505092959194509250565b60008060008060808587031215612d23578182fd5b84359350612d3360208601612815565b925060408501359150612d4860608601612815565b905092959194509250565b60008060008060008060008060006101208a8c031215612d71578283fd5b89359850612d8160208b01612815565b975060408a0135965060608a0135955060808a01359450612da460a08b01612815565b935060c08a0135925060e08a013591506101008a013590509295985092959850929598565b60008060008060008060008060c0898b031215612de4578182fd5b88359750612df460208a01612815565b96506040890135955060608901359450608089013567ffffffffffffffff80821115612e1e578384fd5b612e2a8c838d0161282c565b909650945060a08b0135915080821115612e42578384fd5b50612e4f8b828c0161282c565b999c989b5096995094979396929594505050565b60008060006101208486031215612e78578081fd5b83359250612e8985602086016128e8565b9150612b3e8560a086016128e8565b60008060408385031215612eaa578182fd5b82359150602083013567ffffffffffffffff811115612ec7578182fd5b612ed38582860161294c565b9150509250929050565b600080600060608486031215612ef1578081fd5b83359250602084013567ffffffffffffffff80821115612f0f578283fd5b612f1b8783880161294c565b93506040860135915080821115612f30578283fd5b50612f3d8682870161294c565b9150509250925092565b60008060408385031215612f59578182fd5b505080516020909101519092909150565b60008151808452815b81811015612f8f57602081850181015186830182015201612f73565b81811115612fa05782602083870101525b50601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606093841b811682529190921b16601482015260280190565b9283526bffffffffffffffffffffffff19606092831b81166020850152911b16603482015260480190565b9283526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0396871681526020810195909552604085019390935293166060830152608082019290925260a081019190915260c00190565b901515815260200190565b90815260200190565b6020808252601b908201527f57443a20696e76616c6964207061727469636970616e74207369670000000000604082015260600190565b60208082526016908201527543533a20696e636f6d706c65746520616d6f756e747360501b604082015260600190565b6020808252601b908201527f57443a206368616e6e656c206964206e6f74206d61746368696e670000000000604082015260600190565b828152604081016005831061316b57fe5b8260208301529392505050565b60008382526040602083015260018060a01b0383511660408301526020830151606083015260408301516080830152606083015160a0808401526131bf60e0840182612f6a565b90506080840151603f198483030160c08501526114b58282612f6a565b918252602082015260400190565b968752602087019590955292151560408601526060850191909152608084015260a083015260c082015260e00190565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e0820152610100019056fea26469706673582212206057b41d51a911550c455fd5e27bc268ac0ac293301e5bf5086047b581548cee64736f6c63430007060033a264697066735822122080c8f1932dedb0624d085ea4494ecf6605f614216e85fe7aa5c1ff9eb8bef8bc64736f6c63430007060033",
-            "bin-runtime": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063b0228f1e1161008c578063cc2799c711610066578063cc2799c7146101ba578063d0ad4bec146101ec578063f4a84298146101f4578063f77c47911461021a576100cf565b8063b0228f1e146101a2578063b61c4083146101aa578063b8378f75146101b2576100cf565b80630fabd9e7146100d4578063224df42f146101165780633af973b1146101305780633cebb82314610138578063751039fc146101605780637709bc7814610168575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b0316610222565b604080516001600160a01b039092168252519081900360200190f35b61011e61023d565b60408051918252519081900360200190f35b61011e610243565b61015e6004803603602081101561014e57600080fd5b50356001600160a01b0316610249565b005b61015e6102ca565b61018e6004803603602081101561017e57600080fd5b50356001600160a01b0316610331565b604080519115158252519081900360200190f35b61011e610337565b61011e61033d565b61011e610343565b6100fa600480360360608110156101d057600080fd5b506001600160a01b038135169060208101359060400135610349565b6100fa610597565b6100fa6004803603602081101561020a57600080fd5b50356001600160a01b03166105a6565b6100fa6105bb565b6007602052600090815260409020546001600160a01b031681565b60045481565b60025481565b6000546001600160a01b031633146102a8576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610329576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600019600555565b3b151590565b60055481565b60065481565b60035481565b600060055460065410610393576040805162461bcd60e51b815260206004820152600d60248201526c1c9959da5cdd1c9e48199d5b1b609a1b604482015290519081900360640190fd5b600019600554141561044b5760001983146103f5576040805162461bcd60e51b815260206004820152601d60248201527f4c696d697473206d7573742062652073657420746f204d41585f494e54000000604482015290519081900360640190fd5b600019821461044b576040805162461bcd60e51b815260206004820152601d60248201527f4c696d697473206d7573742062652073657420746f204d41585f494e54000000604482015290519081900360640190fd5b6001600160a01b03848116600090815260076020526040902054161561047057600080fd5b600654600101600681905550600084600160009054906101000a90046001600160a01b031660025460035460045460008054906101000a90046001600160a01b031689896040516104c0906105ca565b80896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001846001600160a01b0316815260200183815260200182815260200198505050505050505050604051809103906000f080158015610532573d6000803e3d6000fd5b506001600160a01b0386811660008181526007602052604080822080546001600160a01b031916948616948517905551939550859450919290917ff11a7558a113d9627989c5edf26cbd19143b7375248e621c8e30ac9e0847dc3f91a3509392505050565b6001546001600160a01b031681565b60006105b58260001980610349565b92915050565b6000546001600160a01b031681565b613534806105d88339019056fe60806040526009805460ff191690553480156200001b57600080fd5b5060405162003534380380620035348339810160408190526200003e916200020c565b6001600160a01b0388166200005257600080fd5b6001600160a01b0387166200006657600080fd5b6001600160a01b0383166200007a57600080fd5b600086116200008857600080fd5b600085116200009657600080fd5b848411620000a357600080fd5b620000ae88620001ea565b620000b857600080fd5b620000c387620001ea565b620000cd57600080fd5b60008211620000db57600080fd5b60008111620000e957600080fd5b81811015620000f757600080fd5b600180546001600160a01b03808b166001600160a01b03199283161792839055600280548b8316931692909217909155600388905560048781556005879055604080516318160ddd60e01b81529051600094909316926318160ddd92828101926020929190829003018186803b1580156200017157600080fd5b505afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000285565b11620001b757600080fd5b600080546001600160a01b0319166001600160a01b039490941693909317909255600655600755506200029e9350505050565b803b15155b919050565b80516001600160a01b0381168114620001ef57600080fd5b600080600080600080600080610100898b03121562000229578384fd5b6200023489620001f4565b97506200024460208a01620001f4565b96506040890151955060608901519450608089015193506200026960a08a01620001f4565b60c08a015160e0909a0151989b979a5095989497939692505050565b60006020828403121562000297578081fd5b5051919050565b61328680620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637c4734f41161010f578063b8378f75116100a2578063f77c479111610071578063f77c4791146103ee578063fadc554b146103f6578063fc0c546a14610409578063fe49ba1c14610411576101f0565b8063b8378f751461039a578063ca463cce146103a2578063e5949b5d146103b5578063ee4516d9146103c8576101f0565b80639cadb159116100de5780639cadb159146103595780639e67ca5f1461036c578063b7506d701461037f578063b79337bc14610387576101f0565b80637c4734f4146102ff57806382fd779514610312578063838d6e0514610325578063938bcd6714610346576101f0565b80634845be7611610187578063679b376311610156578063679b3763146102bc5780637313b25a146102c4578063751039fc146102d75780637709bc78146102df576101f0565b80634845be7614610286578063524bef8a1461028e5780635d6e441b146102a157806363ea0143146102a9576101f0565b8063224df42f116101c3578063224df42f1461024e57806324d73a93146102565780633af973b11461026b5780633cebb82314610273576101f0565b806303d9d253146101f55780630a798f241461020a5780630d4dc17f146102335780630fcc0c2814610246575b600080fd5b610208610203366004612ca8565b610424565b005b61021d610218366004612a40565b6106f4565b60405161022a91906130b3565b60405180910390f35b610208610241366004612e98565b61089b565b610208610b5b565b61021d610c18565b61025e610c1e565b60405161022a919061301d565b61021d610c2d565b6102086102813660046129f4565b610c33565b61021d610cb4565b61021d61029c366004612adc565b610cba565b61021d610ccc565b6102086102b7366004612d0e565b610cd2565b61021d610d23565b6102086102d2366004612edd565b610d29565b610208610f2f565b6102f26102ed3660046129f4565b610f9b565b60405161022a91906130a8565b61021d61030d366004612a0e565b610fa5565b610208610320366004612bff565b61104f565b610338610333366004612b0c565b6111ac565b60405161022a92919061315a565b61021d610354366004612a0e565b611262565b610208610367366004612d53565b6112cc565b61020861037a366004612dc9565b611329565b6102f261145e565b61021d610395366004612a7b565b611467565b61021d6114bf565b6102086103b0366004612e63565b6114c5565b6103386103c3366004612adc565b61174b565b6103db6103d6366004612b0c565b611767565b60405161022a97969594939291906131ea565b61025e6117f6565b610208610404366004612b47565b611805565b61025e6119fe565b61021d61041f366004612b0c565b611a0d565b61042e8383611262565b84141561043a57600080fd5b6000848152600a602052604081206001015460ff16600481111561045a57fe5b1461046457600080fd5b600080600080600061047586611a62565b909450925061048589888a611a0d565b6000818152600c602052604090206001810154815492975093509085146104ab57600080fd5b600083116104b857600080fd5b604051637ae2b5c760e01b815273__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c7906104f190879087906004016131dc565b60206040518083038186803b15801561050957600080fd5b505af415801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190612af4565b6000878152600c6020526040808220828155600101919091555190945084840392506001600160a01b03808a1691908b16908c907f8c03cf01b3d4e6068cc494e6fe02aa9e3d4af069d37c32ecc3b241af5c37e6c0906105a6908a908a908990613007565b60405180910390a483156106415760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105e6908c908890600401613055565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190612abc565b61064157600080fd5b81156106d45760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610679908b908690600401613055565b602060405180830381600087803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb9190612abc565b6106d457600080fd5b818310156106de57fe5b838310156106e857fe5b50505050505050505050565b60095460009060ff161561070757600080fd5b8160045481101561071757600080fd5b60055481111561072657600080fd5b6007546001546040516370a0823160e01b8152600092839290916001600160a01b03909116906370a082319061076090309060040161301d565b60206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b09190612af4565b106107ba57600080fd5b5060088054600101908190556107d08787610fa5565b6000818152600b6020526040902054909250156107ec57600080fd5b6000828152600b60209081526040808320849055838352600a909152902080541561081357fe5b6000600182015460ff16600481111561082857fe5b1461082f57fe5b8581556001808201805460ff191682800217905550866001600160a01b0316886001600160a01b0316837f669a4b0ac0b9994c0f82ed4dbe07bb421fe74e5951725af4f139c7443ebf049d8960405161088891906130b3565b60405180910390a4509695505050505050565b8160016000828152600a602052604090206001015460ff1660048111156108be57fe5b146108c857600080fd5b6000806000808560200151116108dd57600080fd5b846040015143106108ed57600080fd5b61090d600354878760000151886020015189604001518a60600151611ab6565b6001600160a01b031685600001516001600160a01b03161461094a5760405162461bcd60e51b8152600401610941906130bc565b60405180910390fd5b61096a600354878760000151886020015189604001518a60800151611ab6565b905061097a856000015182611262565b86146109985760405162461bcd60e51b815260040161094190613123565b6000868152600a6020908152604080832088516001600160a01b039081168552600282018452828520908616855291909320805482546001830154948b01519101975091929091018610156109ec57600080fd5b600181015460208901519081011015610a0457600080fd5b600182015460208901519081039550851115610a1f57600080fd5b60008511610a2c57600080fd5b87602001518583600101540114610a3f57fe5b87600001516001600160a01b0316897f98ed0357b86b313fa9f968de5c9d2bcf591432355b34aa1ab7e3e9e92f4284088a60200151604051610a8191906130b3565b60405180910390a3602088015160018084019190915554885160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91610ac7918990600401613055565b602060405180830381600087803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190612abc565b610b2257600080fd5b8154861015610b2d57fe5b8054861015610b3857fe5b600482015415610b4457fe5b600481015415610b5057fe5b505050505050505050565b60095460ff1615610b6b57600080fd5b6000546001600160a01b03163314610bca576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6009805460ff1916600117908190556040517f6151930a846a85f5e64d2dd1cc5deeafb010c63eec4b600458158edd0e33f15d91610c0e9160ff91909116906130a8565b60405180910390a1565b60055481565b6002546001600160a01b031681565b60035481565b6000546001600160a01b03163314610c92576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b600b6020526000908152604090205481565b60065481565b60095460ff1615610ce257600080fd5b8360016000828152600a602052604090206001015460ff166004811115610d0557fe5b14610d0f57600080fd5b610d1c8585858533611c38565b5050505050565b60085481565b8260016000828152600a602052604090206001015460ff166004811115610d4c57fe5b14610d5657600080fd5b600080610d6b85600001518560000151611262565b8614610d7657600080fd5b6000868152600a6020908152604080832088516001600160a01b03908116855260028201845282852089519091168552919093208054825489850151948b01519101965091929091018514610ddd5760405162461bcd60e51b8152600401610941906130f3565b866020015188602001510188602001511115610df857600080fd5b602088015115610e5a57604051630d4dc17f60e01b81523090630d4dc17f90610e27908c908c90600401613178565b600060405180830381600087803b158015610e4157600080fd5b505af1158015610e55573d6000803e3d6000fd5b505050505b602087015115610ebc57604051630d4dc17f60e01b81523090630d4dc17f90610e89908c908b90600401613178565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b505050505b610ed0838a8a600001518a60000151611e3d565b887f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c89600001518a6020015160008b600001518c602001516000604051610f1c9695949392919061306e565b60405180910390a2505050505050505050565b6000546001600160a01b03163314610f8e576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6000196006819055600755565b803b15155b919050565b60006001600160a01b038316610fba57600080fd5b6001600160a01b038216610fcd57600080fd5b816001600160a01b0316836001600160a01b03161415610fec57600080fd5b816001600160a01b0316836001600160a01b03161015611036578282604051602001611019929190612fb5565b604051602081830303815290604052805190602001209050611049565b8183604051602001611019929190612fb5565b92915050565b8760016000828152600a602052604090206001015460ff16600481111561107257fe5b1461107c57600080fd5b6110868789611262565b891461109157600080fd5b6000898152600a602052604081206001808201805460029260ff19909116908302179055506001600160a01b038916600090815260028083016020526040822001805460ff191660019081179091558254430183556003546110f991908e8c8c8c8c8c611ee0565b9050806001600160a01b03168a6001600160a01b03161461111957600080fd5b871561115b5761112f6003548d8b8b8b8b6120a6565b9250826001600160a01b03168b6001600160a01b03161461114f57600080fd5b61115b82848a8c6121fe565b878a6001600160a01b03168d7f09d2f946e008c38931cd739dd20e35146deff8ab3134caee6d54fe50816a81b88c60405161119691906130b3565b60405180910390a4505050505050505050505050565b6000838152600a6020526040812060018101548291829182919060ff16828160048111156111d657fe5b1480156111e35750600089115b80156111f157506008548911155b1561125357506003611204898989611a0d565b6000818152600c602052604090209094506112208a898b611a0d565b6000818152600c6020526040902060018301549195509015801561124657506001810154155b1561125057600492505b50505b90549890975095505050505050565b60006001600160a01b03831661127757600080fd5b6001600160a01b03821661128a57600080fd5b816001600160a01b0316836001600160a01b031614156112a957600080fd5b60006112b58484610fa5565b6000908152600b6020526040902054949350505050565b610b508960405180608001604052808b6001600160a01b031681526020018a8152602001898152602001888152506040518060800160405280886001600160a01b03168152602001878152602001868152602001858152506114c5565b8760016000828152600a602052604090206001015460ff16600481111561134c57fe5b1461135657600080fd5b306001600160a01b0316630d4dc17f8a6040518060a001604052808c6001600160a01b031681526020018b81526020018a815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201919091525050509152506040516001600160e01b031960e085901b168152611421929190600401613178565b600060405180830381600087803b15801561143b57600080fd5b505af115801561144f573d6000803e3d6000fd5b50505050505050505050505050565b60095460ff1681565b60095460009060ff161561147a57600080fd5b8260045481101561148a57600080fd5b60055481111561149957600080fd5b60006114a68787876106f4565b90506114b58188868933611c38565b9695505050505050565b60045481565b815181516114d38282611262565b85146114de57600080fd5b6000858152600a602052604090206002600182015460ff16600481111561150157fe5b1461150b57600080fd5b8054431161151857600080fd5b6001600160a01b03808416600090815260028301602052604080822092851682529020611545828861223a565b61154e57600080fd5b611558818761223a565b61156157600080fd5b61157f8288602001518960400151848a602001518b604001516122b1565b6040808b01919091528a01526020888101919091528801526115a383898787611e3d565b6115ae88888661252c565b6115b988878761252c565b877f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c8689602001518a60600151888b602001518c606001516040516116039695949392919061306e565b60405180910390a26020870151156116a657600154602088015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161164b91899190600401613055565b602060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190612abc565b6116a657600080fd5b60208601511561174157600154602087015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916116e691889190600401613055565b602060405180830381600087803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190612abc565b61174157600080fd5b5050505050505050565b600a602052600090815260409020805460019091015460ff1682565b6000838152600a602090815260408083206001600160a01b0386168452600201909152812081908190819081908190819081906117a58c8c8c611a0d565b6000908152600c6020526040902081546001808401546002850154600386015460049096015485549390950154939d50909b5060ff1699509297509095509093509150509397509397509397909450565b6000546001600160a01b031681565b61180f8989611262565b8a1461181a57600080fd5b8661182457600080fd5b6000861161183157600080fd5b60008a8152600a6020526040812081906002600182015460ff16600481111561185657fe5b1461186057600080fd5b6118ed60026003548f8d8d8d8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ee092505050565b9250826001600160a01b03168b6001600160a01b03161461190d57600080fd5b6119536003548e8c8c8c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120a692505050565b9150816001600160a01b03168c6001600160a01b03161461197357600080fd5b6001600160a01b038c166000908152600280830160205260409091209081015460ff1661199f57600080fd5b6119ab828e8c8e6121fe565b898d6001600160a01b03168f7f6fc5b4f4f9e65bfdc4c45456373906876cee8832b605478e281902468875eaed8e6040516119e691906130b3565b60405180910390a45050505050505050505050505050565b6001546001600160a01b031681565b6000816001600160a01b0316836001600160a01b03161415611a2e57600080fd5b838383604051602001611a4393929190612fdc565b6040516020818303038152906040528051906020012090509392505050565b805160009081906060810615611a7757600080fd5b6020600080805b84841015611aa257611a908885612573565b91508183019250606084019350611a7e565b505085516020870120945092505050915091565b6000806040518060400160405280600381526020016203230360ec1b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308b60036006811115611b1c57fe5b8c8c8c8c604051602001808a805190602001908083835b60208310611b525780518252601f199092019160209182019101611b33565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b60208310611b9a5780518252601f199092019160209182019101611b7b565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b8152601401878152602001868152602001858152602001846001600160a01b031660601b81526014018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b9998505050505050505050565b611c428483611262565b8514611c4d57600080fd5b60008311611c5a57600080fd5b600654831115611c6957600080fd5b6000858152600a602090815260408083206001600160a01b0380891685526002820190935281842092861684529083208254870393929084611caa57600080fd5b87851115611cb757600080fd5b815485018814611cc357fe5b6007546001546040516370a0823160e01b815287916001600160a01b0316906370a0823190611cf690309060040161301d565b60206040518083038186803b158015611d0e57600080fd5b505afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d469190612af4565b011115611d5257600080fd5b87825580548801935087841015611d6857600080fd5b886001600160a01b03168a7f2b55547a3b586ab51f65ee9ce4927fa6d25191388299988e89e059a02f9dd4458460000154604051611da691906130b3565b60405180910390a36001546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611de290899030908a90600401613031565b602060405180830381600087803b158015611dfc57600080fd5b505af1158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190612abc565b6106e857600080fd5b6001600160a01b0380831660009081526002808701602090815260408084208481556001808201869055818501805460ff199081169091556003808401889055600493840188905597891687528387208781558083018890559586018054821690559685018690559301849055878452600a9091528220828155018054909216909155611eca8383610fa5565b6000908152600b60205260408120555050505050565b6000806040518060400160405280600381526020016232373760e81b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308c8e6006811115611f4557fe5b8d8d8d8d8d604051602001808b805190602001908083835b60208310611f7c5780518252601f199092019160209182019101611f5d565b51815160209384036101000a60001901801990921691161790528d5191909301928d0191508083835b60208310611fc45780518252601f199092019160209182019101611fa5565b6001836020036101000a038019825116818451168082178552505050505050905001896001600160a01b031660601b815260140188815260200187815260200186815260200185815260200184815260200183815260200182805190602001908083835b602083106120475780518252601f199092019160209182019101612028565b6001836020036101000a0380198251168184511680821785525050505050509050019a50505050505050505050506040516020818303038152906040528051906020012090506120978185612649565b9b9a5050505050505050505050565b604080518082018252600381526219189960e91b6020808301919091528251808401909352601a8352790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b90830152600091829082308b60018c8c8c8c604051602001808a805190602001908083835b602083106121315780518252601f199092019160209182019101612112565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b602083106121795780518252601f19909201916020918201910161215a565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b81526014018781526020018681526020018581526020018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b6001600160a01b038316600090815260028501602052604090206004810154831161222857600080fd5b60048101929092556003909101555050565b600382015460009015801561225157506020820151155b801561225f57506040820151155b1561226c57506001611049565b81602001518260400151836060015160405160200161228d93929190613007565b60405160208183030381529060405280519060200120836003015414905092915050565b60008060008060008060006122c46127ed565b6122cc6127ed565b8e600001548260000181815250508e600101548260200181815250508d8260400181815250508c8260600181815250508b600001548160000181815250508b600101548160200181815250508a816040018181525050898160600181815250506123368f8d612719565b9250612342828261272f565b604051637ae2b5c760e01b815290955073__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c79061237e90889087906004016131dc565b60206040518083038186803b15801561239657600080fd5b505af41580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612af4565b604051630c3d6f9760e11b8152909550858403945073__$34600480520cb524a2c423e33a5b4dd437$__9063187adf2e9061240f9088908e906004016131dc565b604080518083038186803b15801561242657600080fd5b505af415801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190612f47565b809b50819650505073__$34600480520cb524a2c423e33a5b4dd437$__63187adf2e858f6040518363ffffffff1660e01b815260040161249f9291906131dc565b604080518083038186803b1580156124b657600080fd5b505af41580156124ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ee9190612f47565b9d509350828511156124fc57fe5b8284111561250657fe5b898d8587010101831461251557fe5b50929d919c50999a50959850949650505050505050565b604082015161253a5761256e565b600061254b84846000015184611a0d565b6000908152600c6020526040908190206060850151815590840151600190910155505b505050565b600080600080600085875111612590576000945050505050611049565b508585018051602082015160409283015160025493516360fb14a360e11b8152929650909450916001600160a01b03169063c1f62946906125d59084906004016130b3565b60206040518083038186803b1580156125ed57600080fd5b505afa158015612601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126259190612af4565b91508115806126345750818411155b1561263e57600092505b509095945050505050565b6000815160411461265957600080fd5b60208201516040830151606084015160001a601b81101561267857601b015b8060ff16601b148061268d57508060ff16601c145b61269657600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156126f0573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661271057600080fd5b50505092915050565b6001808201549083015491549254909201030390565b600073__$34600480520cb524a2c423e33a5b4dd437$__63934455b984600001518560200151866040015187606001518760000151886020015189604001518a606001516040518963ffffffff1660e01b815260040161279698979695949392919061321a565b60206040518083038186803b1580156127ae57600080fd5b505af41580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190612af4565b9392505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610fa057600080fd5b60008083601f84011261283d578182fd5b50813567ffffffffffffffff811115612854578182fd5b60208301915083602082850101111561286c57600080fd5b9250929050565b600082601f830112612883578081fd5b813567ffffffffffffffff8082111561289857fe5b604051601f8301601f1916810160200182811182821017156128b657fe5b6040528281528483016020018610156128cd578384fd5b82602086016020830137918201602001929092529392505050565b6000608082840312156128f9578081fd5b6040516080810181811067ffffffffffffffff8211171561291657fe5b60405290508061292583612815565b81526020830135602082015260408301356040820152606083013560608201525092915050565b600060a0828403121561295d578081fd5b60405160a0810167ffffffffffffffff828210818311171561297b57fe5b8160405282935061298b85612815565b8352602085013560208401526040850135604084015260608501359150808211156129b557600080fd5b6129c186838701612873565b606084015260808501359150808211156129da57600080fd5b506129e785828601612873565b6080830152505092915050565b600060208284031215612a05578081fd5b6127e682612815565b60008060408385031215612a20578081fd5b612a2983612815565b9150612a3760208401612815565b90509250929050565b600080600060608486031215612a54578081fd5b612a5d84612815565b9250612a6b60208501612815565b9150604084013590509250925092565b60008060008060808587031215612a90578081fd5b612a9985612815565b9350612aa760208601612815565b93969395505050506040820135916060013590565b600060208284031215612acd578081fd5b815180151581146127e6578182fd5b600060208284031215612aed578081fd5b5035919050565b600060208284031215612b05578081fd5b5051919050565b600080600060608486031215612b20578283fd5b83359250612b3060208501612815565b9150612b3e60408501612815565b90509250925092565b6000806000806000806000806000806101008b8d031215612b66578586fd5b8a359950612b7660208c01612815565b9850612b8460408c01612815565b975060608b0135965060808b0135955060a08b0135945060c08b013567ffffffffffffffff80821115612bb5578586fd5b612bc18e838f0161282c565b909650945060e08d0135915080821115612bd9578384fd5b50612be68d828e0161282c565b915080935050809150509295989b9194979a5092959850565b600080600080600080600080610100898b031215612c1b578182fd5b88359750612c2b60208a01612815565b9650612c3960408a01612815565b9550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff80821115612c6a578384fd5b612c768c838d01612873565b935060e08b0135915080821115612c8b578283fd5b50612c988b828c01612873565b9150509295985092959890939650565b60008060008060808587031215612cbd578182fd5b84359350612ccd60208601612815565b9250612cdb60408601612815565b9150606085013567ffffffffffffffff811115612cf6578182fd5b612d0287828801612873565b91505092959194509250565b60008060008060808587031215612d23578182fd5b84359350612d3360208601612815565b925060408501359150612d4860608601612815565b905092959194509250565b60008060008060008060008060006101208a8c031215612d71578283fd5b89359850612d8160208b01612815565b975060408a0135965060608a0135955060808a01359450612da460a08b01612815565b935060c08a0135925060e08a013591506101008a013590509295985092959850929598565b60008060008060008060008060c0898b031215612de4578182fd5b88359750612df460208a01612815565b96506040890135955060608901359450608089013567ffffffffffffffff80821115612e1e578384fd5b612e2a8c838d0161282c565b909650945060a08b0135915080821115612e42578384fd5b50612e4f8b828c0161282c565b999c989b5096995094979396929594505050565b60008060006101208486031215612e78578081fd5b83359250612e8985602086016128e8565b9150612b3e8560a086016128e8565b60008060408385031215612eaa578182fd5b82359150602083013567ffffffffffffffff811115612ec7578182fd5b612ed38582860161294c565b9150509250929050565b600080600060608486031215612ef1578081fd5b83359250602084013567ffffffffffffffff80821115612f0f578283fd5b612f1b8783880161294c565b93506040860135915080821115612f30578283fd5b50612f3d8682870161294c565b9150509250925092565b60008060408385031215612f59578182fd5b505080516020909101519092909150565b60008151808452815b81811015612f8f57602081850181015186830182015201612f73565b81811115612fa05782602083870101525b50601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606093841b811682529190921b16601482015260280190565b9283526bffffffffffffffffffffffff19606092831b81166020850152911b16603482015260480190565b9283526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0396871681526020810195909552604085019390935293166060830152608082019290925260a081019190915260c00190565b901515815260200190565b90815260200190565b6020808252601b908201527f57443a20696e76616c6964207061727469636970616e74207369670000000000604082015260600190565b60208082526016908201527543533a20696e636f6d706c65746520616d6f756e747360501b604082015260600190565b6020808252601b908201527f57443a206368616e6e656c206964206e6f74206d61746368696e670000000000604082015260600190565b828152604081016005831061316b57fe5b8260208301529392505050565b60008382526040602083015260018060a01b0383511660408301526020830151606083015260408301516080830152606083015160a0808401526131bf60e0840182612f6a565b90506080840151603f198483030160c08501526114b58282612f6a565b918252602082015260400190565b968752602087019590955292151560408601526060850191909152608084015260a083015260c082015260e00190565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e0820152610100019056fea26469706673582212206057b41d51a911550c455fd5e27bc268ac0ac293301e5bf5086047b581548cee64736f6c63430007060033a264697066735822122080c8f1932dedb0624d085ea4494ecf6605f614216e85fe7aa5c1ff9eb8bef8bc64736f6c63430007060033",
-            "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_secret_registry_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_settlement_timeout_min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_settlement_timeout_max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_max_token_networks\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"}],\"name\":\"TokenNetworkCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"chain_id\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_controller\",\"type\":\"address\"}],\"name\":\"changeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"contractExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_channel_participant_deposit_limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_token_network_deposit_limit\",\"type\":\"uint256\"}],\"name\":\"createERC20TokenNetwork\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"}],\"name\":\"createERC20TokenNetworkWithoutLimits\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"max_token_networks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"secret_registry_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement_timeout_max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement_timeout_min\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token_network_created\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"token_to_token_networks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_chain_id\":\"EIP-155 Chain-ID of the chain where this contract is deployed\",\"_max_token_networks\":\"the number of tokens that can be registered MAX_UINT256 means no limits\",\"_secret_registry_address\":\"The address of SecretRegistry that's used by all TokenNetworks created by this contract\",\"_settlement_timeout_max\":\"The longest settlement period (in number of blocks) that can be chosen at the channel opening\",\"_settlement_timeout_min\":\"The shortest settlement period (in number of blocks) that can be chosen at the channel opening\"}},\"contractExists(address)\":{\"params\":{\"contract_address\":\"The address to check whether a contract is deployed or not\"},\"returns\":{\"_0\":\"True if a contract exists, false otherwise\"}},\"createERC20TokenNetwork(address,uint256,uint256)\":{\"params\":{\"_token_address\":\"Ethereum address of an already deployed token, to be used in the new TokenNetwork contract\"}}},\"title\":\"TokenNetworkRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeController(address)\":{\"notice\":\"Changes the controller who is allowed to deprecate or remove limits. Can only be called by the controller.\"},\"contractExists(address)\":{\"notice\":\"Check if a contract exists\"},\"createERC20TokenNetwork(address,uint256,uint256)\":{\"notice\":\"Deploy a new TokenNetwork contract for the Token deployed at `_token_address`\"},\"removeLimits()\":{\"notice\":\"Removes the limit on the number of token networks. Can only be called by the controller.\"}},\"notice\":\"The TokenNetwork Registry deploys new TokenNetwork contracts for the Raiden Network protocol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"data/source/raiden/TokenNetworkRegistry.sol\":\"TokenNetworkRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":.=.\",\":lib=data/source/lib\",\":raiden=data/source/raiden\",\":services=data/source/services\",\":test=data/source/test\"]},\"sources\":{\"data/source/lib/ECVerify.sol\":{\"keccak256\":\"0xeced41e7578af77042e00fc68e482b754cd355da872bfdda95a0b74e3dbd90e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9838dc558bce37a7490ac84f834cb1cf33cba1e13438e1666be7011f03b0ac2\",\"dweb:/ipfs/QmUb9dn1FeZbJCNg5hN7wXapTcP5V52Q554bd97hhYr9qN\"]},\"data/source/lib/MessageType.sol\":{\"keccak256\":\"0xe4a3d54220ba19024c03fac9f8b3338245f2c4aa266627e6cdb5e97a2adcdee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b1d37be2f7d509e3c32f5e5cd5f58bcd67d11e907678e9343cccc9bc082476f\",\"dweb:/ipfs/QmTW6hUvkxXt5q7MbhtHPjWqdBd1tEC4bd1kFswDGhnvA6\"]},\"data/source/lib/TokenNetworkUtils.sol\":{\"keccak256\":\"0x9b7f52457a0d8e842eb6a64b9d30f044bbe1f4c6892d52c809924d837dc7ba75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://200eaf3a33fbb18518f21c88e3ece992a871738c725d4dd2c9e309f71adf7c6f\",\"dweb:/ipfs/QmX2WjHpEifYhj1ZMc8JJQMABvgCZ6XL4euq71cSXfmFpi\"]},\"data/source/raiden/Controllable.sol\":{\"keccak256\":\"0xccedede2950079f2e4dbe5f89f5a997bea0398828da90b6ef0f66bbd509d305c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b3ffa7945f7bd59dd46b622d69aa5970a5e858c690bf523d8151bf34b9d56c2\",\"dweb:/ipfs/QmcadWAn8FBfsxKrK9ScVCjHsjctBys2AgqGF8PWUij98y\"]},\"data/source/raiden/SecretRegistry.sol\":{\"keccak256\":\"0x828dbf9a344f66cb982df97f677d10942d1b163287b890860be40230b236642e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bde28a380d82203002375789cae1460df2128b7e21349f1c4436128ad581fed2\",\"dweb:/ipfs/QmZT8boB78rduGwZjPdwymuVuRQKhxh2N6D1uHbb5jtDZ8\"]},\"data/source/raiden/Token.sol\":{\"keccak256\":\"0x5a8ccb9fa426228d9e213164f22a94b0ac57f1aa15ab76ce88a96177edd7b0b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff1ddcfa729756503a156edda9aa65cbfd0522c449e0451ad3e5b5f72c2da256\",\"dweb:/ipfs/QmVQ4DeSBjo1W5obzasyT1re9jEQW2ydaMuj1GMa1cyKbV\"]},\"data/source/raiden/TokenNetwork.sol\":{\"keccak256\":\"0x88d6cb97eca333198c79ed2b6b86b9fac5edd629243c1261340f21125a4dc3de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b5cb209461763fd99a781a7f9b71275924a512f4ed81d285d54d372fe2bf0f\",\"dweb:/ipfs/QmPDVMJGH83DbHkHAdafhXZGcAMPZQP14wTLLam9996CDS\"]},\"data/source/raiden/TokenNetworkRegistry.sol\":{\"keccak256\":\"0xb20e56a9719fef0da8e3abecbfc4e5a00034979f038ab4b30ca425c6886bae61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5251c6d78680933fa5764557fb021a5ed20c79db93458e446db2697f85fa5f5\",\"dweb:/ipfs/Qmdq24hwQUscWY1GeNLNXTXyWFKgeyz7Cex7HKfXeLVJES\"]},\"data/source/raiden/Utils.sol\":{\"keccak256\":\"0x3fb4df9cdadd3711bffff81a451868c7a1ee8a2f3ff1a20a4343def15cb38e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67e2deac2f8ae6d3fc41d84474d2d7f2a098a9e1da70c60ae4590a05495c20c1\",\"dweb:/ipfs/QmRgqjDcKhG7dW68FRKZyYKhYULXx8keftggJFTfUoDGex\"]}},\"version\":1}"
+            "bin": "6080604052600060065534801561001557600080fd5b50604051613e7c380380613e7c833981810160405260a081101561003857600080fd5b50805160208201516040830151606084015160809094015192939192909190836100a9576040805162461bcd60e51b815260206004820152601560248201527f544e523a20696e76616c696420636861696e2069640000000000000000000000604482015290519081900360640190fd5b600083116100fe576040805162461bcd60e51b815260206004820152601f60248201527f544e523a20696e76616c696420736574746c652074696d656f7574206d696e00604482015290519081900360640190fd5b60008211610153576040805162461bcd60e51b815260206004820152601f60248201527f544e523a20696e76616c696420736574746c652074696d656f7574206d617800604482015290519081900360640190fd5b8282116101a7576040805162461bcd60e51b815260206004820152601c60248201527f544e523a20696e76616c696420736574746c652074696d656f75747300000000604482015290519081900360640190fd5b6001600160a01b038516610202576040805162461bcd60e51b815260206004820152601760248201527f544e523a20696e76616c69642053522061646472657373000000000000000000604482015290519081900360640190fd5b61020b856102e3565b61024e576040805162461bcd60e51b815260206004820152600f60248201526e2a27291d1034b73b30b634b21029a960891b604482015290519081900360640190fd5b600081116102a3576040805162461bcd60e51b815260206004820152601560248201527f544e523a20696e76616c696420544e206c696d69740000000000000000000000604482015290519081900360640190fd5b600180546001600160a01b039096166001600160a01b031996871617905560029390935560039190915560045560055560008054909116331790556102e9565b3b151590565b613b84806102f86000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063b0228f1e1161008c578063cc2799c711610066578063cc2799c7146101ba578063d0ad4bec146101ec578063f4a84298146101f4578063f77c47911461021a576100cf565b8063b0228f1e146101a2578063b61c4083146101aa578063b8378f75146101b2576100cf565b80630fabd9e7146100d4578063224df42f146101165780633af973b1146101305780633cebb82314610138578063751039fc146101605780637709bc7814610168575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b0316610222565b604080516001600160a01b039092168252519081900360200190f35b61011e61023d565b60408051918252519081900360200190f35b61011e610243565b61015e6004803603602081101561014e57600080fd5b50356001600160a01b0316610249565b005b61015e6102ca565b61018e6004803603602081101561017e57600080fd5b50356001600160a01b0316610331565b604080519115158252519081900360200190f35b61011e610337565b61011e61033d565b61011e610343565b6100fa600480360360608110156101d057600080fd5b506001600160a01b038135169060208101359060400135610349565b6100fa6105b8565b6100fa6004803603602081101561020a57600080fd5b50356001600160a01b03166105c7565b6100fa6105dc565b6007602052600090815260409020546001600160a01b031681565b60045481565b60025481565b6000546001600160a01b031633146102a8576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610329576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600019600555565b3b151590565b60055481565b60065481565b60035481565b600060055460065410610398576040805162461bcd60e51b81526020600482015260126024820152711513948e881c9959da5cdd1c9e48199d5b1b60721b604482015290519081900360640190fd5b60001960055414156104245760001983146103e45760405162461bcd60e51b8152600401808060200182810382526022815260200180613b2d6022913960400191505060405180910390fd5b60001982146104245760405162461bcd60e51b8152600401808060200182810382526022815260200180613b2d6022913960400191505060405180910390fd5b6001600160a01b038481166000908152600760205260409020541615610491576040805162461bcd60e51b815260206004820152601d60248201527f544e523a20746f6b656e20616c72656164792072656769737465726564000000604482015290519081900360640190fd5b600654600101600681905550600084600160009054906101000a90046001600160a01b031660025460035460045460008054906101000a90046001600160a01b031689896040516104e1906105eb565b80896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001846001600160a01b0316815260200183815260200182815260200198505050505050505050604051809103906000f080158015610553573d6000803e3d6000fd5b506001600160a01b0386811660008181526007602052604080822080546001600160a01b031916948616948517905551939550859450919290917ff11a7558a113d9627989c5edf26cbd19143b7375248e621c8e30ac9e0847dc3f91a3509392505050565b6001546001600160a01b031681565b60006105d68260001980610349565b92915050565b6000546001600160a01b031681565b613534806105f98339019056fe60806040526009805460ff191690553480156200001b57600080fd5b5060405162003534380380620035348339810160408190526200003e916200020c565b6001600160a01b0388166200005257600080fd5b6001600160a01b0387166200006657600080fd5b6001600160a01b0383166200007a57600080fd5b600086116200008857600080fd5b600085116200009657600080fd5b848411620000a357600080fd5b620000ae88620001ea565b620000b857600080fd5b620000c387620001ea565b620000cd57600080fd5b60008211620000db57600080fd5b60008111620000e957600080fd5b81811015620000f757600080fd5b600180546001600160a01b03808b166001600160a01b03199283161792839055600280548b8316931692909217909155600388905560048781556005879055604080516318160ddd60e01b81529051600094909316926318160ddd92828101926020929190829003018186803b1580156200017157600080fd5b505afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000285565b11620001b757600080fd5b600080546001600160a01b0319166001600160a01b039490941693909317909255600655600755506200029e9350505050565b803b15155b919050565b80516001600160a01b0381168114620001ef57600080fd5b600080600080600080600080610100898b03121562000229578384fd5b6200023489620001f4565b97506200024460208a01620001f4565b96506040890151955060608901519450608089015193506200026960a08a01620001f4565b60c08a015160e0909a0151989b979a5095989497939692505050565b60006020828403121562000297578081fd5b5051919050565b61328680620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637c4734f41161010f578063b8378f75116100a2578063f77c479111610071578063f77c4791146103ee578063fadc554b146103f6578063fc0c546a14610409578063fe49ba1c14610411576101f0565b8063b8378f751461039a578063ca463cce146103a2578063e5949b5d146103b5578063ee4516d9146103c8576101f0565b80639cadb159116100de5780639cadb159146103595780639e67ca5f1461036c578063b7506d701461037f578063b79337bc14610387576101f0565b80637c4734f4146102ff57806382fd779514610312578063838d6e0514610325578063938bcd6714610346576101f0565b80634845be7611610187578063679b376311610156578063679b3763146102bc5780637313b25a146102c4578063751039fc146102d75780637709bc78146102df576101f0565b80634845be7614610286578063524bef8a1461028e5780635d6e441b146102a157806363ea0143146102a9576101f0565b8063224df42f116101c3578063224df42f1461024e57806324d73a93146102565780633af973b11461026b5780633cebb82314610273576101f0565b806303d9d253146101f55780630a798f241461020a5780630d4dc17f146102335780630fcc0c2814610246575b600080fd5b610208610203366004612ca8565b610424565b005b61021d610218366004612a40565b6106f4565b60405161022a91906130b3565b60405180910390f35b610208610241366004612e98565b61089b565b610208610b5b565b61021d610c18565b61025e610c1e565b60405161022a919061301d565b61021d610c2d565b6102086102813660046129f4565b610c33565b61021d610cb4565b61021d61029c366004612adc565b610cba565b61021d610ccc565b6102086102b7366004612d0e565b610cd2565b61021d610d23565b6102086102d2366004612edd565b610d29565b610208610f2f565b6102f26102ed3660046129f4565b610f9b565b60405161022a91906130a8565b61021d61030d366004612a0e565b610fa5565b610208610320366004612bff565b61104f565b610338610333366004612b0c565b6111ac565b60405161022a92919061315a565b61021d610354366004612a0e565b611262565b610208610367366004612d53565b6112cc565b61020861037a366004612dc9565b611329565b6102f261145e565b61021d610395366004612a7b565b611467565b61021d6114bf565b6102086103b0366004612e63565b6114c5565b6103386103c3366004612adc565b61174b565b6103db6103d6366004612b0c565b611767565b60405161022a97969594939291906131ea565b61025e6117f6565b610208610404366004612b47565b611805565b61025e6119fe565b61021d61041f366004612b0c565b611a0d565b61042e8383611262565b84141561043a57600080fd5b6000848152600a602052604081206001015460ff16600481111561045a57fe5b1461046457600080fd5b600080600080600061047586611a62565b909450925061048589888a611a0d565b6000818152600c602052604090206001810154815492975093509085146104ab57600080fd5b600083116104b857600080fd5b604051637ae2b5c760e01b815273__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c7906104f190879087906004016131dc565b60206040518083038186803b15801561050957600080fd5b505af415801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190612af4565b6000878152600c6020526040808220828155600101919091555190945084840392506001600160a01b03808a1691908b16908c907f8c03cf01b3d4e6068cc494e6fe02aa9e3d4af069d37c32ecc3b241af5c37e6c0906105a6908a908a908990613007565b60405180910390a483156106415760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105e6908c908890600401613055565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190612abc565b61064157600080fd5b81156106d45760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610679908b908690600401613055565b602060405180830381600087803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb9190612abc565b6106d457600080fd5b818310156106de57fe5b838310156106e857fe5b50505050505050505050565b60095460009060ff161561070757600080fd5b8160045481101561071757600080fd5b60055481111561072657600080fd5b6007546001546040516370a0823160e01b8152600092839290916001600160a01b03909116906370a082319061076090309060040161301d565b60206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b09190612af4565b106107ba57600080fd5b5060088054600101908190556107d08787610fa5565b6000818152600b6020526040902054909250156107ec57600080fd5b6000828152600b60209081526040808320849055838352600a909152902080541561081357fe5b6000600182015460ff16600481111561082857fe5b1461082f57fe5b8581556001808201805460ff191682800217905550866001600160a01b0316886001600160a01b0316837f669a4b0ac0b9994c0f82ed4dbe07bb421fe74e5951725af4f139c7443ebf049d8960405161088891906130b3565b60405180910390a4509695505050505050565b8160016000828152600a602052604090206001015460ff1660048111156108be57fe5b146108c857600080fd5b6000806000808560200151116108dd57600080fd5b846040015143106108ed57600080fd5b61090d600354878760000151886020015189604001518a60600151611ab6565b6001600160a01b031685600001516001600160a01b03161461094a5760405162461bcd60e51b8152600401610941906130bc565b60405180910390fd5b61096a600354878760000151886020015189604001518a60800151611ab6565b905061097a856000015182611262565b86146109985760405162461bcd60e51b815260040161094190613123565b6000868152600a6020908152604080832088516001600160a01b039081168552600282018452828520908616855291909320805482546001830154948b01519101975091929091018610156109ec57600080fd5b600181015460208901519081011015610a0457600080fd5b600182015460208901519081039550851115610a1f57600080fd5b60008511610a2c57600080fd5b87602001518583600101540114610a3f57fe5b87600001516001600160a01b0316897f98ed0357b86b313fa9f968de5c9d2bcf591432355b34aa1ab7e3e9e92f4284088a60200151604051610a8191906130b3565b60405180910390a3602088015160018084019190915554885160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91610ac7918990600401613055565b602060405180830381600087803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190612abc565b610b2257600080fd5b8154861015610b2d57fe5b8054861015610b3857fe5b600482015415610b4457fe5b600481015415610b5057fe5b505050505050505050565b60095460ff1615610b6b57600080fd5b6000546001600160a01b03163314610bca576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6009805460ff1916600117908190556040517f6151930a846a85f5e64d2dd1cc5deeafb010c63eec4b600458158edd0e33f15d91610c0e9160ff91909116906130a8565b60405180910390a1565b60055481565b6002546001600160a01b031681565b60035481565b6000546001600160a01b03163314610c92576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b600b6020526000908152604090205481565b60065481565b60095460ff1615610ce257600080fd5b8360016000828152600a602052604090206001015460ff166004811115610d0557fe5b14610d0f57600080fd5b610d1c8585858533611c38565b5050505050565b60085481565b8260016000828152600a602052604090206001015460ff166004811115610d4c57fe5b14610d5657600080fd5b600080610d6b85600001518560000151611262565b8614610d7657600080fd5b6000868152600a6020908152604080832088516001600160a01b03908116855260028201845282852089519091168552919093208054825489850151948b01519101965091929091018514610ddd5760405162461bcd60e51b8152600401610941906130f3565b866020015188602001510188602001511115610df857600080fd5b602088015115610e5a57604051630d4dc17f60e01b81523090630d4dc17f90610e27908c908c90600401613178565b600060405180830381600087803b158015610e4157600080fd5b505af1158015610e55573d6000803e3d6000fd5b505050505b602087015115610ebc57604051630d4dc17f60e01b81523090630d4dc17f90610e89908c908b90600401613178565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b505050505b610ed0838a8a600001518a60000151611e3d565b887f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c89600001518a6020015160008b600001518c602001516000604051610f1c9695949392919061306e565b60405180910390a2505050505050505050565b6000546001600160a01b03163314610f8e576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6000196006819055600755565b803b15155b919050565b60006001600160a01b038316610fba57600080fd5b6001600160a01b038216610fcd57600080fd5b816001600160a01b0316836001600160a01b03161415610fec57600080fd5b816001600160a01b0316836001600160a01b03161015611036578282604051602001611019929190612fb5565b604051602081830303815290604052805190602001209050611049565b8183604051602001611019929190612fb5565b92915050565b8760016000828152600a602052604090206001015460ff16600481111561107257fe5b1461107c57600080fd5b6110868789611262565b891461109157600080fd5b6000898152600a602052604081206001808201805460029260ff19909116908302179055506001600160a01b038916600090815260028083016020526040822001805460ff191660019081179091558254430183556003546110f991908e8c8c8c8c8c611ee0565b9050806001600160a01b03168a6001600160a01b03161461111957600080fd5b871561115b5761112f6003548d8b8b8b8b6120a6565b9250826001600160a01b03168b6001600160a01b03161461114f57600080fd5b61115b82848a8c6121fe565b878a6001600160a01b03168d7f09d2f946e008c38931cd739dd20e35146deff8ab3134caee6d54fe50816a81b88c60405161119691906130b3565b60405180910390a4505050505050505050505050565b6000838152600a6020526040812060018101548291829182919060ff16828160048111156111d657fe5b1480156111e35750600089115b80156111f157506008548911155b1561125357506003611204898989611a0d565b6000818152600c602052604090209094506112208a898b611a0d565b6000818152600c6020526040902060018301549195509015801561124657506001810154155b1561125057600492505b50505b90549890975095505050505050565b60006001600160a01b03831661127757600080fd5b6001600160a01b03821661128a57600080fd5b816001600160a01b0316836001600160a01b031614156112a957600080fd5b60006112b58484610fa5565b6000908152600b6020526040902054949350505050565b610b508960405180608001604052808b6001600160a01b031681526020018a8152602001898152602001888152506040518060800160405280886001600160a01b03168152602001878152602001868152602001858152506114c5565b8760016000828152600a602052604090206001015460ff16600481111561134c57fe5b1461135657600080fd5b306001600160a01b0316630d4dc17f8a6040518060a001604052808c6001600160a01b031681526020018b81526020018a815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201919091525050509152506040516001600160e01b031960e085901b168152611421929190600401613178565b600060405180830381600087803b15801561143b57600080fd5b505af115801561144f573d6000803e3d6000fd5b50505050505050505050505050565b60095460ff1681565b60095460009060ff161561147a57600080fd5b8260045481101561148a57600080fd5b60055481111561149957600080fd5b60006114a68787876106f4565b90506114b58188868933611c38565b9695505050505050565b60045481565b815181516114d38282611262565b85146114de57600080fd5b6000858152600a602052604090206002600182015460ff16600481111561150157fe5b1461150b57600080fd5b8054431161151857600080fd5b6001600160a01b03808416600090815260028301602052604080822092851682529020611545828861223a565b61154e57600080fd5b611558818761223a565b61156157600080fd5b61157f8288602001518960400151848a602001518b604001516122b1565b6040808b01919091528a01526020888101919091528801526115a383898787611e3d565b6115ae88888661252c565b6115b988878761252c565b877f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c8689602001518a60600151888b602001518c606001516040516116039695949392919061306e565b60405180910390a26020870151156116a657600154602088015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161164b91899190600401613055565b602060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190612abc565b6116a657600080fd5b60208601511561174157600154602087015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916116e691889190600401613055565b602060405180830381600087803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190612abc565b61174157600080fd5b5050505050505050565b600a602052600090815260409020805460019091015460ff1682565b6000838152600a602090815260408083206001600160a01b0386168452600201909152812081908190819081908190819081906117a58c8c8c611a0d565b6000908152600c6020526040902081546001808401546002850154600386015460049096015485549390950154939d50909b5060ff1699509297509095509093509150509397509397509397909450565b6000546001600160a01b031681565b61180f8989611262565b8a1461181a57600080fd5b8661182457600080fd5b6000861161183157600080fd5b60008a8152600a6020526040812081906002600182015460ff16600481111561185657fe5b1461186057600080fd5b6118ed60026003548f8d8d8d8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ee092505050565b9250826001600160a01b03168b6001600160a01b03161461190d57600080fd5b6119536003548e8c8c8c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120a692505050565b9150816001600160a01b03168c6001600160a01b03161461197357600080fd5b6001600160a01b038c166000908152600280830160205260409091209081015460ff1661199f57600080fd5b6119ab828e8c8e6121fe565b898d6001600160a01b03168f7f6fc5b4f4f9e65bfdc4c45456373906876cee8832b605478e281902468875eaed8e6040516119e691906130b3565b60405180910390a45050505050505050505050505050565b6001546001600160a01b031681565b6000816001600160a01b0316836001600160a01b03161415611a2e57600080fd5b838383604051602001611a4393929190612fdc565b6040516020818303038152906040528051906020012090509392505050565b805160009081906060810615611a7757600080fd5b6020600080805b84841015611aa257611a908885612573565b91508183019250606084019350611a7e565b505085516020870120945092505050915091565b6000806040518060400160405280600381526020016203230360ec1b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308b60036006811115611b1c57fe5b8c8c8c8c604051602001808a805190602001908083835b60208310611b525780518252601f199092019160209182019101611b33565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b60208310611b9a5780518252601f199092019160209182019101611b7b565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b8152601401878152602001868152602001858152602001846001600160a01b031660601b81526014018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b9998505050505050505050565b611c428483611262565b8514611c4d57600080fd5b60008311611c5a57600080fd5b600654831115611c6957600080fd5b6000858152600a602090815260408083206001600160a01b0380891685526002820190935281842092861684529083208254870393929084611caa57600080fd5b87851115611cb757600080fd5b815485018814611cc357fe5b6007546001546040516370a0823160e01b815287916001600160a01b0316906370a0823190611cf690309060040161301d565b60206040518083038186803b158015611d0e57600080fd5b505afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d469190612af4565b011115611d5257600080fd5b87825580548801935087841015611d6857600080fd5b886001600160a01b03168a7f2b55547a3b586ab51f65ee9ce4927fa6d25191388299988e89e059a02f9dd4458460000154604051611da691906130b3565b60405180910390a36001546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611de290899030908a90600401613031565b602060405180830381600087803b158015611dfc57600080fd5b505af1158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190612abc565b6106e857600080fd5b6001600160a01b0380831660009081526002808701602090815260408084208481556001808201869055818501805460ff199081169091556003808401889055600493840188905597891687528387208781558083018890559586018054821690559685018690559301849055878452600a9091528220828155018054909216909155611eca8383610fa5565b6000908152600b60205260408120555050505050565b6000806040518060400160405280600381526020016232373760e81b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308c8e6006811115611f4557fe5b8d8d8d8d8d604051602001808b805190602001908083835b60208310611f7c5780518252601f199092019160209182019101611f5d565b51815160209384036101000a60001901801990921691161790528d5191909301928d0191508083835b60208310611fc45780518252601f199092019160209182019101611fa5565b6001836020036101000a038019825116818451168082178552505050505050905001896001600160a01b031660601b815260140188815260200187815260200186815260200185815260200184815260200183815260200182805190602001908083835b602083106120475780518252601f199092019160209182019101612028565b6001836020036101000a0380198251168184511680821785525050505050509050019a50505050505050505050506040516020818303038152906040528051906020012090506120978185612649565b9b9a5050505050505050505050565b604080518082018252600381526219189960e91b6020808301919091528251808401909352601a8352790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b90830152600091829082308b60018c8c8c8c604051602001808a805190602001908083835b602083106121315780518252601f199092019160209182019101612112565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b602083106121795780518252601f19909201916020918201910161215a565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b81526014018781526020018681526020018581526020018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b6001600160a01b038316600090815260028501602052604090206004810154831161222857600080fd5b60048101929092556003909101555050565b600382015460009015801561225157506020820151155b801561225f57506040820151155b1561226c57506001611049565b81602001518260400151836060015160405160200161228d93929190613007565b60405160208183030381529060405280519060200120836003015414905092915050565b60008060008060008060006122c46127ed565b6122cc6127ed565b8e600001548260000181815250508e600101548260200181815250508d8260400181815250508c8260600181815250508b600001548160000181815250508b600101548160200181815250508a816040018181525050898160600181815250506123368f8d612719565b9250612342828261272f565b604051637ae2b5c760e01b815290955073__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c79061237e90889087906004016131dc565b60206040518083038186803b15801561239657600080fd5b505af41580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612af4565b604051630c3d6f9760e11b8152909550858403945073__$34600480520cb524a2c423e33a5b4dd437$__9063187adf2e9061240f9088908e906004016131dc565b604080518083038186803b15801561242657600080fd5b505af415801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190612f47565b809b50819650505073__$34600480520cb524a2c423e33a5b4dd437$__63187adf2e858f6040518363ffffffff1660e01b815260040161249f9291906131dc565b604080518083038186803b1580156124b657600080fd5b505af41580156124ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ee9190612f47565b9d509350828511156124fc57fe5b8284111561250657fe5b898d8587010101831461251557fe5b50929d919c50999a50959850949650505050505050565b604082015161253a5761256e565b600061254b84846000015184611a0d565b6000908152600c6020526040908190206060850151815590840151600190910155505b505050565b600080600080600085875111612590576000945050505050611049565b508585018051602082015160409283015160025493516360fb14a360e11b8152929650909450916001600160a01b03169063c1f62946906125d59084906004016130b3565b60206040518083038186803b1580156125ed57600080fd5b505afa158015612601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126259190612af4565b91508115806126345750818411155b1561263e57600092505b509095945050505050565b6000815160411461265957600080fd5b60208201516040830151606084015160001a601b81101561267857601b015b8060ff16601b148061268d57508060ff16601c145b61269657600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156126f0573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661271057600080fd5b50505092915050565b6001808201549083015491549254909201030390565b600073__$34600480520cb524a2c423e33a5b4dd437$__63934455b984600001518560200151866040015187606001518760000151886020015189604001518a606001516040518963ffffffff1660e01b815260040161279698979695949392919061321a565b60206040518083038186803b1580156127ae57600080fd5b505af41580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190612af4565b9392505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610fa057600080fd5b60008083601f84011261283d578182fd5b50813567ffffffffffffffff811115612854578182fd5b60208301915083602082850101111561286c57600080fd5b9250929050565b600082601f830112612883578081fd5b813567ffffffffffffffff8082111561289857fe5b604051601f8301601f1916810160200182811182821017156128b657fe5b6040528281528483016020018610156128cd578384fd5b82602086016020830137918201602001929092529392505050565b6000608082840312156128f9578081fd5b6040516080810181811067ffffffffffffffff8211171561291657fe5b60405290508061292583612815565b81526020830135602082015260408301356040820152606083013560608201525092915050565b600060a0828403121561295d578081fd5b60405160a0810167ffffffffffffffff828210818311171561297b57fe5b8160405282935061298b85612815565b8352602085013560208401526040850135604084015260608501359150808211156129b557600080fd5b6129c186838701612873565b606084015260808501359150808211156129da57600080fd5b506129e785828601612873565b6080830152505092915050565b600060208284031215612a05578081fd5b6127e682612815565b60008060408385031215612a20578081fd5b612a2983612815565b9150612a3760208401612815565b90509250929050565b600080600060608486031215612a54578081fd5b612a5d84612815565b9250612a6b60208501612815565b9150604084013590509250925092565b60008060008060808587031215612a90578081fd5b612a9985612815565b9350612aa760208601612815565b93969395505050506040820135916060013590565b600060208284031215612acd578081fd5b815180151581146127e6578182fd5b600060208284031215612aed578081fd5b5035919050565b600060208284031215612b05578081fd5b5051919050565b600080600060608486031215612b20578283fd5b83359250612b3060208501612815565b9150612b3e60408501612815565b90509250925092565b6000806000806000806000806000806101008b8d031215612b66578586fd5b8a359950612b7660208c01612815565b9850612b8460408c01612815565b975060608b0135965060808b0135955060a08b0135945060c08b013567ffffffffffffffff80821115612bb5578586fd5b612bc18e838f0161282c565b909650945060e08d0135915080821115612bd9578384fd5b50612be68d828e0161282c565b915080935050809150509295989b9194979a5092959850565b600080600080600080600080610100898b031215612c1b578182fd5b88359750612c2b60208a01612815565b9650612c3960408a01612815565b9550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff80821115612c6a578384fd5b612c768c838d01612873565b935060e08b0135915080821115612c8b578283fd5b50612c988b828c01612873565b9150509295985092959890939650565b60008060008060808587031215612cbd578182fd5b84359350612ccd60208601612815565b9250612cdb60408601612815565b9150606085013567ffffffffffffffff811115612cf6578182fd5b612d0287828801612873565b91505092959194509250565b60008060008060808587031215612d23578182fd5b84359350612d3360208601612815565b925060408501359150612d4860608601612815565b905092959194509250565b60008060008060008060008060006101208a8c031215612d71578283fd5b89359850612d8160208b01612815565b975060408a0135965060608a0135955060808a01359450612da460a08b01612815565b935060c08a0135925060e08a013591506101008a013590509295985092959850929598565b60008060008060008060008060c0898b031215612de4578182fd5b88359750612df460208a01612815565b96506040890135955060608901359450608089013567ffffffffffffffff80821115612e1e578384fd5b612e2a8c838d0161282c565b909650945060a08b0135915080821115612e42578384fd5b50612e4f8b828c0161282c565b999c989b5096995094979396929594505050565b60008060006101208486031215612e78578081fd5b83359250612e8985602086016128e8565b9150612b3e8560a086016128e8565b60008060408385031215612eaa578182fd5b82359150602083013567ffffffffffffffff811115612ec7578182fd5b612ed38582860161294c565b9150509250929050565b600080600060608486031215612ef1578081fd5b83359250602084013567ffffffffffffffff80821115612f0f578283fd5b612f1b8783880161294c565b93506040860135915080821115612f30578283fd5b50612f3d8682870161294c565b9150509250925092565b60008060408385031215612f59578182fd5b505080516020909101519092909150565b60008151808452815b81811015612f8f57602081850181015186830182015201612f73565b81811115612fa05782602083870101525b50601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606093841b811682529190921b16601482015260280190565b9283526bffffffffffffffffffffffff19606092831b81166020850152911b16603482015260480190565b9283526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0396871681526020810195909552604085019390935293166060830152608082019290925260a081019190915260c00190565b901515815260200190565b90815260200190565b6020808252601b908201527f57443a20696e76616c6964207061727469636970616e74207369670000000000604082015260600190565b60208082526016908201527543533a20696e636f6d706c65746520616d6f756e747360501b604082015260600190565b6020808252601b908201527f57443a206368616e6e656c206964206e6f74206d61746368696e670000000000604082015260600190565b828152604081016005831061316b57fe5b8260208301529392505050565b60008382526040602083015260018060a01b0383511660408301526020830151606083015260408301516080830152606083015160a0808401526131bf60e0840182612f6a565b90506080840151603f198483030160c08501526114b58282612f6a565b918252602082015260400190565b968752602087019590955292151560408601526060850191909152608084015260a083015260c082015260e00190565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e0820152610100019056fea26469706673582212206057b41d51a911550c455fd5e27bc268ac0ac293301e5bf5086047b581548cee64736f6c63430007060033544e523a206c696d697473206d7573742062652073657420746f204d41585f494e54a26469706673582212204c7ed91d0fa7555e2f6fb297e082c7d30174c4ba585b8fdf9161ff3736ebd6c664736f6c63430007060033",
+            "bin-runtime": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063b0228f1e1161008c578063cc2799c711610066578063cc2799c7146101ba578063d0ad4bec146101ec578063f4a84298146101f4578063f77c47911461021a576100cf565b8063b0228f1e146101a2578063b61c4083146101aa578063b8378f75146101b2576100cf565b80630fabd9e7146100d4578063224df42f146101165780633af973b1146101305780633cebb82314610138578063751039fc146101605780637709bc7814610168575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b0316610222565b604080516001600160a01b039092168252519081900360200190f35b61011e61023d565b60408051918252519081900360200190f35b61011e610243565b61015e6004803603602081101561014e57600080fd5b50356001600160a01b0316610249565b005b61015e6102ca565b61018e6004803603602081101561017e57600080fd5b50356001600160a01b0316610331565b604080519115158252519081900360200190f35b61011e610337565b61011e61033d565b61011e610343565b6100fa600480360360608110156101d057600080fd5b506001600160a01b038135169060208101359060400135610349565b6100fa6105b8565b6100fa6004803603602081101561020a57600080fd5b50356001600160a01b03166105c7565b6100fa6105dc565b6007602052600090815260409020546001600160a01b031681565b60045481565b60025481565b6000546001600160a01b031633146102a8576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610329576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600019600555565b3b151590565b60055481565b60065481565b60035481565b600060055460065410610398576040805162461bcd60e51b81526020600482015260126024820152711513948e881c9959da5cdd1c9e48199d5b1b60721b604482015290519081900360640190fd5b60001960055414156104245760001983146103e45760405162461bcd60e51b8152600401808060200182810382526022815260200180613b2d6022913960400191505060405180910390fd5b60001982146104245760405162461bcd60e51b8152600401808060200182810382526022815260200180613b2d6022913960400191505060405180910390fd5b6001600160a01b038481166000908152600760205260409020541615610491576040805162461bcd60e51b815260206004820152601d60248201527f544e523a20746f6b656e20616c72656164792072656769737465726564000000604482015290519081900360640190fd5b600654600101600681905550600084600160009054906101000a90046001600160a01b031660025460035460045460008054906101000a90046001600160a01b031689896040516104e1906105eb565b80896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001846001600160a01b0316815260200183815260200182815260200198505050505050505050604051809103906000f080158015610553573d6000803e3d6000fd5b506001600160a01b0386811660008181526007602052604080822080546001600160a01b031916948616948517905551939550859450919290917ff11a7558a113d9627989c5edf26cbd19143b7375248e621c8e30ac9e0847dc3f91a3509392505050565b6001546001600160a01b031681565b60006105d68260001980610349565b92915050565b6000546001600160a01b031681565b613534806105f98339019056fe60806040526009805460ff191690553480156200001b57600080fd5b5060405162003534380380620035348339810160408190526200003e916200020c565b6001600160a01b0388166200005257600080fd5b6001600160a01b0387166200006657600080fd5b6001600160a01b0383166200007a57600080fd5b600086116200008857600080fd5b600085116200009657600080fd5b848411620000a357600080fd5b620000ae88620001ea565b620000b857600080fd5b620000c387620001ea565b620000cd57600080fd5b60008211620000db57600080fd5b60008111620000e957600080fd5b81811015620000f757600080fd5b600180546001600160a01b03808b166001600160a01b03199283161792839055600280548b8316931692909217909155600388905560048781556005879055604080516318160ddd60e01b81529051600094909316926318160ddd92828101926020929190829003018186803b1580156200017157600080fd5b505afa15801562000186573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000285565b11620001b757600080fd5b600080546001600160a01b0319166001600160a01b039490941693909317909255600655600755506200029e9350505050565b803b15155b919050565b80516001600160a01b0381168114620001ef57600080fd5b600080600080600080600080610100898b03121562000229578384fd5b6200023489620001f4565b97506200024460208a01620001f4565b96506040890151955060608901519450608089015193506200026960a08a01620001f4565b60c08a015160e0909a0151989b979a5095989497939692505050565b60006020828403121562000297578081fd5b5051919050565b61328680620002ae6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637c4734f41161010f578063b8378f75116100a2578063f77c479111610071578063f77c4791146103ee578063fadc554b146103f6578063fc0c546a14610409578063fe49ba1c14610411576101f0565b8063b8378f751461039a578063ca463cce146103a2578063e5949b5d146103b5578063ee4516d9146103c8576101f0565b80639cadb159116100de5780639cadb159146103595780639e67ca5f1461036c578063b7506d701461037f578063b79337bc14610387576101f0565b80637c4734f4146102ff57806382fd779514610312578063838d6e0514610325578063938bcd6714610346576101f0565b80634845be7611610187578063679b376311610156578063679b3763146102bc5780637313b25a146102c4578063751039fc146102d75780637709bc78146102df576101f0565b80634845be7614610286578063524bef8a1461028e5780635d6e441b146102a157806363ea0143146102a9576101f0565b8063224df42f116101c3578063224df42f1461024e57806324d73a93146102565780633af973b11461026b5780633cebb82314610273576101f0565b806303d9d253146101f55780630a798f241461020a5780630d4dc17f146102335780630fcc0c2814610246575b600080fd5b610208610203366004612ca8565b610424565b005b61021d610218366004612a40565b6106f4565b60405161022a91906130b3565b60405180910390f35b610208610241366004612e98565b61089b565b610208610b5b565b61021d610c18565b61025e610c1e565b60405161022a919061301d565b61021d610c2d565b6102086102813660046129f4565b610c33565b61021d610cb4565b61021d61029c366004612adc565b610cba565b61021d610ccc565b6102086102b7366004612d0e565b610cd2565b61021d610d23565b6102086102d2366004612edd565b610d29565b610208610f2f565b6102f26102ed3660046129f4565b610f9b565b60405161022a91906130a8565b61021d61030d366004612a0e565b610fa5565b610208610320366004612bff565b61104f565b610338610333366004612b0c565b6111ac565b60405161022a92919061315a565b61021d610354366004612a0e565b611262565b610208610367366004612d53565b6112cc565b61020861037a366004612dc9565b611329565b6102f261145e565b61021d610395366004612a7b565b611467565b61021d6114bf565b6102086103b0366004612e63565b6114c5565b6103386103c3366004612adc565b61174b565b6103db6103d6366004612b0c565b611767565b60405161022a97969594939291906131ea565b61025e6117f6565b610208610404366004612b47565b611805565b61025e6119fe565b61021d61041f366004612b0c565b611a0d565b61042e8383611262565b84141561043a57600080fd5b6000848152600a602052604081206001015460ff16600481111561045a57fe5b1461046457600080fd5b600080600080600061047586611a62565b909450925061048589888a611a0d565b6000818152600c602052604090206001810154815492975093509085146104ab57600080fd5b600083116104b857600080fd5b604051637ae2b5c760e01b815273__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c7906104f190879087906004016131dc565b60206040518083038186803b15801561050957600080fd5b505af415801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190612af4565b6000878152600c6020526040808220828155600101919091555190945084840392506001600160a01b03808a1691908b16908c907f8c03cf01b3d4e6068cc494e6fe02aa9e3d4af069d37c32ecc3b241af5c37e6c0906105a6908a908a908990613007565b60405180910390a483156106415760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105e6908c908890600401613055565b602060405180830381600087803b15801561060057600080fd5b505af1158015610614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106389190612abc565b61064157600080fd5b81156106d45760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610679908b908690600401613055565b602060405180830381600087803b15801561069357600080fd5b505af11580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb9190612abc565b6106d457600080fd5b818310156106de57fe5b838310156106e857fe5b50505050505050505050565b60095460009060ff161561070757600080fd5b8160045481101561071757600080fd5b60055481111561072657600080fd5b6007546001546040516370a0823160e01b8152600092839290916001600160a01b03909116906370a082319061076090309060040161301d565b60206040518083038186803b15801561077857600080fd5b505afa15801561078c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b09190612af4565b106107ba57600080fd5b5060088054600101908190556107d08787610fa5565b6000818152600b6020526040902054909250156107ec57600080fd5b6000828152600b60209081526040808320849055838352600a909152902080541561081357fe5b6000600182015460ff16600481111561082857fe5b1461082f57fe5b8581556001808201805460ff191682800217905550866001600160a01b0316886001600160a01b0316837f669a4b0ac0b9994c0f82ed4dbe07bb421fe74e5951725af4f139c7443ebf049d8960405161088891906130b3565b60405180910390a4509695505050505050565b8160016000828152600a602052604090206001015460ff1660048111156108be57fe5b146108c857600080fd5b6000806000808560200151116108dd57600080fd5b846040015143106108ed57600080fd5b61090d600354878760000151886020015189604001518a60600151611ab6565b6001600160a01b031685600001516001600160a01b03161461094a5760405162461bcd60e51b8152600401610941906130bc565b60405180910390fd5b61096a600354878760000151886020015189604001518a60800151611ab6565b905061097a856000015182611262565b86146109985760405162461bcd60e51b815260040161094190613123565b6000868152600a6020908152604080832088516001600160a01b039081168552600282018452828520908616855291909320805482546001830154948b01519101975091929091018610156109ec57600080fd5b600181015460208901519081011015610a0457600080fd5b600182015460208901519081039550851115610a1f57600080fd5b60008511610a2c57600080fd5b87602001518583600101540114610a3f57fe5b87600001516001600160a01b0316897f98ed0357b86b313fa9f968de5c9d2bcf591432355b34aa1ab7e3e9e92f4284088a60200151604051610a8191906130b3565b60405180910390a3602088015160018084019190915554885160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91610ac7918990600401613055565b602060405180830381600087803b158015610ae157600080fd5b505af1158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190612abc565b610b2257600080fd5b8154861015610b2d57fe5b8054861015610b3857fe5b600482015415610b4457fe5b600481015415610b5057fe5b505050505050505050565b60095460ff1615610b6b57600080fd5b6000546001600160a01b03163314610bca576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6009805460ff1916600117908190556040517f6151930a846a85f5e64d2dd1cc5deeafb010c63eec4b600458158edd0e33f15d91610c0e9160ff91909116906130a8565b60405180910390a1565b60055481565b6002546001600160a01b031681565b60035481565b6000546001600160a01b03163314610c92576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b600b6020526000908152604090205481565b60065481565b60095460ff1615610ce257600080fd5b8360016000828152600a602052604090206001015460ff166004811115610d0557fe5b14610d0f57600080fd5b610d1c8585858533611c38565b5050505050565b60085481565b8260016000828152600a602052604090206001015460ff166004811115610d4c57fe5b14610d5657600080fd5b600080610d6b85600001518560000151611262565b8614610d7657600080fd5b6000868152600a6020908152604080832088516001600160a01b03908116855260028201845282852089519091168552919093208054825489850151948b01519101965091929091018514610ddd5760405162461bcd60e51b8152600401610941906130f3565b866020015188602001510188602001511115610df857600080fd5b602088015115610e5a57604051630d4dc17f60e01b81523090630d4dc17f90610e27908c908c90600401613178565b600060405180830381600087803b158015610e4157600080fd5b505af1158015610e55573d6000803e3d6000fd5b505050505b602087015115610ebc57604051630d4dc17f60e01b81523090630d4dc17f90610e89908c908b90600401613178565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b505050505b610ed0838a8a600001518a60000151611e3d565b887f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c89600001518a6020015160008b600001518c602001516000604051610f1c9695949392919061306e565b60405180910390a2505050505050505050565b6000546001600160a01b03163314610f8e576040805162461bcd60e51b815260206004820181905260248201527f43616e206f6e6c792062652063616c6c656420627920636f6e74726f6c6c6572604482015290519081900360640190fd5b6000196006819055600755565b803b15155b919050565b60006001600160a01b038316610fba57600080fd5b6001600160a01b038216610fcd57600080fd5b816001600160a01b0316836001600160a01b03161415610fec57600080fd5b816001600160a01b0316836001600160a01b03161015611036578282604051602001611019929190612fb5565b604051602081830303815290604052805190602001209050611049565b8183604051602001611019929190612fb5565b92915050565b8760016000828152600a602052604090206001015460ff16600481111561107257fe5b1461107c57600080fd5b6110868789611262565b891461109157600080fd5b6000898152600a602052604081206001808201805460029260ff19909116908302179055506001600160a01b038916600090815260028083016020526040822001805460ff191660019081179091558254430183556003546110f991908e8c8c8c8c8c611ee0565b9050806001600160a01b03168a6001600160a01b03161461111957600080fd5b871561115b5761112f6003548d8b8b8b8b6120a6565b9250826001600160a01b03168b6001600160a01b03161461114f57600080fd5b61115b82848a8c6121fe565b878a6001600160a01b03168d7f09d2f946e008c38931cd739dd20e35146deff8ab3134caee6d54fe50816a81b88c60405161119691906130b3565b60405180910390a4505050505050505050505050565b6000838152600a6020526040812060018101548291829182919060ff16828160048111156111d657fe5b1480156111e35750600089115b80156111f157506008548911155b1561125357506003611204898989611a0d565b6000818152600c602052604090209094506112208a898b611a0d565b6000818152600c6020526040902060018301549195509015801561124657506001810154155b1561125057600492505b50505b90549890975095505050505050565b60006001600160a01b03831661127757600080fd5b6001600160a01b03821661128a57600080fd5b816001600160a01b0316836001600160a01b031614156112a957600080fd5b60006112b58484610fa5565b6000908152600b6020526040902054949350505050565b610b508960405180608001604052808b6001600160a01b031681526020018a8152602001898152602001888152506040518060800160405280886001600160a01b03168152602001878152602001868152602001858152506114c5565b8760016000828152600a602052604090206001015460ff16600481111561134c57fe5b1461135657600080fd5b306001600160a01b0316630d4dc17f8a6040518060a001604052808c6001600160a01b031681526020018b81526020018a815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201919091525050509152506040516001600160e01b031960e085901b168152611421929190600401613178565b600060405180830381600087803b15801561143b57600080fd5b505af115801561144f573d6000803e3d6000fd5b50505050505050505050505050565b60095460ff1681565b60095460009060ff161561147a57600080fd5b8260045481101561148a57600080fd5b60055481111561149957600080fd5b60006114a68787876106f4565b90506114b58188868933611c38565b9695505050505050565b60045481565b815181516114d38282611262565b85146114de57600080fd5b6000858152600a602052604090206002600182015460ff16600481111561150157fe5b1461150b57600080fd5b8054431161151857600080fd5b6001600160a01b03808416600090815260028301602052604080822092851682529020611545828861223a565b61154e57600080fd5b611558818761223a565b61156157600080fd5b61157f8288602001518960400151848a602001518b604001516122b1565b6040808b01919091528a01526020888101919091528801526115a383898787611e3d565b6115ae88888661252c565b6115b988878761252c565b877f5e973099ee6bae497f110b6b50e988c2a10decca1eb93982a42af12f297fc91c8689602001518a60600151888b602001518c606001516040516116039695949392919061306e565b60405180910390a26020870151156116a657600154602088015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161164b91899190600401613055565b602060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d9190612abc565b6116a657600080fd5b60208601511561174157600154602087015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916116e691889190600401613055565b602060405180830381600087803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190612abc565b61174157600080fd5b5050505050505050565b600a602052600090815260409020805460019091015460ff1682565b6000838152600a602090815260408083206001600160a01b0386168452600201909152812081908190819081908190819081906117a58c8c8c611a0d565b6000908152600c6020526040902081546001808401546002850154600386015460049096015485549390950154939d50909b5060ff1699509297509095509093509150509397509397509397909450565b6000546001600160a01b031681565b61180f8989611262565b8a1461181a57600080fd5b8661182457600080fd5b6000861161183157600080fd5b60008a8152600a6020526040812081906002600182015460ff16600481111561185657fe5b1461186057600080fd5b6118ed60026003548f8d8d8d8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ee092505050565b9250826001600160a01b03168b6001600160a01b03161461190d57600080fd5b6119536003548e8c8c8c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120a692505050565b9150816001600160a01b03168c6001600160a01b03161461197357600080fd5b6001600160a01b038c166000908152600280830160205260409091209081015460ff1661199f57600080fd5b6119ab828e8c8e6121fe565b898d6001600160a01b03168f7f6fc5b4f4f9e65bfdc4c45456373906876cee8832b605478e281902468875eaed8e6040516119e691906130b3565b60405180910390a45050505050505050505050505050565b6001546001600160a01b031681565b6000816001600160a01b0316836001600160a01b03161415611a2e57600080fd5b838383604051602001611a4393929190612fdc565b6040516020818303038152906040528051906020012090509392505050565b805160009081906060810615611a7757600080fd5b6020600080805b84841015611aa257611a908885612573565b91508183019250606084019350611a7e565b505085516020870120945092505050915091565b6000806040518060400160405280600381526020016203230360ec1b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308b60036006811115611b1c57fe5b8c8c8c8c604051602001808a805190602001908083835b60208310611b525780518252601f199092019160209182019101611b33565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b60208310611b9a5780518252601f199092019160209182019101611b7b565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b8152601401878152602001868152602001858152602001846001600160a01b031660601b81526014018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b9998505050505050505050565b611c428483611262565b8514611c4d57600080fd5b60008311611c5a57600080fd5b600654831115611c6957600080fd5b6000858152600a602090815260408083206001600160a01b0380891685526002820190935281842092861684529083208254870393929084611caa57600080fd5b87851115611cb757600080fd5b815485018814611cc357fe5b6007546001546040516370a0823160e01b815287916001600160a01b0316906370a0823190611cf690309060040161301d565b60206040518083038186803b158015611d0e57600080fd5b505afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d469190612af4565b011115611d5257600080fd5b87825580548801935087841015611d6857600080fd5b886001600160a01b03168a7f2b55547a3b586ab51f65ee9ce4927fa6d25191388299988e89e059a02f9dd4458460000154604051611da691906130b3565b60405180910390a36001546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90611de290899030908a90600401613031565b602060405180830381600087803b158015611dfc57600080fd5b505af1158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190612abc565b6106e857600080fd5b6001600160a01b0380831660009081526002808701602090815260408084208481556001808201869055818501805460ff199081169091556003808401889055600493840188905597891687528387208781558083018890559586018054821690559685018690559301849055878452600a9091528220828155018054909216909155611eca8383610fa5565b6000908152600b60205260408120555050505050565b6000806040518060400160405280600381526020016232373760e81b815250905060006040518060400160405280601a8152602001790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b81525082308c8e6006811115611f4557fe5b8d8d8d8d8d604051602001808b805190602001908083835b60208310611f7c5780518252601f199092019160209182019101611f5d565b51815160209384036101000a60001901801990921691161790528d5191909301928d0191508083835b60208310611fc45780518252601f199092019160209182019101611fa5565b6001836020036101000a038019825116818451168082178552505050505050905001896001600160a01b031660601b815260140188815260200187815260200186815260200185815260200184815260200183815260200182805190602001908083835b602083106120475780518252601f199092019160209182019101612028565b6001836020036101000a0380198251168184511680821785525050505050509050019a50505050505050505050506040516020818303038152906040528051906020012090506120978185612649565b9b9a5050505050505050505050565b604080518082018252600381526219189960e91b6020808301919091528251808401909352601a8352790ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d0560311b90830152600091829082308b60018c8c8c8c604051602001808a805190602001908083835b602083106121315780518252601f199092019160209182019101612112565b51815160209384036101000a60001901801990921691161790528c5191909301928c0191508083835b602083106121795780518252601f19909201916020918201910161215a565b6001836020036101000a038019825116818451168082178552505050505050905001886001600160a01b031660601b81526014018781526020018681526020018581526020018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050611c2b8185612649565b6001600160a01b038316600090815260028501602052604090206004810154831161222857600080fd5b60048101929092556003909101555050565b600382015460009015801561225157506020820151155b801561225f57506040820151155b1561226c57506001611049565b81602001518260400151836060015160405160200161228d93929190613007565b60405160208183030381529060405280519060200120836003015414905092915050565b60008060008060008060006122c46127ed565b6122cc6127ed565b8e600001548260000181815250508e600101548260200181815250508d8260400181815250508c8260600181815250508b600001548160000181815250508b600101548160200181815250508a816040018181525050898160600181815250506123368f8d612719565b9250612342828261272f565b604051637ae2b5c760e01b815290955073__$34600480520cb524a2c423e33a5b4dd437$__90637ae2b5c79061237e90889087906004016131dc565b60206040518083038186803b15801561239657600080fd5b505af41580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190612af4565b604051630c3d6f9760e11b8152909550858403945073__$34600480520cb524a2c423e33a5b4dd437$__9063187adf2e9061240f9088908e906004016131dc565b604080518083038186803b15801561242657600080fd5b505af415801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190612f47565b809b50819650505073__$34600480520cb524a2c423e33a5b4dd437$__63187adf2e858f6040518363ffffffff1660e01b815260040161249f9291906131dc565b604080518083038186803b1580156124b657600080fd5b505af41580156124ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ee9190612f47565b9d509350828511156124fc57fe5b8284111561250657fe5b898d8587010101831461251557fe5b50929d919c50999a50959850949650505050505050565b604082015161253a5761256e565b600061254b84846000015184611a0d565b6000908152600c6020526040908190206060850151815590840151600190910155505b505050565b600080600080600085875111612590576000945050505050611049565b508585018051602082015160409283015160025493516360fb14a360e11b8152929650909450916001600160a01b03169063c1f62946906125d59084906004016130b3565b60206040518083038186803b1580156125ed57600080fd5b505afa158015612601573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126259190612af4565b91508115806126345750818411155b1561263e57600092505b509095945050505050565b6000815160411461265957600080fd5b60208201516040830151606084015160001a601b81101561267857601b015b8060ff16601b148061268d57508060ff16601c145b61269657600080fd5b60018682858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156126f0573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b03841661271057600080fd5b50505092915050565b6001808201549083015491549254909201030390565b600073__$34600480520cb524a2c423e33a5b4dd437$__63934455b984600001518560200151866040015187606001518760000151886020015189604001518a606001516040518963ffffffff1660e01b815260040161279698979695949392919061321a565b60206040518083038186803b1580156127ae57600080fd5b505af41580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190612af4565b9392505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114610fa057600080fd5b60008083601f84011261283d578182fd5b50813567ffffffffffffffff811115612854578182fd5b60208301915083602082850101111561286c57600080fd5b9250929050565b600082601f830112612883578081fd5b813567ffffffffffffffff8082111561289857fe5b604051601f8301601f1916810160200182811182821017156128b657fe5b6040528281528483016020018610156128cd578384fd5b82602086016020830137918201602001929092529392505050565b6000608082840312156128f9578081fd5b6040516080810181811067ffffffffffffffff8211171561291657fe5b60405290508061292583612815565b81526020830135602082015260408301356040820152606083013560608201525092915050565b600060a0828403121561295d578081fd5b60405160a0810167ffffffffffffffff828210818311171561297b57fe5b8160405282935061298b85612815565b8352602085013560208401526040850135604084015260608501359150808211156129b557600080fd5b6129c186838701612873565b606084015260808501359150808211156129da57600080fd5b506129e785828601612873565b6080830152505092915050565b600060208284031215612a05578081fd5b6127e682612815565b60008060408385031215612a20578081fd5b612a2983612815565b9150612a3760208401612815565b90509250929050565b600080600060608486031215612a54578081fd5b612a5d84612815565b9250612a6b60208501612815565b9150604084013590509250925092565b60008060008060808587031215612a90578081fd5b612a9985612815565b9350612aa760208601612815565b93969395505050506040820135916060013590565b600060208284031215612acd578081fd5b815180151581146127e6578182fd5b600060208284031215612aed578081fd5b5035919050565b600060208284031215612b05578081fd5b5051919050565b600080600060608486031215612b20578283fd5b83359250612b3060208501612815565b9150612b3e60408501612815565b90509250925092565b6000806000806000806000806000806101008b8d031215612b66578586fd5b8a359950612b7660208c01612815565b9850612b8460408c01612815565b975060608b0135965060808b0135955060a08b0135945060c08b013567ffffffffffffffff80821115612bb5578586fd5b612bc18e838f0161282c565b909650945060e08d0135915080821115612bd9578384fd5b50612be68d828e0161282c565b915080935050809150509295989b9194979a5092959850565b600080600080600080600080610100898b031215612c1b578182fd5b88359750612c2b60208a01612815565b9650612c3960408a01612815565b9550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff80821115612c6a578384fd5b612c768c838d01612873565b935060e08b0135915080821115612c8b578283fd5b50612c988b828c01612873565b9150509295985092959890939650565b60008060008060808587031215612cbd578182fd5b84359350612ccd60208601612815565b9250612cdb60408601612815565b9150606085013567ffffffffffffffff811115612cf6578182fd5b612d0287828801612873565b91505092959194509250565b60008060008060808587031215612d23578182fd5b84359350612d3360208601612815565b925060408501359150612d4860608601612815565b905092959194509250565b60008060008060008060008060006101208a8c031215612d71578283fd5b89359850612d8160208b01612815565b975060408a0135965060608a0135955060808a01359450612da460a08b01612815565b935060c08a0135925060e08a013591506101008a013590509295985092959850929598565b60008060008060008060008060c0898b031215612de4578182fd5b88359750612df460208a01612815565b96506040890135955060608901359450608089013567ffffffffffffffff80821115612e1e578384fd5b612e2a8c838d0161282c565b909650945060a08b0135915080821115612e42578384fd5b50612e4f8b828c0161282c565b999c989b5096995094979396929594505050565b60008060006101208486031215612e78578081fd5b83359250612e8985602086016128e8565b9150612b3e8560a086016128e8565b60008060408385031215612eaa578182fd5b82359150602083013567ffffffffffffffff811115612ec7578182fd5b612ed38582860161294c565b9150509250929050565b600080600060608486031215612ef1578081fd5b83359250602084013567ffffffffffffffff80821115612f0f578283fd5b612f1b8783880161294c565b93506040860135915080821115612f30578283fd5b50612f3d8682870161294c565b9150509250925092565b60008060408385031215612f59578182fd5b505080516020909101519092909150565b60008151808452815b81811015612f8f57602081850181015186830182015201612f73565b81811115612fa05782602083870101525b50601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606093841b811682529190921b16601482015260280190565b9283526bffffffffffffffffffffffff19606092831b81166020850152911b16603482015260480190565b9283526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0396871681526020810195909552604085019390935293166060830152608082019290925260a081019190915260c00190565b901515815260200190565b90815260200190565b6020808252601b908201527f57443a20696e76616c6964207061727469636970616e74207369670000000000604082015260600190565b60208082526016908201527543533a20696e636f6d706c65746520616d6f756e747360501b604082015260600190565b6020808252601b908201527f57443a206368616e6e656c206964206e6f74206d61746368696e670000000000604082015260600190565b828152604081016005831061316b57fe5b8260208301529392505050565b60008382526040602083015260018060a01b0383511660408301526020830151606083015260408301516080830152606083015160a0808401526131bf60e0840182612f6a565b90506080840151603f198483030160c08501526114b58282612f6a565b918252602082015260400190565b968752602087019590955292151560408601526060850191909152608084015260a083015260c082015260e00190565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e0820152610100019056fea26469706673582212206057b41d51a911550c455fd5e27bc268ac0ac293301e5bf5086047b581548cee64736f6c63430007060033544e523a206c696d697473206d7573742062652073657420746f204d41585f494e54a26469706673582212204c7ed91d0fa7555e2f6fb297e082c7d30174c4ba585b8fdf9161ff3736ebd6c664736f6c63430007060033",
+            "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_secret_registry_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_settlement_timeout_min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_settlement_timeout_max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_max_token_networks\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"}],\"name\":\"TokenNetworkCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"chain_id\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_controller\",\"type\":\"address\"}],\"name\":\"changeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"contractExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_channel_participant_deposit_limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_token_network_deposit_limit\",\"type\":\"uint256\"}],\"name\":\"createERC20TokenNetwork\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token_address\",\"type\":\"address\"}],\"name\":\"createERC20TokenNetworkWithoutLimits\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token_network_address\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"max_token_networks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"removeLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"secret_registry_address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement_timeout_max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settlement_timeout_min\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token_network_created\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"token_to_token_networks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_chain_id\":\"EIP-155 Chain-ID of the chain where this contract is deployed\",\"_max_token_networks\":\"the number of tokens that can be registered MAX_UINT256 means no limits\",\"_secret_registry_address\":\"The address of SecretRegistry that's used by all TokenNetworks created by this contract\",\"_settlement_timeout_max\":\"The longest settlement period (in number of blocks) that can be chosen at the channel opening\",\"_settlement_timeout_min\":\"The shortest settlement period (in number of blocks) that can be chosen at the channel opening\"}},\"contractExists(address)\":{\"params\":{\"contract_address\":\"The address to check whether a contract is deployed or not\"},\"returns\":{\"_0\":\"True if a contract exists, false otherwise\"}},\"createERC20TokenNetwork(address,uint256,uint256)\":{\"params\":{\"_token_address\":\"Ethereum address of an already deployed token, to be used in the new TokenNetwork contract\"}}},\"title\":\"TokenNetworkRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeController(address)\":{\"notice\":\"Changes the controller who is allowed to deprecate or remove limits. Can only be called by the controller.\"},\"contractExists(address)\":{\"notice\":\"Check if a contract exists\"},\"createERC20TokenNetwork(address,uint256,uint256)\":{\"notice\":\"Deploy a new TokenNetwork contract for the Token deployed at `_token_address`\"},\"removeLimits()\":{\"notice\":\"Removes the limit on the number of token networks. Can only be called by the controller.\"}},\"notice\":\"The TokenNetwork Registry deploys new TokenNetwork contracts for the Raiden Network protocol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"data/source/raiden/TokenNetworkRegistry.sol\":\"TokenNetworkRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":.=.\",\":lib=data/source/lib\",\":raiden=data/source/raiden\",\":services=data/source/services\",\":test=data/source/test\"]},\"sources\":{\"data/source/lib/ECVerify.sol\":{\"keccak256\":\"0xeced41e7578af77042e00fc68e482b754cd355da872bfdda95a0b74e3dbd90e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9838dc558bce37a7490ac84f834cb1cf33cba1e13438e1666be7011f03b0ac2\",\"dweb:/ipfs/QmUb9dn1FeZbJCNg5hN7wXapTcP5V52Q554bd97hhYr9qN\"]},\"data/source/lib/MessageType.sol\":{\"keccak256\":\"0xe4a3d54220ba19024c03fac9f8b3338245f2c4aa266627e6cdb5e97a2adcdee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b1d37be2f7d509e3c32f5e5cd5f58bcd67d11e907678e9343cccc9bc082476f\",\"dweb:/ipfs/QmTW6hUvkxXt5q7MbhtHPjWqdBd1tEC4bd1kFswDGhnvA6\"]},\"data/source/lib/TokenNetworkUtils.sol\":{\"keccak256\":\"0x9b7f52457a0d8e842eb6a64b9d30f044bbe1f4c6892d52c809924d837dc7ba75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://200eaf3a33fbb18518f21c88e3ece992a871738c725d4dd2c9e309f71adf7c6f\",\"dweb:/ipfs/QmX2WjHpEifYhj1ZMc8JJQMABvgCZ6XL4euq71cSXfmFpi\"]},\"data/source/raiden/Controllable.sol\":{\"keccak256\":\"0xccedede2950079f2e4dbe5f89f5a997bea0398828da90b6ef0f66bbd509d305c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b3ffa7945f7bd59dd46b622d69aa5970a5e858c690bf523d8151bf34b9d56c2\",\"dweb:/ipfs/QmcadWAn8FBfsxKrK9ScVCjHsjctBys2AgqGF8PWUij98y\"]},\"data/source/raiden/SecretRegistry.sol\":{\"keccak256\":\"0x828dbf9a344f66cb982df97f677d10942d1b163287b890860be40230b236642e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bde28a380d82203002375789cae1460df2128b7e21349f1c4436128ad581fed2\",\"dweb:/ipfs/QmZT8boB78rduGwZjPdwymuVuRQKhxh2N6D1uHbb5jtDZ8\"]},\"data/source/raiden/Token.sol\":{\"keccak256\":\"0x5a8ccb9fa426228d9e213164f22a94b0ac57f1aa15ab76ce88a96177edd7b0b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff1ddcfa729756503a156edda9aa65cbfd0522c449e0451ad3e5b5f72c2da256\",\"dweb:/ipfs/QmVQ4DeSBjo1W5obzasyT1re9jEQW2ydaMuj1GMa1cyKbV\"]},\"data/source/raiden/TokenNetwork.sol\":{\"keccak256\":\"0x88d6cb97eca333198c79ed2b6b86b9fac5edd629243c1261340f21125a4dc3de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b5cb209461763fd99a781a7f9b71275924a512f4ed81d285d54d372fe2bf0f\",\"dweb:/ipfs/QmPDVMJGH83DbHkHAdafhXZGcAMPZQP14wTLLam9996CDS\"]},\"data/source/raiden/TokenNetworkRegistry.sol\":{\"keccak256\":\"0x90be9abb744abe3aefe806766bbe23e3cb330eb6664c1ce31ef92e835d58d319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6111bbd6bf38ca7fa460d3868f98c11dd7ceb274d05beffceadc8e1fae314060\",\"dweb:/ipfs/QmW27Y6ySudin8TNA7QoNRoSMhJsQ6X9R5EYCJFmB2uzjc\"]},\"data/source/raiden/Utils.sol\":{\"keccak256\":\"0x3fb4df9cdadd3711bffff81a451868c7a1ee8a2f3ff1a20a4343def15cb38e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67e2deac2f8ae6d3fc41d84474d2d7f2a098a9e1da70c60ae4590a05495c20c1\",\"dweb:/ipfs/QmRgqjDcKhG7dW68FRKZyYKhYULXx8keftggJFTfUoDGex\"]}},\"version\":1}"
         },
         "TokenNetworkSignatureTest": {
             "abi": [
@@ -9390,12 +9390,12 @@
         "Token.sol": "d27aea835e95031bb3eeca86d9ffd97594d88b5b94d0c9946b42c0f4ef108bea",
         "TokenNetwork.sol": "36ea590d16f2f4db9eb4ee2f1a685e3ff6e1aa008ba430f8eee136c72cb45627",
         "TokenNetworkInternalsTest.sol": "e7d6fdbc4ce073588ca58b29a265afba062f878a5be63e4b8c0dd089df9f45c1",
-        "TokenNetworkRegistry.sol": "606a17e0a1a4fb324a82727b2ed0bf1ff247fd9cb598212bc302f78222dc85d7",
+        "TokenNetworkRegistry.sol": "6a059053a0413c078879beb1bed1543a7a976af3f3799d55b8627ab4cffb7752",
         "TokenNetworkUtils.sol": "e19716e9af113ee993a7b49b300cdc585710aa820efa66e46f249f4610d646e8",
         "UDCTransfer.sol": "ee33253504f9fd23d276ad56607488906c263714d3627096f4ccecc73528320a",
         "UserDeposit.sol": "dc348ca81370cdb3a0256665c990677d8d1cbbf86ad39b54683032f34b00d96a",
         "Utils.sol": "59fdb38e1ca1571b5ffd16f3815eb55742d33fc7232e7872a12a3f5add1554d6"
     },
     "contracts_version": null,
-    "overall_checksum": "72eb1629545f913ed8e371a128d640c0edd066f2c1d22af81b47e613eeedcb2a"
+    "overall_checksum": "57a52fe8fe0fcfb2441412dcaf61eac6ed84e495c64fe0b67261551435f9b399"
 }
\ No newline at end of file
diff --git a/raiden_contracts/data/gas.json b/raiden_contracts/data/gas.json
index 9a796522f..222f110ba 100644
--- a/raiden_contracts/data/gas.json
+++ b/raiden_contracts/data/gas.json
@@ -1,12 +1,12 @@
 {
-    "CustomToken.approve": 45996,
+    "CustomToken.approve": 45972,
     "CustomToken.mint": 50543,
     "CustomToken.transfer": 36269,
-    "CustomToken.transferFrom": 28799,
+    "CustomToken.transferFrom": 28787,
     "MonitoringService.claimReward": 45243,
-    "MonitoringService.monitor": 225966,
+    "MonitoringService.monitor": 225964,
     "OneToN.bulkClaim 1 ious": 105608,
-    "OneToN.bulkClaim 6 ious": 159491,
+    "OneToN.bulkClaim 6 ious": 159467,
     "OneToN.claim": 103055,
     "SecretRegistry.registerSecret": 46177,
     "SecretRegistry.registerSecretBatch1": 46603,
@@ -15,21 +15,21 @@
     "ServiceRegistry.deposit": 459029,
     "ServiceRegistry.setURL": 47130,
     "TokenNetwork DEPLOYMENT": 3045825,
-    "TokenNetwork.closeChannel": 120772,
-    "TokenNetwork.cooperativeSettle": 113248,
-    "TokenNetwork.openChannel": 113243,
-    "TokenNetwork.openChannelWithDeposit": 149283,
-    "TokenNetwork.setTotalDeposit": 55801,
-    "TokenNetwork.setTotalWithdraw": 116661,
-    "TokenNetwork.settleChannel": 111230,
-    "TokenNetwork.unlock 1 locks": 41675,
-    "TokenNetwork.unlock 6 locks": 56041,
-    "TokenNetwork.updateNonClosingBalanceProof": 92931,
-    "TokenNetworkRegistry DEPLOYMENT": 3470139,
+    "TokenNetwork.closeChannel": 120762,
+    "TokenNetwork.cooperativeSettle": 113260,
+    "TokenNetwork.openChannel": 113244,
+    "TokenNetwork.openChannelWithDeposit": 149281,
+    "TokenNetwork.setTotalDeposit": 55813,
+    "TokenNetwork.setTotalWithdraw": 116644,
+    "TokenNetwork.settleChannel": 111242,
+    "TokenNetwork.unlock 1 locks": 41687,
+    "TokenNetwork.unlock 6 locks": 56053,
+    "TokenNetwork.updateNonClosingBalanceProof": 92933,
+    "TokenNetworkRegistry DEPLOYMENT": 3492251,
     "TokenNetworkRegistry createERC20TokenNetwork": 2894362,
     "TokenNetworkUtils DEPLOYMENT": 246564,
-    "UserDeposit.deposit": 97538,
-    "UserDeposit.deposit (increase balance)": 33338,
+    "UserDeposit.deposit": 97526,
+    "UserDeposit.deposit (increase balance)": 33326,
     "UserDeposit.planWithdraw": 69621,
     "UserDeposit.withdraw": 48676
 }
\ No newline at end of file
diff --git a/raiden_contracts/data/source/raiden/TokenNetworkRegistry.sol b/raiden_contracts/data/source/raiden/TokenNetworkRegistry.sol
index 97ac98090..877440b37 100644
--- a/raiden_contracts/data/source/raiden/TokenNetworkRegistry.sol
+++ b/raiden_contracts/data/source/raiden/TokenNetworkRegistry.sol
@@ -26,7 +26,7 @@ contract TokenNetworkRegistry is Utils, Controllable {
     event TokenNetworkCreated(address indexed token_address, address indexed token_network_address);
 
     modifier canCreateTokenNetwork() {
-        require(token_network_created < max_token_networks, "registry full");
+        require(token_network_created < max_token_networks, "TNR: registry full");
         _;
     }
 
@@ -46,13 +46,13 @@ contract TokenNetworkRegistry is Utils, Controllable {
         uint256 _settlement_timeout_max,
         uint256 _max_token_networks
     ) {
-        require(_chain_id > 0);
-        require(_settlement_timeout_min > 0);
-        require(_settlement_timeout_max > 0);
-        require(_settlement_timeout_max > _settlement_timeout_min);
-        require(_secret_registry_address != address(0x0));
-        require(contractExists(_secret_registry_address));
-        require(_max_token_networks > 0);
+        require(_chain_id > 0, "TNR: invalid chain id");
+        require(_settlement_timeout_min > 0, "TNR: invalid settle timeout min");
+        require(_settlement_timeout_max > 0, "TNR: invalid settle timeout max");
+        require(_settlement_timeout_max > _settlement_timeout_min, "TNR: invalid settle timeouts");
+        require(_secret_registry_address != address(0x0), "TNR: invalid SR address");
+        require(contractExists(_secret_registry_address), "TNR: invalid SR");
+        require(_max_token_networks > 0, "TNR: invalid TN limit");
         secret_registry_address = _secret_registry_address;
         chain_id = _chain_id;
         settlement_timeout_min = _settlement_timeout_min;
@@ -78,11 +78,11 @@ contract TokenNetworkRegistry is Utils, Controllable {
         // After the limits have been removed, new token networks must be created without limits
         // See https://github.com/raiden-network/raiden-contracts/issues/1416
         if (max_token_networks == MAX_SAFE_UINT256) {
-            require(_channel_participant_deposit_limit == MAX_SAFE_UINT256, "Limits must be set to MAX_INT");
-            require(_token_network_deposit_limit == MAX_SAFE_UINT256, "Limits must be set to MAX_INT");
+            require(_channel_participant_deposit_limit == MAX_SAFE_UINT256, "TNR: limits must be set to MAX_INT");
+            require(_token_network_deposit_limit == MAX_SAFE_UINT256, "TNR: limits must be set to MAX_INT");
         }
 
-        require(token_to_token_networks[_token_address] == address(0x0));
+        require(token_to_token_networks[_token_address] == address(0x0), "TNR: token already registered");
 
         // We limit the number of token networks to 1 for the Bug Bounty release
         token_network_created = token_network_created + 1;


Test patch:
diff --git a/raiden_contracts/tests/test_contract_limits.py b/raiden_contracts/tests/test_contract_limits.py
index 430aa0706..5eafd3f58 100644
--- a/raiden_contracts/tests/test_contract_limits.py
+++ b/raiden_contracts/tests/test_contract_limits.py
@@ -46,6 +46,15 @@ def test_register_three_but_not_four(
             token_network_deposit_limit,
         )
     )
+    # Registering the same token again must fail
+    with pytest.raises(TransactionFailed, match="TNR: token already registered"):
+        call_and_transact(
+            token_network_registry.functions.createERC20TokenNetwork(
+                token0.address,
+                channel_participant_deposit_limit,
+                token_network_deposit_limit,
+            )
+        )
     call_and_transact(
         token_network_registry.functions.createERC20TokenNetwork(
             token1.address,
@@ -60,7 +69,7 @@ def test_register_three_but_not_four(
             token_network_deposit_limit,
         )
     )
-    with pytest.raises(TransactionFailed, match="registry full"):
+    with pytest.raises(TransactionFailed, match="TNR: registry full"):
         token_network_registry.functions.createERC20TokenNetwork(
             token3.address,
             channel_participant_deposit_limit,
@@ -69,7 +78,7 @@ def test_register_three_but_not_four(
 
     # Now remove the limit and try again
     call_and_transact(token_network_registry.functions.removeLimits(), {"from": DEPLOYER_ADDRESS})
-    with pytest.raises(TransactionFailed, match="Limits must be set to MAX_INT"):
+    with pytest.raises(TransactionFailed, match="TNR: limits must be set to MAX_INT"):
         call_and_transact(
             token_network_registry.functions.createERC20TokenNetwork(
                 token4.address,
diff --git a/raiden_contracts/tests/test_token_network_registry.py b/raiden_contracts/tests/test_token_network_registry.py
index ebe82a6f6..b9a60b1da 100644
--- a/raiden_contracts/tests/test_token_network_registry.py
+++ b/raiden_contracts/tests/test_token_network_registry.py
@@ -105,7 +105,7 @@ def test_constructor_call(
         )
 
     # failure with chain ID zero
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid chain id"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=0,
@@ -154,7 +154,7 @@ def test_constructor_call(
         )
 
     # failure with Ethereum accounts that doesn't look like a SecretRegistry
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid SR address"):
         get_token_network_registry(
             _secret_registry_address=EMPTY_ADDRESS,
             _chain_id=chain_id,
@@ -162,7 +162,7 @@ def test_constructor_call(
             _settlement_timeout_max=settle_max,
             _max_token_networks=1,
         )
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid SR"):
         get_token_network_registry(
             _secret_registry_address=A,
             _chain_id=chain_id,
@@ -172,7 +172,7 @@ def test_constructor_call(
         )
 
     # failures with chain_id zero
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid chain id"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=0,
@@ -180,7 +180,7 @@ def test_constructor_call(
             _settlement_timeout_max=settle_max,
             _max_token_networks=1,
         )
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid chain id"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=0,
@@ -188,7 +188,7 @@ def test_constructor_call(
             _settlement_timeout_max=0,
             _max_token_networks=1,
         )
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid chain id"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=0,
@@ -198,7 +198,7 @@ def test_constructor_call(
         )
 
     # failures with nonsense challenge periods
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid settle timeout min"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=chain_id,
@@ -206,7 +206,7 @@ def test_constructor_call(
             _settlement_timeout_max=settle_max,
             _max_token_networks=1,
         )
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid settle timeout max"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=chain_id,
@@ -214,7 +214,7 @@ def test_constructor_call(
             _settlement_timeout_max=0,
             _max_token_networks=1,
         )
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid settle timeouts"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=chain_id,
@@ -224,11 +224,11 @@ def test_constructor_call(
         )
 
     # failures with nonsense token number limits
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: invalid TN limit"):
         get_token_network_registry(
             _secret_registry_address=secret_registry_contract.address,
             _chain_id=chain_id,
-            _settlement_timeout_min=0,
+            _settlement_timeout_min=settle_min,
             _settlement_timeout_max=settle_max,
             _max_token_networks=0,
         )
@@ -421,7 +421,7 @@ def test_create_erc20_token_network_twice_fails(
         {"from": DEPLOYER_ADDRESS},
     )
 
-    with pytest.raises(TransactionFailed):
+    with pytest.raises(TransactionFailed, match="TNR: registry full"):
         token_network_registry_contract.functions.createERC20TokenNetwork(
             custom_token.address,
             channel_participant_deposit_limit,