diff --git a/abis/ERC20Template.json b/abis/ERC20Template.json index b82c453..28aac98 100644 --- a/abis/ERC20Template.json +++ b/abis/ERC20Template.json @@ -115,6 +115,31 @@ "name": "CleanedPermissions", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "ConsumeMarketFees", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -228,31 +253,6 @@ "name": "NewPool", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "name": "OrderMarketFees", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -308,6 +308,31 @@ "name": "OrderStarted", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "PublishMarketFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "PublishMarketFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "PublishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "PublishMarketFees", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1236,8 +1261,8 @@ "type": "function" } ], - "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b61410f806200017f6000396000f3fe60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b036600461369e565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613de2565b34801561031357600080fd5b5061032761032236600461383f565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c6103713660046138d2565b61091d565b34801561038257600080fd5b50610327610391366004613711565b610a64565b3480156103a257600080fd5b5061025c6103b136600461369e565b610b0e565b3480156103c257600080fd5b5061025c6103d136600461369e565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b5061032761049136600461383f565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed36600461383f565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613bcd565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c61054236600461369e565b610e79565b34801561055357600080fd5b5061025c610562366004613711565b610fd5565b34801561057357600080fd5b50610278610582366004613a22565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b636600461369e565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec36600461383f565b611380565b3480156105fd57600080fd5b5061034861060c36600461369e565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e3660046137c9565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c61068336600461369e565b611632565b34801561069457600080fd5b506103276106a336600461383f565b6116dd565b3480156106b457600080fd5b506103276106c336600461383f565b611776565b3480156106d457600080fd5b506103276106e336600461369e565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c36600461369e565b611783565b34801561072d57600080fd5b5061025c61073c366004613ad6565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613931565b611989565b34801561078257600080fd5b5061025c610791366004613752565b611ac3565b3480156107a257600080fd5b506103486107b13660046136d8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613bcd565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c61087036600461386b565b611de3565b6060600780546108849061401e565b80601f01602080910402602001604051908101604052809291908181526020018280546108b09061401e565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b6000610914338484612689565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613b48565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613e37565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d856127ad565b5050505050565b6000610a718484846128af565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b038533858403612689565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613b48565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613e37565b610bb981612a7e565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613b48565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613e37565b610bb981612adf565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690613ec1565b612689565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612b3f565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612b52565b5050565b610bb93382612c31565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff91906136bb565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612d7f565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613b48565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612e2e565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613b48565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613e37565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c61408a565b60200260200101516127ad565b62250490846003815181106111b0576111b061408a565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f61408a565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613d36565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e991906136bb565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b96782846000815181106113205761132061408a565b60200260200101518560018151811061133b5761133b61408a565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f78333848403612689565b6114018383612c31565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613b48565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613e37565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613cf6565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613abd565b90506000826004815181106115a0576115a061408a565b602002602001015111156115b7576115b7846127ad565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec61408a565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108849061401e565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613b48565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613e37565b610bb9816127ad565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c3385858403612689565b5060019392505050565b60006109143384846128af565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613b48565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613e37565b610bb981612e50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613b48565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613e37565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613dac565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a7640000613ed9565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d613f9e565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050613f12565b612f5e565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b5983614059565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca898989612689565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da491906136bb565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b6000600f54118015611e6e5750600e546001600160a01b031615155b8015611e845750600d546001600160a01b031615155b1561208d57600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190613aa0565b611f6f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611f7d906064613450565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690611fa9908561345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611fef57600080fd5b505af1158015612003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120279190613aa0565b61208d5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b6000831180156120a557506001600160a01b03841615155b80156120b957506001600160a01b03851615155b15612295576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121449190613aa0565b6121905760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b61219b836064613450565b91506001600160a01b03841663a9059cbb866121b7868661345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122359190613aa0565b6122955760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6000811180156122a55750600082115b80156122be5750600e546001600160a01b038581169116145b156123be57600a546001600160a01b038086169163a9059cbb91166122e38486612b3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123619190613aa0565b6123b95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b6125bd565b6000811180156123d85750600e546001600160a01b031615155b156124c057600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190613aa0565b6124c05760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b6000821180156124d857506001600160a01b03841615155b156125bd57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561252b57600080fd5b505af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613aa0565b6125bd5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b6125ce6125c8611d15565b88611776565b50600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b8560405161267791815260200190565b60405180910390a35050505050505050565b6001600160a01b0383166126eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b03821661274c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128175760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b0382166129755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b038316600090815260208190526040902054818110156129ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612a24908490613ec1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7091815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906128a39042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906128a39042904390918252602082015260400190565b6000612b4b8284613ec1565b9392505050565b6001600160a01b038216612ba85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612bba9190613ec1565b90915550506001600160a01b03821660009081526020819052604081208054839290612be7908490613ec1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612c915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612d055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612d34908490613efb565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612de55760006005600060068481548110612da557612da561408a565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612ddd81614059565b915050612d82565b50612df260066000613468565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612eca5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016128a3565b60008084600081518110612f7457612f7461408a565b60200260200101519050600085600181518110612f9357612f9361408a565b6020026020010151905060006001600160a01b0316826001600160a01b031614156130155760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166130915760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b846000815181106130a4576130a461408a565b6020026020010151600014156131085760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b8460008151811061311b5761311b61408a565b60200260200101516009819055508760008151811061313c5761313c61408a565b602002602001015160079080519060200190613159929190613486565b508760018151811061316d5761316d61408a565b60200260200101516008908051906020019061318a929190613486565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106131bb576131bb61408a565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161321890889060009061118c5761118c61408a565b60006001600160a01b0316876001815181106132365761323661408a565b60200260200101516001600160a01b0316146132e05761326f876001815181106132625761326261408a565b6020026020010151612e2e565b866001815181106132825761328261408a565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516132d7929190918252602082015260400190565b60405180910390a35b866002815181106132f3576132f361408a565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106133345761333461408a565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106133755761337561408a565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516133b89190613c5a565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612b4b8284613ed9565b6000612b4b8284613efb565b5080546000825590600052602060002090810190610bb9919061350a565b8280546134929061401e565b90600052602060002090601f0160209004810192826134b457600085556134fa565b82601f106134cd57805160ff19168380011785556134fa565b828001600101855582156134fa579182015b828111156134fa5782518255916020019190600101906134df565b5061350692915061350a565b5090565b5b80821115613506576000815560010161350b565b600067ffffffffffffffff831115613539576135396140a0565b61354c601f8401601f1916602001613e6c565b905082815283838301111561356057600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261358957600080fd5b50813567ffffffffffffffff8111156135a157600080fd5b6020830191508360208260051b85010111156135bc57600080fd5b9250929050565b600082601f8301126135d457600080fd5b813560206135e96135e483613e9d565b613e6c565b80838252828201915082860187848660051b890101111561360957600080fd5b60005b8581101561363157813561361f816140b6565b8452928401929084019060010161360c565b5090979650505050505050565b600082601f83011261364f57600080fd5b8135602061365f6135e483613e9d565b80838252828201915082860187848660051b890101111561367f57600080fd5b60005b8581101561363157813584529284019290840190600101613682565b6000602082840312156136b057600080fd5b8135612b4b816140b6565b6000602082840312156136cd57600080fd5b8151612b4b816140b6565b600080604083850312156136eb57600080fd5b82356136f6816140b6565b91506020830135613706816140b6565b809150509250929050565b60008060006060848603121561372657600080fd5b8335613731816140b6565b92506020840135613741816140b6565b929592945050506040919091013590565b600080600080600080600060e0888a03121561376d57600080fd5b8735613778816140b6565b96506020880135613788816140b6565b95506040880135945060608801359350608088013560ff811681146137ac57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156137de57600080fd5b83356137e9816140b6565b9250602084013567ffffffffffffffff8082111561380657600080fd5b613812878388016135c3565b9350604086013591508082111561382857600080fd5b506138358682870161363e565b9150509250925092565b6000806040838503121561385257600080fd5b823561385d816140b6565b946020939093013593505050565b60008060008060008060c0878903121561388457600080fd5b863561388f816140b6565b9550602087013594506040870135935060608701356138ad816140b6565b925060808701356138bd816140b6565b8092505060a087013590509295509295509295565b600080600080600060a086880312156138ea57600080fd5b85356138f5816140b6565b945060208601359350604086013592506060860135613913816140cb565b91506080860135613923816140b6565b809150509295509295909350565b60008060008060008060008060008060a08b8d03121561395057600080fd5b8a3567ffffffffffffffff8082111561396857600080fd5b6139748e838f01613577565b909c509a5060208d013591508082111561398d57600080fd5b6139998e838f01613577565b909a50985060408d01359150808211156139b257600080fd5b6139be8e838f01613577565b909850965060608d01359150808211156139d757600080fd5b6139e38e838f01613577565b909650945060808d01359150808211156139fc57600080fd5b50613a098d828e01613577565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613a3757600080fd5b833567ffffffffffffffff80821115613a4f57600080fd5b613a5b8783880161363e565b94506020860135915080821115613a7157600080fd5b613a7d8783880161363e565b93506040860135915080821115613a9357600080fd5b50613835868287016135c3565b600060208284031215613ab257600080fd5b8151612b4b816140cb565b600060208284031215613acf57600080fd5b5051919050565b60008060208385031215613ae957600080fd5b823567ffffffffffffffff80821115613b0157600080fd5b818501915085601f830112613b1557600080fd5b813581811115613b2457600080fd5b866020828501011115613b3657600080fd5b60209290920196919550909350505050565b600060808284031215613b5a57600080fd5b6040516080810181811067ffffffffffffffff82111715613b7d57613b7d6140a0565b6040528251613b8b816140cb565b81526020830151613b9b816140cb565b60208201526040830151613bae816140cb565b60408201526060830151613bc1816140cb565b60608201529392505050565b600060208284031215613bdf57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613c1f5781516001600160a01b031687529582019590820190600101613bfa565b509495945050505050565b600081518084526020808501945080840160005b83811015613c1f57815187529582019590820190600101613c3e565b600080835481600182811c915080831680613c7657607f831692505b6020808410821415613c9657634e487b7160e01b86526022600452602486fd5b818015613caa5760018114613cbb57613ce8565b60ff19861689528489019650613ce8565b60008a81526020902060005b86811015613ce05781548b820152908501908301613cc7565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613d1a90830185613be6565b8281036040840152613d2c8185613c2a565b9695505050505050565b60008186825b6002811015613d645781516001600160a01b0316835260209283019290910190600101613d3c565b50505060a06040830152613d7b60a0830186613c2a565b8281036060840152613d8d8186613c2a565b90508281036080840152613da18185613be6565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613e0f57858101830151858201604001528201613df3565b81811115613e21576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e9557613e956140a0565b604052919050565b600067ffffffffffffffff821115613eb757613eb76140a0565b5060051b60200190565b60008219821115613ed457613ed4614074565b500190565b600082613ef657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613f0d57613f0d614074565b500390565b6000613f206135e484613e9d565b808482526020808301925084368760051b87011115613f3e57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613f6057600080fd5b870136601f820112613f7157600080fd5b613f7f36823586840161351f565b8652509382019390820190600101613f41565b50919695505050505050565b6000613fac6135e484613e9d565b808482526020808301925084368760051b87011115613fca57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613fec57600080fd5b870136601f820112613ffd57600080fd5b61400b36823586840161351f565b8652509382019390820190600101613fcd565b600181811c9082168061403257607f821691505b6020821081141561405357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561406d5761406d614074565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea264697066735822122038e80733697a8b6fee40b6bffcc7b9a64e18064240c8751cb1c5b429c6f89b6364736f6c63430008070033", - "deployedBytecode": "0x60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b036600461369e565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613de2565b34801561031357600080fd5b5061032761032236600461383f565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c6103713660046138d2565b61091d565b34801561038257600080fd5b50610327610391366004613711565b610a64565b3480156103a257600080fd5b5061025c6103b136600461369e565b610b0e565b3480156103c257600080fd5b5061025c6103d136600461369e565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b5061032761049136600461383f565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed36600461383f565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613bcd565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c61054236600461369e565b610e79565b34801561055357600080fd5b5061025c610562366004613711565b610fd5565b34801561057357600080fd5b50610278610582366004613a22565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b636600461369e565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec36600461383f565b611380565b3480156105fd57600080fd5b5061034861060c36600461369e565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e3660046137c9565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c61068336600461369e565b611632565b34801561069457600080fd5b506103276106a336600461383f565b6116dd565b3480156106b457600080fd5b506103276106c336600461383f565b611776565b3480156106d457600080fd5b506103276106e336600461369e565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c36600461369e565b611783565b34801561072d57600080fd5b5061025c61073c366004613ad6565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613931565b611989565b34801561078257600080fd5b5061025c610791366004613752565b611ac3565b3480156107a257600080fd5b506103486107b13660046136d8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613bcd565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c61087036600461386b565b611de3565b6060600780546108849061401e565b80601f01602080910402602001604051908101604052809291908181526020018280546108b09061401e565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b6000610914338484612689565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613b48565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613e37565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d856127ad565b5050505050565b6000610a718484846128af565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b038533858403612689565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613b48565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613e37565b610bb981612a7e565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613b48565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613e37565b610bb981612adf565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690613ec1565b612689565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612b3f565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612b52565b5050565b610bb93382612c31565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff91906136bb565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612d7f565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613b48565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612e2e565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613b48565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613e37565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c61408a565b60200260200101516127ad565b62250490846003815181106111b0576111b061408a565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f61408a565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613d36565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e991906136bb565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b96782846000815181106113205761132061408a565b60200260200101518560018151811061133b5761133b61408a565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f78333848403612689565b6114018383612c31565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613b48565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613e37565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613cf6565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613abd565b90506000826004815181106115a0576115a061408a565b602002602001015111156115b7576115b7846127ad565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec61408a565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108849061401e565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613b48565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613e37565b610bb9816127ad565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c3385858403612689565b5060019392505050565b60006109143384846128af565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613b48565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613e37565b610bb981612e50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613b48565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613e37565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613dac565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a7640000613ed9565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d613f9e565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050613f12565b612f5e565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b5983614059565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca898989612689565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da491906136bb565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b6000600f54118015611e6e5750600e546001600160a01b031615155b8015611e845750600d546001600160a01b031615155b1561208d57600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190613aa0565b611f6f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611f7d906064613450565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690611fa9908561345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611fef57600080fd5b505af1158015612003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120279190613aa0565b61208d5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b6000831180156120a557506001600160a01b03841615155b80156120b957506001600160a01b03851615155b15612295576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121449190613aa0565b6121905760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b61219b836064613450565b91506001600160a01b03841663a9059cbb866121b7868661345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122359190613aa0565b6122955760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6000811180156122a55750600082115b80156122be5750600e546001600160a01b038581169116145b156123be57600a546001600160a01b038086169163a9059cbb91166122e38486612b3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123619190613aa0565b6123b95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b6125bd565b6000811180156123d85750600e546001600160a01b031615155b156124c057600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190613aa0565b6124c05760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b6000821180156124d857506001600160a01b03841615155b156125bd57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561252b57600080fd5b505af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613aa0565b6125bd5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b6125ce6125c8611d15565b88611776565b50600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b8560405161267791815260200190565b60405180910390a35050505050505050565b6001600160a01b0383166126eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b03821661274c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128175760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b0382166129755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b038316600090815260208190526040902054818110156129ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612a24908490613ec1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7091815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906128a39042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906128a39042904390918252602082015260400190565b6000612b4b8284613ec1565b9392505050565b6001600160a01b038216612ba85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612bba9190613ec1565b90915550506001600160a01b03821660009081526020819052604081208054839290612be7908490613ec1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612c915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612d055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612d34908490613efb565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612de55760006005600060068481548110612da557612da561408a565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612ddd81614059565b915050612d82565b50612df260066000613468565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612eca5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016128a3565b60008084600081518110612f7457612f7461408a565b60200260200101519050600085600181518110612f9357612f9361408a565b6020026020010151905060006001600160a01b0316826001600160a01b031614156130155760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166130915760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b846000815181106130a4576130a461408a565b6020026020010151600014156131085760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b8460008151811061311b5761311b61408a565b60200260200101516009819055508760008151811061313c5761313c61408a565b602002602001015160079080519060200190613159929190613486565b508760018151811061316d5761316d61408a565b60200260200101516008908051906020019061318a929190613486565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106131bb576131bb61408a565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161321890889060009061118c5761118c61408a565b60006001600160a01b0316876001815181106132365761323661408a565b60200260200101516001600160a01b0316146132e05761326f876001815181106132625761326261408a565b6020026020010151612e2e565b866001815181106132825761328261408a565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516132d7929190918252602082015260400190565b60405180910390a35b866002815181106132f3576132f361408a565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106133345761333461408a565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106133755761337561408a565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516133b89190613c5a565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612b4b8284613ed9565b6000612b4b8284613efb565b5080546000825590600052602060002090810190610bb9919061350a565b8280546134929061401e565b90600052602060002090601f0160209004810192826134b457600085556134fa565b82601f106134cd57805160ff19168380011785556134fa565b828001600101855582156134fa579182015b828111156134fa5782518255916020019190600101906134df565b5061350692915061350a565b5090565b5b80821115613506576000815560010161350b565b600067ffffffffffffffff831115613539576135396140a0565b61354c601f8401601f1916602001613e6c565b905082815283838301111561356057600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261358957600080fd5b50813567ffffffffffffffff8111156135a157600080fd5b6020830191508360208260051b85010111156135bc57600080fd5b9250929050565b600082601f8301126135d457600080fd5b813560206135e96135e483613e9d565b613e6c565b80838252828201915082860187848660051b890101111561360957600080fd5b60005b8581101561363157813561361f816140b6565b8452928401929084019060010161360c565b5090979650505050505050565b600082601f83011261364f57600080fd5b8135602061365f6135e483613e9d565b80838252828201915082860187848660051b890101111561367f57600080fd5b60005b8581101561363157813584529284019290840190600101613682565b6000602082840312156136b057600080fd5b8135612b4b816140b6565b6000602082840312156136cd57600080fd5b8151612b4b816140b6565b600080604083850312156136eb57600080fd5b82356136f6816140b6565b91506020830135613706816140b6565b809150509250929050565b60008060006060848603121561372657600080fd5b8335613731816140b6565b92506020840135613741816140b6565b929592945050506040919091013590565b600080600080600080600060e0888a03121561376d57600080fd5b8735613778816140b6565b96506020880135613788816140b6565b95506040880135945060608801359350608088013560ff811681146137ac57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156137de57600080fd5b83356137e9816140b6565b9250602084013567ffffffffffffffff8082111561380657600080fd5b613812878388016135c3565b9350604086013591508082111561382857600080fd5b506138358682870161363e565b9150509250925092565b6000806040838503121561385257600080fd5b823561385d816140b6565b946020939093013593505050565b60008060008060008060c0878903121561388457600080fd5b863561388f816140b6565b9550602087013594506040870135935060608701356138ad816140b6565b925060808701356138bd816140b6565b8092505060a087013590509295509295509295565b600080600080600060a086880312156138ea57600080fd5b85356138f5816140b6565b945060208601359350604086013592506060860135613913816140cb565b91506080860135613923816140b6565b809150509295509295909350565b60008060008060008060008060008060a08b8d03121561395057600080fd5b8a3567ffffffffffffffff8082111561396857600080fd5b6139748e838f01613577565b909c509a5060208d013591508082111561398d57600080fd5b6139998e838f01613577565b909a50985060408d01359150808211156139b257600080fd5b6139be8e838f01613577565b909850965060608d01359150808211156139d757600080fd5b6139e38e838f01613577565b909650945060808d01359150808211156139fc57600080fd5b50613a098d828e01613577565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613a3757600080fd5b833567ffffffffffffffff80821115613a4f57600080fd5b613a5b8783880161363e565b94506020860135915080821115613a7157600080fd5b613a7d8783880161363e565b93506040860135915080821115613a9357600080fd5b50613835868287016135c3565b600060208284031215613ab257600080fd5b8151612b4b816140cb565b600060208284031215613acf57600080fd5b5051919050565b60008060208385031215613ae957600080fd5b823567ffffffffffffffff80821115613b0157600080fd5b818501915085601f830112613b1557600080fd5b813581811115613b2457600080fd5b866020828501011115613b3657600080fd5b60209290920196919550909350505050565b600060808284031215613b5a57600080fd5b6040516080810181811067ffffffffffffffff82111715613b7d57613b7d6140a0565b6040528251613b8b816140cb565b81526020830151613b9b816140cb565b60208201526040830151613bae816140cb565b60408201526060830151613bc1816140cb565b60608201529392505050565b600060208284031215613bdf57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613c1f5781516001600160a01b031687529582019590820190600101613bfa565b509495945050505050565b600081518084526020808501945080840160005b83811015613c1f57815187529582019590820190600101613c3e565b600080835481600182811c915080831680613c7657607f831692505b6020808410821415613c9657634e487b7160e01b86526022600452602486fd5b818015613caa5760018114613cbb57613ce8565b60ff19861689528489019650613ce8565b60008a81526020902060005b86811015613ce05781548b820152908501908301613cc7565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613d1a90830185613be6565b8281036040840152613d2c8185613c2a565b9695505050505050565b60008186825b6002811015613d645781516001600160a01b0316835260209283019290910190600101613d3c565b50505060a06040830152613d7b60a0830186613c2a565b8281036060840152613d8d8186613c2a565b90508281036080840152613da18185613be6565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613e0f57858101830151858201604001528201613df3565b81811115613e21576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e9557613e956140a0565b604052919050565b600067ffffffffffffffff821115613eb757613eb76140a0565b5060051b60200190565b60008219821115613ed457613ed4614074565b500190565b600082613ef657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613f0d57613f0d614074565b500390565b6000613f206135e484613e9d565b808482526020808301925084368760051b87011115613f3e57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613f6057600080fd5b870136601f820112613f7157600080fd5b613f7f36823586840161351f565b8652509382019390820190600101613f41565b50919695505050505050565b6000613fac6135e484613e9d565b808482526020808301925084368760051b87011115613fca57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613fec57600080fd5b870136601f820112613ffd57600080fd5b61400b36823586840161351f565b8652509382019390820190600101613fcd565b600181811c9082168061403257607f821691505b6020821081141561405357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561406d5761406d614074565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea264697066735822122038e80733697a8b6fee40b6bffcc7b9a64e18064240c8751cb1c5b429c6f89b6364736f6c63430008070033", + "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614284806200017f6000396000f3fe60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b0366004613813565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613f57565b34801561031357600080fd5b506103276103223660046139b4565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c610371366004613a47565b61091d565b34801561038257600080fd5b50610327610391366004613886565b610a64565b3480156103a257600080fd5b5061025c6103b1366004613813565b610b0e565b3480156103c257600080fd5b5061025c6103d1366004613813565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b506103276104913660046139b4565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed3660046139b4565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613d42565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c610542366004613813565b610e79565b34801561055357600080fd5b5061025c610562366004613886565b610fd5565b34801561057357600080fd5b50610278610582366004613b97565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b6366004613813565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec3660046139b4565b611380565b3480156105fd57600080fd5b5061034861060c366004613813565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e36600461393e565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c610683366004613813565b611632565b34801561069457600080fd5b506103276106a33660046139b4565b6116dd565b3480156106b457600080fd5b506103276106c33660046139b4565b611776565b3480156106d457600080fd5b506103276106e3366004613813565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c366004613813565b611783565b34801561072d57600080fd5b5061025c61073c366004613c4b565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613aa6565b611989565b34801561078257600080fd5b5061025c6107913660046138c7565b611ac3565b3480156107a257600080fd5b506103486107b136600461384d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613d42565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c6108703660046139e0565b611de3565b60606007805461088490614193565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614193565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60006109143384846127fe565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613cbd565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613fac565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d85612922565b5050505050565b6000610a71848484612a24565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b0385338584036127fe565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613cbd565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613fac565b610bb981612bf3565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613cbd565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613fac565b610bb981612c54565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690614036565b6127fe565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612cb4565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612cc7565b5050565b610bb93382612da6565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190613830565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612ef4565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613cbd565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612fa3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613cbd565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613fac565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c6141ff565b6020026020010151612922565b62250490846003815181106111b0576111b06141ff565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f6141ff565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613eab565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190613830565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9678284600081518110611320576113206141ff565b60200260200101518560018151811061133b5761133b6141ff565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f783338484036127fe565b6114018383612da6565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613cbd565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613fac565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613e6b565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613c32565b90506000826004815181106115a0576115a06141ff565b602002602001015111156115b7576115b784612922565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec6141ff565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461088490614193565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613cbd565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613fac565b610bb981612922565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c33858584036127fe565b5060019392505050565b6000610914338484612a24565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613cbd565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613fac565b610bb981612fc5565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613cbd565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613fac565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613f21565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a764000061404e565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d614113565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050614087565b6130d3565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b59836141ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca8989896127fe565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190613830565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f54118015611ed15750600e546001600160a01b031615155b8015611ee75750600d546001600160a01b031615155b1561214757600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613c15565b611fd25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611fe09060646135c5565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061200c90856135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561205257600080fd5b505af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613c15565b6120f05760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061213590856135d1565b60405190815260200160405180910390a35b60008311801561215f57506001600160a01b03841615155b801561217357506001600160a01b03851615155b1561239a576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190613c15565b61224a5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b6122558360646135c5565b91506001600160a01b03841663a9059cbb8661227186866135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190613c15565b61234f5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d161238886866135d1565b60405190815260200160405180910390a35b6000811180156123aa5750600082115b80156123c35750600e546001600160a01b038581169116145b80156123d757506001600160a01b03841615155b1561255f57600a546001600160a01b038086169163a9059cbb91166123fc8486612cb4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613c15565b6124d25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a36127ed565b6000811180156125795750600e546001600160a01b031615155b156126ab57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125ce57600080fd5b505af11580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190613c15565b6126615760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b6000821180156126c357506001600160a01b03841615155b156127ed57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613c15565b6127a85760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b611cca6127f8611d15565b88611776565b6001600160a01b0383166128605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b0382166128c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561298c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b038316612a885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b038216612aea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b03831660009081526020819052604090205481811015612b625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b99908490614036565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612be591815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612a189042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612a189042904390918252602082015260400190565b6000612cc08284614036565b9392505050565b6001600160a01b038216612d1d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612d2f9190614036565b90915550506001600160a01b03821660009081526020819052604081208054839290612d5c908490614036565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ea9908490614070565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612f5a5760006005600060068481548110612f1a57612f1a6141ff565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612f52816141ce565b915050612ef7565b50612f67600660006135dd565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561303f5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612a18565b600080846000815181106130e9576130e96141ff565b60200260200101519050600085600181518110613108576131086141ff565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561318a5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166132065760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b84600081518110613219576132196141ff565b60200260200101516000141561327d5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b84600081518110613290576132906141ff565b6020026020010151600981905550876000815181106132b1576132b16141ff565b6020026020010151600790805190602001906132ce9291906135fb565b50876001815181106132e2576132e26141ff565b6020026020010151600890805190602001906132ff9291906135fb565b50600b80546001600160a01b0319166001600160a01b038416179055855186906002908110613330576133306141ff565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161338d90889060009061118c5761118c6141ff565b60006001600160a01b0316876001815181106133ab576133ab6141ff565b60200260200101516001600160a01b031614613455576133e4876001815181106133d7576133d76141ff565b6020026020010151612fa3565b866001815181106133f7576133f76141ff565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc424360405161344c929190918252602082015260400190565b60405180910390a35b86600281518110613468576134686141ff565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106134a9576134a96141ff565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106134ea576134ea6141ff565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161352d9190613dcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612cc0828461404e565b6000612cc08284614070565b5080546000825590600052602060002090810190610bb9919061367f565b82805461360790614193565b90600052602060002090601f016020900481019282613629576000855561366f565b82601f1061364257805160ff191683800117855561366f565b8280016001018555821561366f579182015b8281111561366f578251825591602001919060010190613654565b5061367b92915061367f565b5090565b5b8082111561367b5760008155600101613680565b600067ffffffffffffffff8311156136ae576136ae614215565b6136c1601f8401601f1916602001613fe1565b90508281528383830111156136d557600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126136fe57600080fd5b50813567ffffffffffffffff81111561371657600080fd5b6020830191508360208260051b850101111561373157600080fd5b9250929050565b600082601f83011261374957600080fd5b8135602061375e61375983614012565b613fe1565b80838252828201915082860187848660051b890101111561377e57600080fd5b60005b858110156137a65781356137948161422b565b84529284019290840190600101613781565b5090979650505050505050565b600082601f8301126137c457600080fd5b813560206137d461375983614012565b80838252828201915082860187848660051b89010111156137f457600080fd5b60005b858110156137a6578135845292840192908401906001016137f7565b60006020828403121561382557600080fd5b8135612cc08161422b565b60006020828403121561384257600080fd5b8151612cc08161422b565b6000806040838503121561386057600080fd5b823561386b8161422b565b9150602083013561387b8161422b565b809150509250929050565b60008060006060848603121561389b57600080fd5b83356138a68161422b565b925060208401356138b68161422b565b929592945050506040919091013590565b600080600080600080600060e0888a0312156138e257600080fd5b87356138ed8161422b565b965060208801356138fd8161422b565b95506040880135945060608801359350608088013560ff8116811461392157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561395357600080fd5b833561395e8161422b565b9250602084013567ffffffffffffffff8082111561397b57600080fd5b61398787838801613738565b9350604086013591508082111561399d57600080fd5b506139aa868287016137b3565b9150509250925092565b600080604083850312156139c757600080fd5b82356139d28161422b565b946020939093013593505050565b60008060008060008060c087890312156139f957600080fd5b8635613a048161422b565b955060208701359450604087013593506060870135613a228161422b565b92506080870135613a328161422b565b8092505060a087013590509295509295509295565b600080600080600060a08688031215613a5f57600080fd5b8535613a6a8161422b565b945060208601359350604086013592506060860135613a8881614240565b91506080860135613a988161422b565b809150509295509295909350565b60008060008060008060008060008060a08b8d031215613ac557600080fd5b8a3567ffffffffffffffff80821115613add57600080fd5b613ae98e838f016136ec565b909c509a5060208d0135915080821115613b0257600080fd5b613b0e8e838f016136ec565b909a50985060408d0135915080821115613b2757600080fd5b613b338e838f016136ec565b909850965060608d0135915080821115613b4c57600080fd5b613b588e838f016136ec565b909650945060808d0135915080821115613b7157600080fd5b50613b7e8d828e016136ec565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b613bd0878388016137b3565b94506020860135915080821115613be657600080fd5b613bf2878388016137b3565b93506040860135915080821115613c0857600080fd5b506139aa86828701613738565b600060208284031215613c2757600080fd5b8151612cc081614240565b600060208284031215613c4457600080fd5b5051919050565b60008060208385031215613c5e57600080fd5b823567ffffffffffffffff80821115613c7657600080fd5b818501915085601f830112613c8a57600080fd5b813581811115613c9957600080fd5b866020828501011115613cab57600080fd5b60209290920196919550909350505050565b600060808284031215613ccf57600080fd5b6040516080810181811067ffffffffffffffff82111715613cf257613cf2614215565b6040528251613d0081614240565b81526020830151613d1081614240565b60208201526040830151613d2381614240565b60408201526060830151613d3681614240565b60608201529392505050565b600060208284031215613d5457600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d945781516001600160a01b031687529582019590820190600101613d6f565b509495945050505050565b600081518084526020808501945080840160005b83811015613d9457815187529582019590820190600101613db3565b600080835481600182811c915080831680613deb57607f831692505b6020808410821415613e0b57634e487b7160e01b86526022600452602486fd5b818015613e1f5760018114613e3057613e5d565b60ff19861689528489019650613e5d565b60008a81526020902060005b86811015613e555781548b820152908501908301613e3c565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613e8f90830185613d5b565b8281036040840152613ea18185613d9f565b9695505050505050565b60008186825b6002811015613ed95781516001600160a01b0316835260209283019290910190600101613eb1565b50505060a06040830152613ef060a0830186613d9f565b8281036060840152613f028186613d9f565b90508281036080840152613f168185613d5b565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613f8457858101830151858201604001528201613f68565b81811115613f96576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400a5761400a614215565b604052919050565b600067ffffffffffffffff82111561402c5761402c614215565b5060051b60200190565b60008219821115614049576140496141e9565b500190565b60008261406b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614082576140826141e9565b500390565b600061409561375984614012565b808482526020808301925084368760051b870111156140b357600080fd5b60005b8781101561410757813567ffffffffffffffff8111156140d557600080fd5b870136601f8201126140e657600080fd5b6140f4368235868401613694565b86525093820193908201906001016140b6565b50919695505050505050565b600061412161375984614012565b808482526020808301925084368760051b8701111561413f57600080fd5b60005b8781101561410757813567ffffffffffffffff81111561416157600080fd5b870136601f82011261417257600080fd5b614180368235868401613694565b8652509382019390820190600101614142565b600181811c908216806141a757607f821691505b602082108114156141c857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141e2576141e26141e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea26469706673582212202d86fd1a6312f0dfc70e2a07d5649bfa475307b8bd086787e2d1cbb4add62eca64736f6c63430008070033", + "deployedBytecode": "0x60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b0366004613813565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613f57565b34801561031357600080fd5b506103276103223660046139b4565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c610371366004613a47565b61091d565b34801561038257600080fd5b50610327610391366004613886565b610a64565b3480156103a257600080fd5b5061025c6103b1366004613813565b610b0e565b3480156103c257600080fd5b5061025c6103d1366004613813565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b506103276104913660046139b4565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed3660046139b4565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613d42565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c610542366004613813565b610e79565b34801561055357600080fd5b5061025c610562366004613886565b610fd5565b34801561057357600080fd5b50610278610582366004613b97565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b6366004613813565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec3660046139b4565b611380565b3480156105fd57600080fd5b5061034861060c366004613813565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e36600461393e565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c610683366004613813565b611632565b34801561069457600080fd5b506103276106a33660046139b4565b6116dd565b3480156106b457600080fd5b506103276106c33660046139b4565b611776565b3480156106d457600080fd5b506103276106e3366004613813565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c366004613813565b611783565b34801561072d57600080fd5b5061025c61073c366004613c4b565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613aa6565b611989565b34801561078257600080fd5b5061025c6107913660046138c7565b611ac3565b3480156107a257600080fd5b506103486107b136600461384d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613d42565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c6108703660046139e0565b611de3565b60606007805461088490614193565b80601f01602080910402602001604051908101604052809291908181526020018280546108b090614193565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b60006109143384846127fe565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613cbd565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613fac565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d85612922565b5050505050565b6000610a71848484612a24565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b0385338584036127fe565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613cbd565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613fac565b610bb981612bf3565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613cbd565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613fac565b610bb981612c54565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690614036565b6127fe565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612cb4565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612cc7565b5050565b610bb93382612da6565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190613830565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612ef4565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613cbd565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612fa3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613cbd565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613fac565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c6141ff565b6020026020010151612922565b62250490846003815181106111b0576111b06141ff565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f6141ff565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613eab565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e99190613830565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b9678284600081518110611320576113206141ff565b60200260200101518560018151811061133b5761133b6141ff565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f783338484036127fe565b6114018383612da6565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613cbd565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613fac565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613e6b565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613c32565b90506000826004815181106115a0576115a06141ff565b602002602001015111156115b7576115b784612922565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec6141ff565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461088490614193565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613cbd565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613fac565b610bb981612922565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c33858584036127fe565b5060019392505050565b6000610914338484612a24565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613cbd565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613fac565b610bb981612fc5565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613cbd565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613fac565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613f21565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a764000061404e565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d614113565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050614087565b6130d3565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b59836141ce565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca8989896127fe565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190613830565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f54118015611ed15750600e546001600160a01b031615155b8015611ee75750600d546001600160a01b031615155b1561214757600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f4257600080fd5b505af1158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a9190613c15565b611fd25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611fe09060646135c5565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061200c90856135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561205257600080fd5b505af1158015612066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208a9190613c15565b6120f05760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49061213590856135d1565b60405190815260200160405180910390a35b60008311801561215f57506001600160a01b03841615155b801561217357506001600160a01b03851615155b1561239a576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fe9190613c15565b61224a5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b6122558360646135c5565b91506001600160a01b03841663a9059cbb8661227186866135d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190613c15565b61234f5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d161238886866135d1565b60405190815260200160405180910390a35b6000811180156123aa5750600082115b80156123c35750600e546001600160a01b038581169116145b80156123d757506001600160a01b03841615155b1561255f57600a546001600160a01b038086169163a9059cbb91166123fc8486612cb4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561244257600080fd5b505af1158015612456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247a9190613c15565b6124d25760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a36127ed565b6000811180156125795750600e546001600160a01b031615155b156126ab57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156125ce57600080fd5b505af11580156125e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126069190613c15565b6126615760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b6000821180156126c357506001600160a01b03841615155b156127ed57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561271657600080fd5b505af115801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613c15565b6127a85760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b611cca6127f8611d15565b88611776565b6001600160a01b0383166128605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b0382166128c15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561298c5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b038316612a885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b038216612aea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b03831660009081526020819052604090205481811015612b625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b99908490614036565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612be591815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff65890612a189042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d48090612a189042904390918252602082015260400190565b6000612cc08284614036565b9392505050565b6001600160a01b038216612d1d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612d2f9190614036565b90915550506001600160a01b03821660009081526020819052604081208054839290612d5c908490614036565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ea9908490614070565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612f5a5760006005600060068481548110612f1a57612f1a6141ff565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612f52816141ce565b915050612ef7565b50612f67600660006135dd565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561303f5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612a18565b600080846000815181106130e9576130e96141ff565b60200260200101519050600085600181518110613108576131086141ff565b6020026020010151905060006001600160a01b0316826001600160a01b0316141561318a5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166132065760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b84600081518110613219576132196141ff565b60200260200101516000141561327d5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b84600081518110613290576132906141ff565b6020026020010151600981905550876000815181106132b1576132b16141ff565b6020026020010151600790805190602001906132ce9291906135fb565b50876001815181106132e2576132e26141ff565b6020026020010151600890805190602001906132ff9291906135fb565b50600b80546001600160a01b0319166001600160a01b038416179055855186906002908110613330576133306141ff565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161338d90889060009061118c5761118c6141ff565b60006001600160a01b0316876001815181106133ab576133ab6141ff565b60200260200101516001600160a01b031614613455576133e4876001815181106133d7576133d76141ff565b6020026020010151612fa3565b866001815181106133f7576133f76141ff565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc424360405161344c929190918252602082015260400190565b60405180910390a35b86600281518110613468576134686141ff565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106134a9576134a96141ff565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106134ea576134ea6141ff565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161352d9190613dcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612cc0828461404e565b6000612cc08284614070565b5080546000825590600052602060002090810190610bb9919061367f565b82805461360790614193565b90600052602060002090601f016020900481019282613629576000855561366f565b82601f1061364257805160ff191683800117855561366f565b8280016001018555821561366f579182015b8281111561366f578251825591602001919060010190613654565b5061367b92915061367f565b5090565b5b8082111561367b5760008155600101613680565b600067ffffffffffffffff8311156136ae576136ae614215565b6136c1601f8401601f1916602001613fe1565b90508281528383830111156136d557600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126136fe57600080fd5b50813567ffffffffffffffff81111561371657600080fd5b6020830191508360208260051b850101111561373157600080fd5b9250929050565b600082601f83011261374957600080fd5b8135602061375e61375983614012565b613fe1565b80838252828201915082860187848660051b890101111561377e57600080fd5b60005b858110156137a65781356137948161422b565b84529284019290840190600101613781565b5090979650505050505050565b600082601f8301126137c457600080fd5b813560206137d461375983614012565b80838252828201915082860187848660051b89010111156137f457600080fd5b60005b858110156137a6578135845292840192908401906001016137f7565b60006020828403121561382557600080fd5b8135612cc08161422b565b60006020828403121561384257600080fd5b8151612cc08161422b565b6000806040838503121561386057600080fd5b823561386b8161422b565b9150602083013561387b8161422b565b809150509250929050565b60008060006060848603121561389b57600080fd5b83356138a68161422b565b925060208401356138b68161422b565b929592945050506040919091013590565b600080600080600080600060e0888a0312156138e257600080fd5b87356138ed8161422b565b965060208801356138fd8161422b565b95506040880135945060608801359350608088013560ff8116811461392157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561395357600080fd5b833561395e8161422b565b9250602084013567ffffffffffffffff8082111561397b57600080fd5b61398787838801613738565b9350604086013591508082111561399d57600080fd5b506139aa868287016137b3565b9150509250925092565b600080604083850312156139c757600080fd5b82356139d28161422b565b946020939093013593505050565b60008060008060008060c087890312156139f957600080fd5b8635613a048161422b565b955060208701359450604087013593506060870135613a228161422b565b92506080870135613a328161422b565b8092505060a087013590509295509295509295565b600080600080600060a08688031215613a5f57600080fd5b8535613a6a8161422b565b945060208601359350604086013592506060860135613a8881614240565b91506080860135613a988161422b565b809150509295509295909350565b60008060008060008060008060008060a08b8d031215613ac557600080fd5b8a3567ffffffffffffffff80821115613add57600080fd5b613ae98e838f016136ec565b909c509a5060208d0135915080821115613b0257600080fd5b613b0e8e838f016136ec565b909a50985060408d0135915080821115613b2757600080fd5b613b338e838f016136ec565b909850965060608d0135915080821115613b4c57600080fd5b613b588e838f016136ec565b909650945060808d0135915080821115613b7157600080fd5b50613b7e8d828e016136ec565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613bac57600080fd5b833567ffffffffffffffff80821115613bc457600080fd5b613bd0878388016137b3565b94506020860135915080821115613be657600080fd5b613bf2878388016137b3565b93506040860135915080821115613c0857600080fd5b506139aa86828701613738565b600060208284031215613c2757600080fd5b8151612cc081614240565b600060208284031215613c4457600080fd5b5051919050565b60008060208385031215613c5e57600080fd5b823567ffffffffffffffff80821115613c7657600080fd5b818501915085601f830112613c8a57600080fd5b813581811115613c9957600080fd5b866020828501011115613cab57600080fd5b60209290920196919550909350505050565b600060808284031215613ccf57600080fd5b6040516080810181811067ffffffffffffffff82111715613cf257613cf2614215565b6040528251613d0081614240565b81526020830151613d1081614240565b60208201526040830151613d2381614240565b60408201526060830151613d3681614240565b60608201529392505050565b600060208284031215613d5457600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613d945781516001600160a01b031687529582019590820190600101613d6f565b509495945050505050565b600081518084526020808501945080840160005b83811015613d9457815187529582019590820190600101613db3565b600080835481600182811c915080831680613deb57607f831692505b6020808410821415613e0b57634e487b7160e01b86526022600452602486fd5b818015613e1f5760018114613e3057613e5d565b60ff19861689528489019650613e5d565b60008a81526020902060005b86811015613e555781548b820152908501908301613e3c565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613e8f90830185613d5b565b8281036040840152613ea18185613d9f565b9695505050505050565b60008186825b6002811015613ed95781516001600160a01b0316835260209283019290910190600101613eb1565b50505060a06040830152613ef060a0830186613d9f565b8281036060840152613f028186613d9f565b90508281036080840152613f168185613d5b565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613f8457858101830151858201604001528201613f68565b81811115613f96576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561400a5761400a614215565b604052919050565b600067ffffffffffffffff82111561402c5761402c614215565b5060051b60200190565b60008219821115614049576140496141e9565b500190565b60008261406b57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614082576140826141e9565b500390565b600061409561375984614012565b808482526020808301925084368760051b870111156140b357600080fd5b60005b8781101561410757813567ffffffffffffffff8111156140d557600080fd5b870136601f8201126140e657600080fd5b6140f4368235868401613694565b86525093820193908201906001016140b6565b50919695505050505050565b600061412161375984614012565b808482526020808301925084368760051b8701111561413f57600080fd5b60005b8781101561410757813567ffffffffffffffff81111561416157600080fd5b870136601f82011261417257600080fd5b614180368235868401613694565b8652509382019390820190600101614142565b600181811c908216806141a757607f821691505b602082108114156141c857634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141e2576141e26141e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea26469706673582212202d86fd1a6312f0dfc70e2a07d5649bfa475307b8bd086787e2d1cbb4add62eca64736f6c63430008070033", "linkReferences": {}, "deployedLinkReferences": {} -} \ No newline at end of file +} diff --git a/abis/ERC20TemplateEnterprise.json b/abis/ERC20TemplateEnterprise.json index e5bcd0b..3351057 100644 --- a/abis/ERC20TemplateEnterprise.json +++ b/abis/ERC20TemplateEnterprise.json @@ -1,1326 +1,1351 @@ { - "_format": "hh-sol-artifact-1", - "contractName": "ERC20TemplateEnterprise", - "sourceName": "contracts/templates/ERC20TemplateEnterprise.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedMinter", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedPaymentManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "CleanedPermissions", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "currentMinter", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newMinter", - "type": "address" - } - ], - "name": "MinterApproved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "currentMinter", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newMinter", - "type": "address" - } - ], - "name": "MinterProposed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "NewFixedRate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "caller", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newPaymentCollector", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "NewPaymentCollector", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "poolAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "ssContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "basetokenAddress", - "type": "address" - } - ], - "name": "NewPool", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "name": "OrderMarketFees", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "consumer", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "publishMarketAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeMarketAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "OrderStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedMinter", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedPaymentManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "BASE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "BASE_COMMUNITY_FEE_PERCENTAGE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_minter", - "type": "address" - } - ], - "name": "addMinter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_paymentManager", - "type": "address" - } - ], - "name": "addPaymentManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "authERC20", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "consumer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "internalType": "struct ERC20TemplateEnterprise.OrderParams", - "name": "_orderParams", - "type": "tuple" - }, - { - "internalType": "address", - "name": "dispenserContract", - "type": "address" - } - ], - "name": "buyFromDispenserAndOrder", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "consumer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "internalType": "struct ERC20TemplateEnterprise.OrderParams", - "name": "_orderParams", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "exchangeContract", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "maxBaseTokenAmount", - "type": "uint256" - } - ], - "internalType": "struct ERC20TemplateEnterprise.FreParams", - "name": "_freParams", - "type": "tuple" - } - ], - "name": "buyFromFreAndOrder", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "cap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "cleanFrom721", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "cleanPermissions", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dispenser", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxTokens", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxBalance", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "withMint", - "type": "bool" - } - ], - "name": "createDispenser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "fixedPriceAddress", - "type": "address" - }, - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "uints", - "type": "uint256[]" - } - ], - "name": "createFixedRate", - "outputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getERC721Address", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getId", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "getPaymentCollector", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getPublishingMarketFee", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string[]", - "name": "strings_", - "type": "string[]" - }, - { - "internalType": "address[]", - "name": "addresses_", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "factoryAddresses_", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "uints_", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "bytes_", - "type": "bytes[]" - } - ], - "name": "initialize", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isMinter", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "permissions", - "outputs": [ - { - "internalType": "bool", - "name": "minter", - "type": "bool" - }, - { - "internalType": "bool", - "name": "paymentManager", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_minter", - "type": "address" - } - ], - "name": "removeMinter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_paymentManager", - "type": "address" - } - ], - "name": "removePaymentManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_value", - "type": "bytes" - } - ], - "name": "setData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newPaymentCollector", - "type": "address" - } - ], - "name": "setPaymentCollector", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_publishMarketFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_publishMarketFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_publishMarketFeeAmount", - "type": "uint256" - } - ], - "name": "setPublishingMarketFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "consumer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "name": "startOrder", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "withdrawETH", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614512806200017f6000396000f3fe6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613998565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b60405161029791906141e5565b34801561031e57600080fd5b5061033261032d366004613c5d565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613a0b565b61093d565b34801561038d57600080fd5b5061026761039c366004613998565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613998565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004613ed3565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613c5d565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b03908116931691906140f7565b3480156104de57600080fd5b506102676104ed366004613c5d565b610c89565b3480156104fe57600080fd5b5061026761050d36600461400c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613998565b610e5b565b34801561055357600080fd5b50610267610562366004613a0b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613998565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613c5d565b611059565b3480156105dd57600080fd5b506103536105ec366004613998565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613b80565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613998565b61132c565b34801561067457600080fd5b50610332610683366004613c5d565b6113d7565b34801561069457600080fd5b506103326106a3366004613c5d565b611470565b3480156106b457600080fd5b506103326106c3366004613998565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613998565b61147d565b34801561070d57600080fd5b5061026761071c366004613e61565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613d3a565b611683565b34801561076257600080fd5b50610267610771366004613f00565b6117bd565b34801561078257600080fd5b50610267610791366004613b09565b611c43565b3480156107a257600080fd5b506103536107b13660046139d2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461400c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613cf0565b611f63565b34801561088157600080fd5b50610267610890366004613c89565b61209f565b6060600780546108a490614421565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090614421565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613f87565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb9061423a565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190613f87565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb9061423a565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c849086906142c4565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612d06565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612d19565b610a973382612df8565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de191906139b5565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e49612f46565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190613f87565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81612ff5565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612df8565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190613f87565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb9061423a565b30836003815181106111f0576111f061448d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161411b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613e48565b905060008260048151811061129a5761129a61448d565b602002602001015111156112b1576112b184613017565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661448d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a490614421565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190613f87565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613017565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190613f87565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613111565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190613f87565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb9061423a565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e890611636908490879087906004016141af565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a76400006142dc565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d6143a1565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614315565b61321f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613a4c565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119599190614025565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f2903390309086906004016140f7565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613e2b565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613e2b565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd98361445c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2491906139b5565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190613f87565b6020015115156001146120055760405162461bcd60e51b81526004016109cb9061423a565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613017565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e9084906142c4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b6000600f541180156124ff5750600e546001600160a01b031615155b80156125155750600d546001600160a01b031615155b1561271757600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd9161254f91339130916004016140f7565b602060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190613e2b565b6125f95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461260790606461371e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690612633908561372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561267957600080fd5b505af115801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b19190613e2b565b6127175760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b60008311801561272f57506001600160a01b03841615155b801561274357506001600160a01b03851615155b1561291b576040516323b872dd60e01b81526001600160a01b038516906323b872dd90612778903390309088906004016140f7565b602060405180830381600087803b15801561279257600080fd5b505af11580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613e2b565b6128165760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b61282183606461371e565b91506001600160a01b03841663a9059cbb8661283d868661372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb9190613e2b565b61291b5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b60008111801561292b5750600082115b80156129445750600e546001600160a01b038581169116145b15612a4457600a546001600160a01b038086169163a9059cbb91166129698486612d06565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e79190613e2b565b612a3f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b612c43565b600081118015612a5e5750600e546001600160a01b031615155b15612b4657600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612ab357600080fd5b505af1158015612ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613e2b565b612b465760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600082118015612b5e57506001600160a01b03841615155b15612c4357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612bb157600080fd5b505af1158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613e2b565b612c435760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b612c4c87610d5b565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b85604051612cf491815260200190565b60405180910390a35050505050505050565b6000612d1282846142c4565b9392505050565b6001600160a01b038216612d6f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612d8191906142c4565b90915550506001600160a01b03821660009081526020819052604081208054839290612dae9084906142c4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e585760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b03821660009081526020819052604090205481811015612ecc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612efb9084906142fe565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612fac5760006005600060068481548110612f6c57612f6c61448d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612fa48161445c565b915050612f49565b50612fb960066000613736565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156130815760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561318b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106132355761323561448d565b602002602001015190506000856001815181106132545761325461448d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156132d65760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166133525760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106133655761336561448d565b6020026020010151600014156133c95760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b846000815181106133dc576133dc61448d565b6020026020010151600981905550876000815181106133fd576133fd61448d565b60200260200101516007908051906020019061341a929190613754565b508760018151811061342e5761342e61448d565b60200260200101516008908051906020019061344b929190613754565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061347c5761347c61448d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516134e69088906000906134d9576134d961448d565b6020026020010151613017565b60006001600160a01b0316876001815181106135045761350461448d565b60200260200101516001600160a01b0316146135ae5761353d876001815181106135305761353061448d565b6020026020010151612ff5565b866001815181106135505761355061448d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516135a5929190918252602082015260400190565b60405180910390a35b866002815181106135c1576135c161448d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106136025761360261448d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106136435761364361448d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6007604051613686919061405b565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612d1282846142dc565b6000612d1282846142fe565b5080546000825590600052602060002090810190610a9791906137d8565b82805461376090614421565b90600052602060002090601f01602090048101928261378257600085556137c8565b82601f1061379b57805160ff19168380011785556137c8565b828001600101855582156137c8579182015b828111156137c85782518255916020019190600101906137ad565b506137d49291506137d8565b5090565b5b808211156137d457600081556001016137d9565b600067ffffffffffffffff831115613807576138076144a3565b61381a601f8401601f191660200161426f565b905082815283838301111561382e57600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261385757600080fd5b50813567ffffffffffffffff81111561386f57600080fd5b6020830191508360208260051b850101111561388a57600080fd5b9250929050565b600082601f8301126138a257600080fd5b813560206138b76138b2836142a0565b61426f565b80838252828201915082860187848660051b89010111156138d757600080fd5b60005b858110156138f6578135845292840192908401906001016138da565b5090979650505050505050565b600060c0828403121561391557600080fd5b60405160c0810181811067ffffffffffffffff82111715613938576139386144a3565b6040529050808235613949816144b9565b808252506020830135602082015260408301356040820152606083013561396f816144b9565b60608201526080830135613982816144b9565b608082015260a092830135920191909152919050565b6000602082840312156139aa57600080fd5b8135612d12816144b9565b6000602082840312156139c757600080fd5b8151612d12816144b9565b600080604083850312156139e557600080fd5b82356139f0816144b9565b91506020830135613a00816144b9565b809150509250929050565b600080600060608486031215613a2057600080fd5b8335613a2b816144b9565b92506020840135613a3b816144b9565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613a6f57600080fd5b8c51613a7a816144b9565b60208e0151909c50613a8b816144b9565b60408e015160608f0151919c509a50613aa3816144b9565b8099505060808d0151975060a08d0151965060c08d0151613ac3816144ce565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613af5816144ce565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613b2457600080fd5b8735613b2f816144b9565b96506020880135613b3f816144b9565b95506040880135945060608801359350608088013560ff81168114613b6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613b9557600080fd5b8335613ba0816144b9565b925060208481013567ffffffffffffffff80821115613bbe57600080fd5b818701915087601f830112613bd257600080fd5b8135613be06138b2826142a0565b8082825285820191508585018b878560051b8801011115613c0057600080fd5b600095505b83861015613c2c578035613c18816144b9565b835260019590950194918601918601613c05565b50965050506040870135925080831115613c4557600080fd5b5050613c5386828701613891565b9150509250925092565b60008060408385031215613c7057600080fd5b8235613c7b816144b9565b946020939093013593505050565b60008060008060008060c08789031215613ca257600080fd5b8635613cad816144b9565b955060208701359450604087013593506060870135613ccb816144b9565b92506080870135613cdb816144b9565b8092505060a087013590509295509295509295565b60008060008060808587031215613d0657600080fd5b8435613d11816144b9565b935060208501359250604085013591506060850135613d2f816144ce565b939692955090935050565b60008060008060008060008060008060a08b8d031215613d5957600080fd5b8a3567ffffffffffffffff80821115613d7157600080fd5b613d7d8e838f01613845565b909c509a5060208d0135915080821115613d9657600080fd5b613da28e838f01613845565b909a50985060408d0135915080821115613dbb57600080fd5b613dc78e838f01613845565b909850965060608d0135915080821115613de057600080fd5b613dec8e838f01613845565b909650945060808d0135915080821115613e0557600080fd5b50613e128d828e01613845565b915080935050809150509295989b9194979a5092959850565b600060208284031215613e3d57600080fd5b8151612d12816144ce565b600060208284031215613e5a57600080fd5b5051919050565b60008060208385031215613e7457600080fd5b823567ffffffffffffffff80821115613e8c57600080fd5b818501915085601f830112613ea057600080fd5b813581811115613eaf57600080fd5b866020828501011115613ec157600080fd5b60209290920196919550909350505050565b60008060e08385031215613ee657600080fd5b613ef08484613903565b915060c0830135613a00816144b9565b600080828403610120811215613f1557600080fd5b613f1f8585613903565b9250606060bf1982011215613f3357600080fd5b506040516060810181811067ffffffffffffffff82111715613f5757613f576144a3565b60405260c0840135613f68816144b9565b815260e084013560208201526101009093013560408401525092909150565b600060808284031215613f9957600080fd5b6040516080810181811067ffffffffffffffff82111715613fbc57613fbc6144a3565b6040528251613fca816144ce565b81526020830151613fda816144ce565b60208201526040830151613fed816144ce565b60408201526060830151614000816144ce565b60608201529392505050565b60006020828403121561401e57600080fd5b5035919050565b6000806000806080858703121561403b57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c91508083168061407757607f831692505b602080841082141561409757634e487b7160e01b86526022600452602486fd5b8180156140ab57600181146140bc576140e9565b60ff198616895284890196506140e9565b60008a81526020902060005b868110156140e15781548b8201529085019083016140c8565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b8181101561416957855185168352948301949183019160010161414b565b5050858103604087015286518082529082019350915080860160005b838110156141a157815185529382019390820190600101614185565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015614212578581018301518582016040015282016141f6565b81811115614224576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715614298576142986144a3565b604052919050565b600067ffffffffffffffff8211156142ba576142ba6144a3565b5060051b60200190565b600082198211156142d7576142d7614477565b500190565b6000826142f957634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561431057614310614477565b500390565b60006143236138b2846142a0565b808482526020808301925084368760051b8701111561434157600080fd5b60005b8781101561439557813567ffffffffffffffff81111561436357600080fd5b870136601f82011261437457600080fd5b6143823682358684016137ed565b8652509382019390820190600101614344565b50919695505050505050565b60006143af6138b2846142a0565b808482526020808301925084368760051b870111156143cd57600080fd5b60005b8781101561439557813567ffffffffffffffff8111156143ef57600080fd5b870136601f82011261440057600080fd5b61440e3682358684016137ed565b86525093820193908201906001016143d0565b600181811c9082168061443557607f821691505b6020821081141561445657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561447057614470614477565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212209f9de6ab354b17b3e749def83b0752ab14e24c17dc984ea442f7caaf4ff87ea964736f6c63430008070033", - "deployedBytecode": "0x6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613998565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b60405161029791906141e5565b34801561031e57600080fd5b5061033261032d366004613c5d565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613a0b565b61093d565b34801561038d57600080fd5b5061026761039c366004613998565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613998565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004613ed3565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613c5d565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b03908116931691906140f7565b3480156104de57600080fd5b506102676104ed366004613c5d565b610c89565b3480156104fe57600080fd5b5061026761050d36600461400c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613998565b610e5b565b34801561055357600080fd5b50610267610562366004613a0b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613998565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613c5d565b611059565b3480156105dd57600080fd5b506103536105ec366004613998565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613b80565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613998565b61132c565b34801561067457600080fd5b50610332610683366004613c5d565b6113d7565b34801561069457600080fd5b506103326106a3366004613c5d565b611470565b3480156106b457600080fd5b506103326106c3366004613998565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613998565b61147d565b34801561070d57600080fd5b5061026761071c366004613e61565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613d3a565b611683565b34801561076257600080fd5b50610267610771366004613f00565b6117bd565b34801561078257600080fd5b50610267610791366004613b09565b611c43565b3480156107a257600080fd5b506103536107b13660046139d2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461400c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613cf0565b611f63565b34801561088157600080fd5b50610267610890366004613c89565b61209f565b6060600780546108a490614421565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090614421565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613f87565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb9061423a565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190613f87565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb9061423a565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c849086906142c4565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612d06565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612d19565b610a973382612df8565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de191906139b5565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e49612f46565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190613f87565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81612ff5565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612df8565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190613f87565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb9061423a565b30836003815181106111f0576111f061448d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161411b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613e48565b905060008260048151811061129a5761129a61448d565b602002602001015111156112b1576112b184613017565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661448d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a490614421565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190613f87565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613017565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190613f87565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613111565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190613f87565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb9061423a565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e890611636908490879087906004016141af565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a76400006142dc565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d6143a1565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614315565b61321f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613a4c565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119599190614025565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f2903390309086906004016140f7565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613e2b565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613e2b565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd98361445c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2491906139b5565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190613f87565b6020015115156001146120055760405162461bcd60e51b81526004016109cb9061423a565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613017565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e9084906142c4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b6000600f541180156124ff5750600e546001600160a01b031615155b80156125155750600d546001600160a01b031615155b1561271757600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd9161254f91339130916004016140f7565b602060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190613e2b565b6125f95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461260790606461371e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690612633908561372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561267957600080fd5b505af115801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b19190613e2b565b6127175760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b60008311801561272f57506001600160a01b03841615155b801561274357506001600160a01b03851615155b1561291b576040516323b872dd60e01b81526001600160a01b038516906323b872dd90612778903390309088906004016140f7565b602060405180830381600087803b15801561279257600080fd5b505af11580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613e2b565b6128165760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b61282183606461371e565b91506001600160a01b03841663a9059cbb8661283d868661372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb9190613e2b565b61291b5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b60008111801561292b5750600082115b80156129445750600e546001600160a01b038581169116145b15612a4457600a546001600160a01b038086169163a9059cbb91166129698486612d06565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e79190613e2b565b612a3f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b612c43565b600081118015612a5e5750600e546001600160a01b031615155b15612b4657600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612ab357600080fd5b505af1158015612ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613e2b565b612b465760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600082118015612b5e57506001600160a01b03841615155b15612c4357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612bb157600080fd5b505af1158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613e2b565b612c435760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b612c4c87610d5b565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b85604051612cf491815260200190565b60405180910390a35050505050505050565b6000612d1282846142c4565b9392505050565b6001600160a01b038216612d6f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612d8191906142c4565b90915550506001600160a01b03821660009081526020819052604081208054839290612dae9084906142c4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e585760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b03821660009081526020819052604090205481811015612ecc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612efb9084906142fe565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612fac5760006005600060068481548110612f6c57612f6c61448d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612fa48161445c565b915050612f49565b50612fb960066000613736565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156130815760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561318b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106132355761323561448d565b602002602001015190506000856001815181106132545761325461448d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156132d65760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166133525760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106133655761336561448d565b6020026020010151600014156133c95760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b846000815181106133dc576133dc61448d565b6020026020010151600981905550876000815181106133fd576133fd61448d565b60200260200101516007908051906020019061341a929190613754565b508760018151811061342e5761342e61448d565b60200260200101516008908051906020019061344b929190613754565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061347c5761347c61448d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516134e69088906000906134d9576134d961448d565b6020026020010151613017565b60006001600160a01b0316876001815181106135045761350461448d565b60200260200101516001600160a01b0316146135ae5761353d876001815181106135305761353061448d565b6020026020010151612ff5565b866001815181106135505761355061448d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516135a5929190918252602082015260400190565b60405180910390a35b866002815181106135c1576135c161448d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106136025761360261448d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106136435761364361448d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6007604051613686919061405b565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612d1282846142dc565b6000612d1282846142fe565b5080546000825590600052602060002090810190610a9791906137d8565b82805461376090614421565b90600052602060002090601f01602090048101928261378257600085556137c8565b82601f1061379b57805160ff19168380011785556137c8565b828001600101855582156137c8579182015b828111156137c85782518255916020019190600101906137ad565b506137d49291506137d8565b5090565b5b808211156137d457600081556001016137d9565b600067ffffffffffffffff831115613807576138076144a3565b61381a601f8401601f191660200161426f565b905082815283838301111561382e57600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261385757600080fd5b50813567ffffffffffffffff81111561386f57600080fd5b6020830191508360208260051b850101111561388a57600080fd5b9250929050565b600082601f8301126138a257600080fd5b813560206138b76138b2836142a0565b61426f565b80838252828201915082860187848660051b89010111156138d757600080fd5b60005b858110156138f6578135845292840192908401906001016138da565b5090979650505050505050565b600060c0828403121561391557600080fd5b60405160c0810181811067ffffffffffffffff82111715613938576139386144a3565b6040529050808235613949816144b9565b808252506020830135602082015260408301356040820152606083013561396f816144b9565b60608201526080830135613982816144b9565b608082015260a092830135920191909152919050565b6000602082840312156139aa57600080fd5b8135612d12816144b9565b6000602082840312156139c757600080fd5b8151612d12816144b9565b600080604083850312156139e557600080fd5b82356139f0816144b9565b91506020830135613a00816144b9565b809150509250929050565b600080600060608486031215613a2057600080fd5b8335613a2b816144b9565b92506020840135613a3b816144b9565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613a6f57600080fd5b8c51613a7a816144b9565b60208e0151909c50613a8b816144b9565b60408e015160608f0151919c509a50613aa3816144b9565b8099505060808d0151975060a08d0151965060c08d0151613ac3816144ce565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613af5816144ce565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613b2457600080fd5b8735613b2f816144b9565b96506020880135613b3f816144b9565b95506040880135945060608801359350608088013560ff81168114613b6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613b9557600080fd5b8335613ba0816144b9565b925060208481013567ffffffffffffffff80821115613bbe57600080fd5b818701915087601f830112613bd257600080fd5b8135613be06138b2826142a0565b8082825285820191508585018b878560051b8801011115613c0057600080fd5b600095505b83861015613c2c578035613c18816144b9565b835260019590950194918601918601613c05565b50965050506040870135925080831115613c4557600080fd5b5050613c5386828701613891565b9150509250925092565b60008060408385031215613c7057600080fd5b8235613c7b816144b9565b946020939093013593505050565b60008060008060008060c08789031215613ca257600080fd5b8635613cad816144b9565b955060208701359450604087013593506060870135613ccb816144b9565b92506080870135613cdb816144b9565b8092505060a087013590509295509295509295565b60008060008060808587031215613d0657600080fd5b8435613d11816144b9565b935060208501359250604085013591506060850135613d2f816144ce565b939692955090935050565b60008060008060008060008060008060a08b8d031215613d5957600080fd5b8a3567ffffffffffffffff80821115613d7157600080fd5b613d7d8e838f01613845565b909c509a5060208d0135915080821115613d9657600080fd5b613da28e838f01613845565b909a50985060408d0135915080821115613dbb57600080fd5b613dc78e838f01613845565b909850965060608d0135915080821115613de057600080fd5b613dec8e838f01613845565b909650945060808d0135915080821115613e0557600080fd5b50613e128d828e01613845565b915080935050809150509295989b9194979a5092959850565b600060208284031215613e3d57600080fd5b8151612d12816144ce565b600060208284031215613e5a57600080fd5b5051919050565b60008060208385031215613e7457600080fd5b823567ffffffffffffffff80821115613e8c57600080fd5b818501915085601f830112613ea057600080fd5b813581811115613eaf57600080fd5b866020828501011115613ec157600080fd5b60209290920196919550909350505050565b60008060e08385031215613ee657600080fd5b613ef08484613903565b915060c0830135613a00816144b9565b600080828403610120811215613f1557600080fd5b613f1f8585613903565b9250606060bf1982011215613f3357600080fd5b506040516060810181811067ffffffffffffffff82111715613f5757613f576144a3565b60405260c0840135613f68816144b9565b815260e084013560208201526101009093013560408401525092909150565b600060808284031215613f9957600080fd5b6040516080810181811067ffffffffffffffff82111715613fbc57613fbc6144a3565b6040528251613fca816144ce565b81526020830151613fda816144ce565b60208201526040830151613fed816144ce565b60408201526060830151614000816144ce565b60608201529392505050565b60006020828403121561401e57600080fd5b5035919050565b6000806000806080858703121561403b57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c91508083168061407757607f831692505b602080841082141561409757634e487b7160e01b86526022600452602486fd5b8180156140ab57600181146140bc576140e9565b60ff198616895284890196506140e9565b60008a81526020902060005b868110156140e15781548b8201529085019083016140c8565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b8181101561416957855185168352948301949183019160010161414b565b5050858103604087015286518082529082019350915080860160005b838110156141a157815185529382019390820190600101614185565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015614212578581018301518582016040015282016141f6565b81811115614224576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715614298576142986144a3565b604052919050565b600067ffffffffffffffff8211156142ba576142ba6144a3565b5060051b60200190565b600082198211156142d7576142d7614477565b500190565b6000826142f957634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561431057614310614477565b500390565b60006143236138b2846142a0565b808482526020808301925084368760051b8701111561434157600080fd5b60005b8781101561439557813567ffffffffffffffff81111561436357600080fd5b870136601f82011261437457600080fd5b6143823682358684016137ed565b8652509382019390820190600101614344565b50919695505050505050565b60006143af6138b2846142a0565b808482526020808301925084368760051b870111156143cd57600080fd5b60005b8781101561439557813567ffffffffffffffff8111156143ef57600080fd5b870136601f82011261440057600080fd5b61440e3682358684016137ed565b86525093820193908201906001016143d0565b600181811c9082168061443557607f821691505b6020821081141561445657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561447057614470614477565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212209f9de6ab354b17b3e749def83b0752ab14e24c17dc984ea442f7caaf4ff87ea964736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} - } \ No newline at end of file + "_format": "hh-sol-artifact-1", + "contractName": "ERC20TemplateEnterprise", + "sourceName": "contracts/templates/ERC20TemplateEnterprise.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedPaymentManager", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "CleanedPermissions", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "ConsumeMarketFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "NewFixedRate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newPaymentCollector", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "NewPaymentCollector", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "ssContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "basetokenAddress", + "type": "address" + } + ], + "name": "NewPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "publishMarketAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeMarketAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "OrderStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "PublishMarketFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "PublishMarketFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "PublishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "PublishMarketFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedPaymentManager", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_paymentManager", + "type": "address" + } + ], + "name": "addPaymentManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "authERC20", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "internalType": "struct ERC20TemplateEnterprise.OrderParams", + "name": "_orderParams", + "type": "tuple" + }, + { + "internalType": "address", + "name": "dispenserContract", + "type": "address" + } + ], + "name": "buyFromDispenserAndOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "internalType": "struct ERC20TemplateEnterprise.OrderParams", + "name": "_orderParams", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "exchangeContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "maxBaseTokenAmount", + "type": "uint256" + } + ], + "internalType": "struct ERC20TemplateEnterprise.FreParams", + "name": "_freParams", + "type": "tuple" + } + ], + "name": "buyFromFreAndOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cleanFrom721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cleanPermissions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "name": "createDispenser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fixedPriceAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + } + ], + "name": "createFixedRate", + "outputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getERC721Address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getPaymentCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublishingMarketFee", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "strings_", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses_", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "factoryAddresses_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints_", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytes_", + "type": "bytes[]" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isInitialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "permissions", + "outputs": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_paymentManager", + "type": "address" + } + ], + "name": "removePaymentManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_value", + "type": "bytes" + } + ], + "name": "setData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newPaymentCollector", + "type": "address" + } + ], + "name": "setPaymentCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_publishMarketFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_publishMarketFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_publishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "setPublishingMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "startOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614692806200017f6000396000f3fe6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613b18565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b6040516102979190614365565b34801561031e57600080fd5b5061033261032d366004613ddd565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613b8b565b61093d565b34801561038d57600080fd5b5061026761039c366004613b18565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613b18565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004614053565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613ddd565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b0390811693169190614277565b3480156104de57600080fd5b506102676104ed366004613ddd565b610c89565b3480156104fe57600080fd5b5061026761050d36600461418c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613b18565b610e5b565b34801561055357600080fd5b50610267610562366004613b8b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613b18565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613ddd565b611059565b3480156105dd57600080fd5b506103536105ec366004613b18565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613d00565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613b18565b61132c565b34801561067457600080fd5b50610332610683366004613ddd565b6113d7565b34801561069457600080fd5b506103326106a3366004613ddd565b611470565b3480156106b457600080fd5b506103326106c3366004613b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613b18565b61147d565b34801561070d57600080fd5b5061026761071c366004613fe1565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613eba565b611683565b34801561076257600080fd5b50610267610771366004614080565b6117bd565b34801561078257600080fd5b50610267610791366004613c89565b611c43565b3480156107a257600080fd5b506103536107b1366004613b52565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461418c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613e70565b611f63565b34801561088157600080fd5b50610267610890366004613e09565b61209f565b6060600780546108a4906145a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108d0906145a1565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190614107565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb906143ba565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190614107565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb906143ba565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c84908690614444565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612e86565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612e99565b610a973382612f78565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190613b35565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e496130c6565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190614107565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81613175565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612f78565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190614107565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb906143ba565b30836003815181106111f0576111f061460d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161429b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613fc8565b905060008260048151811061129a5761129a61460d565b602002602001015111156112b1576112b184613197565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661460d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a4906145a1565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614107565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613197565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614107565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613291565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190614107565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb906143ba565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906116369084908790879060040161432f565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a764000061445c565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d614521565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614495565b61339f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613bcc565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906141a5565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f290339030908690600401614277565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613fab565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613fab565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd9836145dc565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613b35565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190614107565b6020015115156001146120055760405162461bcd60e51b81526004016109cb906143ba565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613197565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e908490614444565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f541180156125625750600e546001600160a01b031615155b80156125785750600d546001600160a01b031615155b156127d157600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd916125b29133913091600401614277565b602060405180830381600087803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126049190613fab565b61265c5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461266a90606461389e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061269690856138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190613fab565b61277a5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906127bf90856138aa565b60405190815260200160405180910390a35b6000831180156127e957506001600160a01b03841615155b80156127fd57506001600160a01b03851615155b15612a20576040516323b872dd60e01b81526001600160a01b038516906323b872dd9061283290339030908890600401614277565b602060405180830381600087803b15801561284c57600080fd5b505af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128849190613fab565b6128d05760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b6128db83606461389e565b91506001600160a01b03841663a9059cbb866128f786866138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613fab565b6129d55760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d1612a0e86866138aa565b60405190815260200160405180910390a35b600081118015612a305750600082115b8015612a495750600e546001600160a01b038581169116145b8015612a5d57506001600160a01b03841615155b15612be557600a546001600160a01b038086169163a9059cbb9116612a828486612e86565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b009190613fab565b612b585760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a3612e73565b600081118015612bff5750600e546001600160a01b031615155b15612d3157600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613fab565b612ce75760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b600082118015612d4957506001600160a01b03841615155b15612e7357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613fab565b612e2e5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b612e7c87610d5b565b5050505050505050565b6000612e928284614444565b9392505050565b6001600160a01b038216612eef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612f019190614444565b90915550506001600160a01b03821660009081526020819052604081208054839290612f2e908490614444565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612fd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b0382166000908152602081905260409020548181101561304c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b038316600090815260208190526040812083830390556002805484929061307b90849061447e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b60065481101561312c57600060056000600684815481106130ec576130ec61460d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080613124816145dc565b9150506130c9565b50613139600660006138b6565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156132015760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561330b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106133b5576133b561460d565b602002602001015190506000856001815181106133d4576133d461460d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156134565760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166134d25760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106134e5576134e561460d565b6020026020010151600014156135495760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b8460008151811061355c5761355c61460d565b60200260200101516009819055508760008151811061357d5761357d61460d565b60200260200101516007908051906020019061359a9291906138d4565b50876001815181106135ae576135ae61460d565b6020026020010151600890805190602001906135cb9291906138d4565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106135fc576135fc61460d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516136669088906000906136595761365961460d565b6020026020010151613197565b60006001600160a01b0316876001815181106136845761368461460d565b60200260200101516001600160a01b03161461372e576136bd876001815181106136b0576136b061460d565b6020026020010151613175565b866001815181106136d0576136d061460d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051613725929190918252602082015260400190565b60405180910390a35b866002815181106137415761374161460d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106137825761378261460d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106137c3576137c361460d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161380691906141db565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612e92828461445c565b6000612e92828461447e565b5080546000825590600052602060002090810190610a979190613958565b8280546138e0906145a1565b90600052602060002090601f0160209004810192826139025760008555613948565b82601f1061391b57805160ff1916838001178555613948565b82800160010185558215613948579182015b8281111561394857825182559160200191906001019061392d565b50613954929150613958565b5090565b5b808211156139545760008155600101613959565b600067ffffffffffffffff83111561398757613987614623565b61399a601f8401601f19166020016143ef565b90508281528383830111156139ae57600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126139d757600080fd5b50813567ffffffffffffffff8111156139ef57600080fd5b6020830191508360208260051b8501011115613a0a57600080fd5b9250929050565b600082601f830112613a2257600080fd5b81356020613a37613a3283614420565b6143ef565b80838252828201915082860187848660051b8901011115613a5757600080fd5b60005b85811015613a7657813584529284019290840190600101613a5a565b5090979650505050505050565b600060c08284031215613a9557600080fd5b60405160c0810181811067ffffffffffffffff82111715613ab857613ab8614623565b6040529050808235613ac981614639565b8082525060208301356020820152604083013560408201526060830135613aef81614639565b60608201526080830135613b0281614639565b608082015260a092830135920191909152919050565b600060208284031215613b2a57600080fd5b8135612e9281614639565b600060208284031215613b4757600080fd5b8151612e9281614639565b60008060408385031215613b6557600080fd5b8235613b7081614639565b91506020830135613b8081614639565b809150509250929050565b600080600060608486031215613ba057600080fd5b8335613bab81614639565b92506020840135613bbb81614639565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613bef57600080fd5b8c51613bfa81614639565b60208e0151909c50613c0b81614639565b60408e015160608f0151919c509a50613c2381614639565b8099505060808d0151975060a08d0151965060c08d0151613c438161464e565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613c758161464e565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613ca457600080fd5b8735613caf81614639565b96506020880135613cbf81614639565b95506040880135945060608801359350608088013560ff81168114613ce357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613d1557600080fd5b8335613d2081614639565b925060208481013567ffffffffffffffff80821115613d3e57600080fd5b818701915087601f830112613d5257600080fd5b8135613d60613a3282614420565b8082825285820191508585018b878560051b8801011115613d8057600080fd5b600095505b83861015613dac578035613d9881614639565b835260019590950194918601918601613d85565b50965050506040870135925080831115613dc557600080fd5b5050613dd386828701613a11565b9150509250925092565b60008060408385031215613df057600080fd5b8235613dfb81614639565b946020939093013593505050565b60008060008060008060c08789031215613e2257600080fd5b8635613e2d81614639565b955060208701359450604087013593506060870135613e4b81614639565b92506080870135613e5b81614639565b8092505060a087013590509295509295509295565b60008060008060808587031215613e8657600080fd5b8435613e9181614639565b935060208501359250604085013591506060850135613eaf8161464e565b939692955090935050565b60008060008060008060008060008060a08b8d031215613ed957600080fd5b8a3567ffffffffffffffff80821115613ef157600080fd5b613efd8e838f016139c5565b909c509a5060208d0135915080821115613f1657600080fd5b613f228e838f016139c5565b909a50985060408d0135915080821115613f3b57600080fd5b613f478e838f016139c5565b909850965060608d0135915080821115613f6057600080fd5b613f6c8e838f016139c5565b909650945060808d0135915080821115613f8557600080fd5b50613f928d828e016139c5565b915080935050809150509295989b9194979a5092959850565b600060208284031215613fbd57600080fd5b8151612e928161464e565b600060208284031215613fda57600080fd5b5051919050565b60008060208385031215613ff457600080fd5b823567ffffffffffffffff8082111561400c57600080fd5b818501915085601f83011261402057600080fd5b81358181111561402f57600080fd5b86602082850101111561404157600080fd5b60209290920196919550909350505050565b60008060e0838503121561406657600080fd5b6140708484613a83565b915060c0830135613b8081614639565b60008082840361012081121561409557600080fd5b61409f8585613a83565b9250606060bf19820112156140b357600080fd5b506040516060810181811067ffffffffffffffff821117156140d7576140d7614623565b60405260c08401356140e881614639565b815260e084013560208201526101009093013560408401525092909150565b60006080828403121561411957600080fd5b6040516080810181811067ffffffffffffffff8211171561413c5761413c614623565b604052825161414a8161464e565b8152602083015161415a8161464e565b6020820152604083015161416d8161464e565b604082015260608301516141808161464e565b60608201529392505050565b60006020828403121561419e57600080fd5b5035919050565b600080600080608085870312156141bb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c9150808316806141f757607f831692505b602080841082141561421757634e487b7160e01b86526022600452602486fd5b81801561422b576001811461423c57614269565b60ff19861689528489019650614269565b60008a81526020902060005b868110156142615781548b820152908501908301614248565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156142e95785518516835294830194918301916001016142cb565b5050858103604087015286518082529082019350915080860160005b8381101561432157815185529382019390820190600101614305565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b8181101561439257858101830151858201604001528201614376565b818111156143a4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561441857614418614623565b604052919050565b600067ffffffffffffffff82111561443a5761443a614623565b5060051b60200190565b60008219821115614457576144576145f7565b500190565b60008261447957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614490576144906145f7565b500390565b60006144a3613a3284614420565b808482526020808301925084368760051b870111156144c157600080fd5b60005b8781101561451557813567ffffffffffffffff8111156144e357600080fd5b870136601f8201126144f457600080fd5b61450236823586840161396d565b86525093820193908201906001016144c4565b50919695505050505050565b600061452f613a3284614420565b808482526020808301925084368760051b8701111561454d57600080fd5b60005b8781101561451557813567ffffffffffffffff81111561456f57600080fd5b870136601f82011261458057600080fd5b61458e36823586840161396d565b8652509382019390820190600101614550565b600181811c908216806145b557607f821691505b602082108114156145d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145f0576145f06145f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212203fefaefebd60ab2e4bb6f9429e228753bf3ba50cd41f42191f8fac1472e7d4b664736f6c63430008070033", + "deployedBytecode": "0x6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613b18565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b6040516102979190614365565b34801561031e57600080fd5b5061033261032d366004613ddd565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613b8b565b61093d565b34801561038d57600080fd5b5061026761039c366004613b18565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613b18565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004614053565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613ddd565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b0390811693169190614277565b3480156104de57600080fd5b506102676104ed366004613ddd565b610c89565b3480156104fe57600080fd5b5061026761050d36600461418c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613b18565b610e5b565b34801561055357600080fd5b50610267610562366004613b8b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613b18565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613ddd565b611059565b3480156105dd57600080fd5b506103536105ec366004613b18565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613d00565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613b18565b61132c565b34801561067457600080fd5b50610332610683366004613ddd565b6113d7565b34801561069457600080fd5b506103326106a3366004613ddd565b611470565b3480156106b457600080fd5b506103326106c3366004613b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613b18565b61147d565b34801561070d57600080fd5b5061026761071c366004613fe1565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613eba565b611683565b34801561076257600080fd5b50610267610771366004614080565b6117bd565b34801561078257600080fd5b50610267610791366004613c89565b611c43565b3480156107a257600080fd5b506103536107b1366004613b52565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461418c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613e70565b611f63565b34801561088157600080fd5b50610267610890366004613e09565b61209f565b6060600780546108a4906145a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108d0906145a1565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190614107565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb906143ba565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190614107565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb906143ba565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c84908690614444565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612e86565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612e99565b610a973382612f78565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190613b35565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e496130c6565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190614107565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81613175565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612f78565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190614107565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb906143ba565b30836003815181106111f0576111f061460d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161429b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613fc8565b905060008260048151811061129a5761129a61460d565b602002602001015111156112b1576112b184613197565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661460d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a4906145a1565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614107565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613197565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614107565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613291565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190614107565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb906143ba565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906116369084908790879060040161432f565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a764000061445c565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d614521565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614495565b61339f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613bcc565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906141a5565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f290339030908690600401614277565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613fab565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613fab565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd9836145dc565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613b35565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190614107565b6020015115156001146120055760405162461bcd60e51b81526004016109cb906143ba565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613197565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e908490614444565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f541180156125625750600e546001600160a01b031615155b80156125785750600d546001600160a01b031615155b156127d157600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd916125b29133913091600401614277565b602060405180830381600087803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126049190613fab565b61265c5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461266a90606461389e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061269690856138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190613fab565b61277a5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906127bf90856138aa565b60405190815260200160405180910390a35b6000831180156127e957506001600160a01b03841615155b80156127fd57506001600160a01b03851615155b15612a20576040516323b872dd60e01b81526001600160a01b038516906323b872dd9061283290339030908890600401614277565b602060405180830381600087803b15801561284c57600080fd5b505af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128849190613fab565b6128d05760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b6128db83606461389e565b91506001600160a01b03841663a9059cbb866128f786866138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613fab565b6129d55760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d1612a0e86866138aa565b60405190815260200160405180910390a35b600081118015612a305750600082115b8015612a495750600e546001600160a01b038581169116145b8015612a5d57506001600160a01b03841615155b15612be557600a546001600160a01b038086169163a9059cbb9116612a828486612e86565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b009190613fab565b612b585760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a3612e73565b600081118015612bff5750600e546001600160a01b031615155b15612d3157600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613fab565b612ce75760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b600082118015612d4957506001600160a01b03841615155b15612e7357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613fab565b612e2e5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b612e7c87610d5b565b5050505050505050565b6000612e928284614444565b9392505050565b6001600160a01b038216612eef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612f019190614444565b90915550506001600160a01b03821660009081526020819052604081208054839290612f2e908490614444565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612fd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b0382166000908152602081905260409020548181101561304c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b038316600090815260208190526040812083830390556002805484929061307b90849061447e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b60065481101561312c57600060056000600684815481106130ec576130ec61460d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080613124816145dc565b9150506130c9565b50613139600660006138b6565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156132015760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561330b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106133b5576133b561460d565b602002602001015190506000856001815181106133d4576133d461460d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156134565760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166134d25760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106134e5576134e561460d565b6020026020010151600014156135495760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b8460008151811061355c5761355c61460d565b60200260200101516009819055508760008151811061357d5761357d61460d565b60200260200101516007908051906020019061359a9291906138d4565b50876001815181106135ae576135ae61460d565b6020026020010151600890805190602001906135cb9291906138d4565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106135fc576135fc61460d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516136669088906000906136595761365961460d565b6020026020010151613197565b60006001600160a01b0316876001815181106136845761368461460d565b60200260200101516001600160a01b03161461372e576136bd876001815181106136b0576136b061460d565b6020026020010151613175565b866001815181106136d0576136d061460d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051613725929190918252602082015260400190565b60405180910390a35b866002815181106137415761374161460d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106137825761378261460d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106137c3576137c361460d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161380691906141db565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612e92828461445c565b6000612e92828461447e565b5080546000825590600052602060002090810190610a979190613958565b8280546138e0906145a1565b90600052602060002090601f0160209004810192826139025760008555613948565b82601f1061391b57805160ff1916838001178555613948565b82800160010185558215613948579182015b8281111561394857825182559160200191906001019061392d565b50613954929150613958565b5090565b5b808211156139545760008155600101613959565b600067ffffffffffffffff83111561398757613987614623565b61399a601f8401601f19166020016143ef565b90508281528383830111156139ae57600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126139d757600080fd5b50813567ffffffffffffffff8111156139ef57600080fd5b6020830191508360208260051b8501011115613a0a57600080fd5b9250929050565b600082601f830112613a2257600080fd5b81356020613a37613a3283614420565b6143ef565b80838252828201915082860187848660051b8901011115613a5757600080fd5b60005b85811015613a7657813584529284019290840190600101613a5a565b5090979650505050505050565b600060c08284031215613a9557600080fd5b60405160c0810181811067ffffffffffffffff82111715613ab857613ab8614623565b6040529050808235613ac981614639565b8082525060208301356020820152604083013560408201526060830135613aef81614639565b60608201526080830135613b0281614639565b608082015260a092830135920191909152919050565b600060208284031215613b2a57600080fd5b8135612e9281614639565b600060208284031215613b4757600080fd5b8151612e9281614639565b60008060408385031215613b6557600080fd5b8235613b7081614639565b91506020830135613b8081614639565b809150509250929050565b600080600060608486031215613ba057600080fd5b8335613bab81614639565b92506020840135613bbb81614639565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613bef57600080fd5b8c51613bfa81614639565b60208e0151909c50613c0b81614639565b60408e015160608f0151919c509a50613c2381614639565b8099505060808d0151975060a08d0151965060c08d0151613c438161464e565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613c758161464e565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613ca457600080fd5b8735613caf81614639565b96506020880135613cbf81614639565b95506040880135945060608801359350608088013560ff81168114613ce357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613d1557600080fd5b8335613d2081614639565b925060208481013567ffffffffffffffff80821115613d3e57600080fd5b818701915087601f830112613d5257600080fd5b8135613d60613a3282614420565b8082825285820191508585018b878560051b8801011115613d8057600080fd5b600095505b83861015613dac578035613d9881614639565b835260019590950194918601918601613d85565b50965050506040870135925080831115613dc557600080fd5b5050613dd386828701613a11565b9150509250925092565b60008060408385031215613df057600080fd5b8235613dfb81614639565b946020939093013593505050565b60008060008060008060c08789031215613e2257600080fd5b8635613e2d81614639565b955060208701359450604087013593506060870135613e4b81614639565b92506080870135613e5b81614639565b8092505060a087013590509295509295509295565b60008060008060808587031215613e8657600080fd5b8435613e9181614639565b935060208501359250604085013591506060850135613eaf8161464e565b939692955090935050565b60008060008060008060008060008060a08b8d031215613ed957600080fd5b8a3567ffffffffffffffff80821115613ef157600080fd5b613efd8e838f016139c5565b909c509a5060208d0135915080821115613f1657600080fd5b613f228e838f016139c5565b909a50985060408d0135915080821115613f3b57600080fd5b613f478e838f016139c5565b909850965060608d0135915080821115613f6057600080fd5b613f6c8e838f016139c5565b909650945060808d0135915080821115613f8557600080fd5b50613f928d828e016139c5565b915080935050809150509295989b9194979a5092959850565b600060208284031215613fbd57600080fd5b8151612e928161464e565b600060208284031215613fda57600080fd5b5051919050565b60008060208385031215613ff457600080fd5b823567ffffffffffffffff8082111561400c57600080fd5b818501915085601f83011261402057600080fd5b81358181111561402f57600080fd5b86602082850101111561404157600080fd5b60209290920196919550909350505050565b60008060e0838503121561406657600080fd5b6140708484613a83565b915060c0830135613b8081614639565b60008082840361012081121561409557600080fd5b61409f8585613a83565b9250606060bf19820112156140b357600080fd5b506040516060810181811067ffffffffffffffff821117156140d7576140d7614623565b60405260c08401356140e881614639565b815260e084013560208201526101009093013560408401525092909150565b60006080828403121561411957600080fd5b6040516080810181811067ffffffffffffffff8211171561413c5761413c614623565b604052825161414a8161464e565b8152602083015161415a8161464e565b6020820152604083015161416d8161464e565b604082015260608301516141808161464e565b60608201529392505050565b60006020828403121561419e57600080fd5b5035919050565b600080600080608085870312156141bb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c9150808316806141f757607f831692505b602080841082141561421757634e487b7160e01b86526022600452602486fd5b81801561422b576001811461423c57614269565b60ff19861689528489019650614269565b60008a81526020902060005b868110156142615781548b820152908501908301614248565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156142e95785518516835294830194918301916001016142cb565b5050858103604087015286518082529082019350915080860160005b8381101561432157815185529382019390820190600101614305565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b8181101561439257858101830151858201604001528201614376565b818111156143a4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561441857614418614623565b604052919050565b600067ffffffffffffffff82111561443a5761443a614623565b5060051b60200190565b60008219821115614457576144576145f7565b500190565b60008261447957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614490576144906145f7565b500390565b60006144a3613a3284614420565b808482526020808301925084368760051b870111156144c157600080fd5b60005b8781101561451557813567ffffffffffffffff8111156144e357600080fd5b870136601f8201126144f457600080fd5b61450236823586840161396d565b86525093820193908201906001016144c4565b50919695505050505050565b600061452f613a3284614420565b808482526020808301925084368760051b8701111561454d57600080fd5b60005b8781101561451557813567ffffffffffffffff81111561456f57600080fd5b870136601f82011261458057600080fd5b61458e36823586840161396d565b8652509382019390820190600101614550565b600181811c908216806145b557607f821691505b602082108114156145d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145f0576145f06145f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212203fefaefebd60ab2e4bb6f9429e228753bf3ba50cd41f42191f8fac1472e7d4b664736f6c63430008070033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/schema.graphql b/schema.graphql index 5d2b8a1..b098d87 100644 --- a/schema.graphql +++ b/schema.graphql @@ -199,13 +199,13 @@ type PoolTransaction @entity { "number of shares transfered" sharesTransferAmount: BigDecimal - "pool fee percent, fee goes to all liquidity providers : SWAP, JOIN , EXIT" + "pool fee value, fee goes to all liquidity providers : SWAP, JOIN , EXIT" poolFee: BigDecimal! - "OPF Fee percent, fee that goes to Ocean Protocol Foundation : SWAP" + "OPF Fee value, fee that goes to Ocean Protocol Foundation : SWAP" opfFee: BigDecimal! - "fee that goes to the publishing market" + "market fee value, fee that goes to the publishing market" marketFee: BigDecimal! "block time when pool was created" @@ -232,8 +232,9 @@ type PoolTransaction @entity { datatokenValue: BigDecimal } -type Order @entity { # renamed from TokenOrder to Order - id: ID! # datatokenId + userAddress + tx +type Order @entity { + "transaction hash - token address - from address" + id: ID! token: Token! consumer: User! @@ -243,11 +244,11 @@ type Order @entity { # renamed from Toke # the fees will be updated from an event that will be created after (todo) - publishingMarketAddress: User + publishingMarket: User publishingMarketToken: Token # publishingMarketAmmount: BigDecimal #call contract to get fee ammount - consumerMarketAddress: User + consumerMarket: User consumerMarketToken: Token # consumerMarketAmmount: BigDecimal #call contract to get fee ammount diff --git a/src/mappings/erc20Template.ts b/src/mappings/erc20Template.ts deleted file mode 100644 index 34d77c3..0000000 --- a/src/mappings/erc20Template.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { - MinterApproved, - OrderStarted -} from '../@types/ERC20Template/ERC20Template' -// TODO: no events in contracts , it's ok !! -export function handleMinterApproved(event: MinterApproved): void {} - -// TODO: to complicated at this point, return after basic events implemented ¯\_(ツ)_/¯ -export function handleOrderStarted(event: OrderStarted): void {} diff --git a/src/mappings/erc20Templates.ts b/src/mappings/erc20Templates.ts new file mode 100644 index 0000000..df786a2 --- /dev/null +++ b/src/mappings/erc20Templates.ts @@ -0,0 +1,78 @@ +import { OrderStarted } from '../@types/ERC20Template/ERC20Template' +import { Order } from '../@types/schema' +import { + ConsumeMarketFees, + PublishMarketFees +} from '../@types/templates/ERC20Template/ERC20Template' +import { integer } from './utils/constants' +import { weiToDecimal } from './utils/generic' +import { getToken } from './utils/tokenUtils' +import { getUser } from './utils/userUtils' + +function getOrderId(tx: string, tokenAddress: string, fromAddress: string) { + return `${tx}-${tokenAddress}-${fromAddress}` +} + +export function handleOrderStarted(event: OrderStarted): void { + const order = new Order( + getOrderId( + event.transaction.hash.toHex(), + event.address.toHex(), + event.transaction.from.toHex() + ) + ) + + const token = getToken(event.address.toHex()) + order.token = token.id + token.orderCount = token.orderCount.plus(integer.ONE) + + const consumer = getUser(event.params.consumer.toHex()) + order.consumer = consumer.id + + const payer = getUser(event.params.payer.toHex()) + order.payer = payer.id + + order.amount = weiToDecimal( + event.params.amount.toBigDecimal(), + token.decimals + ) + + order.serviceId = event.params.serviceId + + const publishMarket = getUser(event.params.publishMarketAddress.toHex()) + order.publishingMarket = publishMarket.id + + const consumeMarket = getUser(event.params.consumeFeeMarketAddress.toHex()) + order.consumerMarket = consumeMarket.id + + order.createdTimestamp = event.block.timestamp.toI32() + order.tx = event.transaction.hash + order.block = event.block.number.toI32() + + order.save() + token.save() +} + +export function handlePublishMarketFees(event: PublishMarketFees): void { + const order = Order.load( + getOrderId( + event.transaction.hash.toHex(), + event.address.toHex(), + event.transaction.from.toHex() + ) + ) + + order.save() +} + +export function handleConsumeMarketFees(event: ConsumeMarketFees): void { + const order = Order.load( + getOrderId( + event.transaction.hash.toHex(), + event.address.toHex(), + event.transaction.from.toHex() + ) + ) + + order.save() +} diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index 8a462db..2bccc78 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -105,6 +105,7 @@ export function handleDeactivated(event: ExchangeDeactivated): void { ) newExchangeUpdate.oldActive = fixedRateExchange.active newExchangeUpdate.newActive = false + newExchangeUpdate.createdTimestamp = event.block.timestamp.toI32() newExchangeUpdate.tx = event.transaction.hash newExchangeUpdate.block = event.block.number.toI32() diff --git a/subgraph.yaml b/subgraph.yaml index 0225876..80f74df 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -98,7 +98,7 @@ templates: kind: ethereum/events apiVersion: 0.0.5 language: wasm/assemblyscript - file: ./src/mappings/erc20Template.ts + file: ./src/mappings/erc20Templates.ts entities: - ERC20Template abis: @@ -114,7 +114,11 @@ templates: - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,indexed address,uint256) handler: handleOrderStarted - event: NewPaymentCollector(indexed address,indexed address,uint256,uint256) - handler: handlerNewPaymentCollector + handler: handleNewPaymentCollector + - event: PublishMarketFees(indexed address,indexed address,uint256) + handler: handlePublishMarketFees + - event: ConsumeMarketFees(indexed address,indexed address,uint256) + handler: handleConsumeMarketFees - kind: ethereum/contract name: BFactory network: barge @@ -165,8 +169,8 @@ templates: handler: handleBpt - event: Transfer(indexed address,indexed address,uint256) handler: handlerBptTransfer - - event: SWAP_FEES(uint,uint,uint,address) - handler: handlerSwapFees + # - event: SWAP_FEES(uint,uint,uint,address) + # handler: handlerSwapFees features: - nonFatalErrors