From 4d6f86294243ec72b553f167c9aba791625897c9 Mon Sep 17 00:00:00 2001 From: Septen Date: Tue, 16 Feb 2021 13:26:25 +0200 Subject: [PATCH] (#25) ERC20Locker: Remove `burnResult` function. --- erc20-connector/contracts/ERC20Locker.sol | 6 ------ erc20-connector/dist/ERC20Locker.full.sol | 6 ------ res/ERC20Locker.full.abi | 2 +- res/ERC20Locker.full.bin | 2 +- 4 files changed, 2 insertions(+), 14 deletions(-) diff --git a/erc20-connector/contracts/ERC20Locker.sol b/erc20-connector/contracts/ERC20Locker.sol index 6aa4e776..1ed40a8b 100644 --- a/erc20-connector/contracts/ERC20Locker.sol +++ b/erc20-connector/contracts/ERC20Locker.sol @@ -40,12 +40,6 @@ contract ERC20Locker is Locker { emit Locked(address(ethToken), msg.sender, amount, accountId); } - function burnResult(bytes memory proofData, uint64 proofBlockHeight) public returns(address) { - ProofDecoder.ExecutionStatus memory status = _parseProof(proofData, proofBlockHeight); - BurnResult memory result = _decodeBurnResult(status.successValue); - return result.token; - } - function unlockToken(bytes memory proofData, uint64 proofBlockHeight) public { ProofDecoder.ExecutionStatus memory status = _parseProof(proofData, proofBlockHeight); BurnResult memory result = _decodeBurnResult(status.successValue); diff --git a/erc20-connector/dist/ERC20Locker.full.sol b/erc20-connector/dist/ERC20Locker.full.sol index 0392376c..e093df1c 100644 --- a/erc20-connector/dist/ERC20Locker.full.sol +++ b/erc20-connector/dist/ERC20Locker.full.sol @@ -1086,12 +1086,6 @@ contract ERC20Locker is Locker { emit Locked(address(ethToken), msg.sender, amount, accountId); } - function burnResult(bytes memory proofData, uint64 proofBlockHeight) public returns(address) { - ProofDecoder.ExecutionStatus memory status = _parseProof(proofData, proofBlockHeight); - BurnResult memory result = _decodeBurnResult(status.successValue); - return result.token; - } - function unlockToken(bytes memory proofData, uint64 proofBlockHeight) public { ProofDecoder.ExecutionStatus memory status = _parseProof(proofData, proofBlockHeight); BurnResult memory result = _decodeBurnResult(status.successValue); diff --git a/res/ERC20Locker.full.abi b/res/ERC20Locker.full.abi index 1d03d3fc..69fa045d 100644 --- a/res/ERC20Locker.full.abi +++ b/res/ERC20Locker.full.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"bytes","name":"nearTokenFactory","type":"bytes"},{"internalType":"contract INearProver","name":"prover","type":"address"},{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"accountId","type":"string"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"Unlocked","type":"event"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"adminDelegatecall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"adminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"proofData","type":"bytes"},{"internalType":"uint64","name":"proofBlockHeight","type":"uint64"}],"name":"burnResult","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ethToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"accountId","type":"string"}],"name":"lockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nearTokenFactory_","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prover_","outputs":[{"internalType":"contract INearProver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"proofData","type":"bytes"},{"internalType":"uint64","name":"proofBlockHeight","type":"uint64"}],"name":"unlockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"usedEvents_","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"bytes","name":"nearTokenFactory","type":"bytes"},{"internalType":"contract INearProver","name":"prover","type":"address"},{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"accountId","type":"string"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"Unlocked","type":"event"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"adminDelegatecall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"adminTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ethToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"accountId","type":"string"}],"name":"lockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nearTokenFactory_","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prover_","outputs":[{"internalType":"contract INearProver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"proofData","type":"bytes"},{"internalType":"uint64","name":"proofBlockHeight","type":"uint64"}],"name":"unlockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"usedEvents_","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/res/ERC20Locker.full.bin b/res/ERC20Locker.full.bin index 2e3761b4..8a0a18ad 100644 --- a/res/ERC20Locker.full.bin +++ b/res/ERC20Locker.full.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b50604051620020e1380380620020e1833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b5060409081526020828101519290910151855192945092506200010f9160019186019062000143565b50600080546001600160a01b039384166001600160a01b0319918216179091556003805492909316911617905550620001df565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018657805160ff1916838001178555620001b6565b82800160010185558215620001b6579182015b82811115620001b657825182559160200191906001019062000199565b50620001c4929150620001c8565b5090565b5b80821115620001c45760008155600101620001c9565b611ef280620001ef6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063b8e9744c11610066578063b8e9744c146102d5578063bb00b698146103fe578063bccc9fcf14610406578063da72c1e814610437578063fc63e1291461046d57610093565b80630889bfe7146100985780634a00c629146101535780635ba3a5a114610202578063a4baf750146102cd575b600080fd5b610151600480360360608110156100ae57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156100dd57600080fd5b8201836020820111156100ef57600080fd5b803590602001918460018302840111600160201b8311171561011057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610475945050505050565b005b6101516004803603604081101561016957600080fd5b810190602081018135600160201b81111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111600160201b831117156101b657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160401b031691506105449050565b6102b16004803603604081101561021857600080fd5b810190602081018135600160201b81111561023257600080fd5b82018360208201111561024457600080fd5b803590602001918460018302840111600160201b8311171561026557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160401b031691506105f09050565b604080516001600160a01b039092168252519081900360200190f35b6102b1610628565b610389600480360360408110156102eb57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561031557600080fd5b82018360208201111561032757600080fd5b803590602001918460018302840111600160201b8311171561034857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610637945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103c35781810151838201526020016103ab565b50505050905090810190601f1680156103f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b161070b565b6104236004803603602081101561041c57600080fd5b503561071a565b604080519115158252519081900360200190f35b6101516004803603606081101561044d57600080fd5b506001600160a01b0381358116916020810135909116906040013561072f565b61038961075f565b61048a6001600160a01b0384163330856107ec565b336001600160a01b0316836001600160a01b03167fdd85dc56b5b4da387bf69c28ec19b1d66e793e0d51b567882fa31dc50bbd32c584846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105045781810151838201526020016104ec565b50505050905090810190601f1680156105315780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3505050565b61054c611b30565b610556838361084c565b9050610560611b5d565b61056d8260600151610c02565b604081015181516020830151929350610599926001600160a01b031691906001600160801b0316610cc8565b805160408083015181516001600160801b0390931683526001600160a01b0316602083015280517f5fd575e9a8dd4ba1e9f434728800fe78c3c5ffccfa6a852bc7415294ecc0c2d59281900390910190a150505050565b60006105fa611b30565b610604848461084c565b905061060e611b5d565b61061b8260600151610c02565b6020015195945050505050565b6003546001600160a01b031681565b6003546060906001600160a01b0316331461065157600080fd5b60006060846001600160a01b0316846040518082805190602001908083835b6020831061068f5780518252601f199092019160209182019101610670565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146106ef576040519150601f19603f3d011682016040523d82523d6000602084013e6106f4565b606091505b50915091508161070357600080fd5b949350505050565b6000546001600160a01b031681565b60026020526000908152604090205460ff1681565b6003546001600160a01b0316331461074657600080fd5b61075a6001600160a01b0384168383610cc8565b505050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107e45780601f106107b9576101008083540402835291602001916107e4565b820191906000526020600020905b8154815290600101906020018083116107c757829003601f168201915b505050505081565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610846908590610d16565b50505050565b610854611b30565b60008054604080516392d68dfd60e01b81526001600160401b0386166024820152600481019182528651604482015286516001600160a01b03909316936392d68dfd93889388939092839260649092019160208701918190849084905b838110156108c95781810151838201526020016108b1565b50505050905090810190601f1680156108f65780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b5051610989576040805162461bcd60e51b8152602060048201526015602482015274141c9bdbd9881cda1bdd5b19081899481d985b1a59605a1b604482015290519081900360640190fd5b610991611b7d565b61099a84610dc7565b90506109a4611b97565b6109ad82610ded565b90506109b882610e2f565b6109f35760405162461bcd60e51b815260040180806020018281038252602c815260200180611e2a602c913960400191505060405180910390fd5b60008160000151604001516020015160200151600081518110610a1257fe5b6020908102919091018101516000818152600290925260409091205490915060ff1615610a86576040805162461bcd60e51b815260206004820152601f60248201527f546865206275726e206576656e742063616e6e6f742062652072657573656400604482015290519081900360640190fd5b600081815260026020819052604091829020805460ff1916600190811790915591518254909182918491600019828416156101000201909116048015610b035780601f10610ae1576101008083540402835291820191610b03565b820191906000526020600020905b815481529060010190602001808311610aef575b5050915050604051809103902082600001516040015160200151608001518051906020012014610b645760405162461bcd60e51b8152600401808060200182810382526052815260200180611dd86052913960600191505060405180910390fd5b8160000151604001516020015160a001519350836040015115610bb85760405162461bcd60e51b815260040180806020018281038252603d815260200180611e56603d913960400191505060405180910390fd5b836020015115610bf95760405162461bcd60e51b815260040180806020018281038252603e815260200180611d65603e913960400191505060405180910390fd5b50505092915050565b610c0a611b5d565b610c12611b7d565b610c1b83610dc7565b90506000610c2882610e3b565b905060ff811615610c80576040805162461bcd60e51b815260206004820152601760248201527f4552525f4e4f545f57495448445241575f524553554c54000000000000000000604482015290519081900360640190fd5b610c8982610ebd565b6001600160801b031683526000610c9f83610eef565b606081901c602086015290506000610cb684610eef565b60601c60408601525092949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261075a9084905b6060610d6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610f2b9092919063ffffffff16565b80519091501561075a57808060200190516020811015610d8a57600080fd5b505161075a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611e93602a913960400191505060405180910390fd5b610dcf611b7d565b6040518060400160405280600081526020018381525090505b919050565b610df5611b97565b610dfe82610f3a565b8152610e0982610f6e565b6020820152610e178261100e565b6040820152610e2582610f6e565b6060820152919050565b60208101515190511490565b6000816001808260000151018260200151511015610e96576040805162461bcd60e51b8152602060048201526013602482015272426f7273683a204f7574206f662072616e676560681b604482015290519081900360640190fd5b6020840151845181518110610ea757fe5b0160200151825190910190915260f81c92915050565b6000610ec8826111b3565b6001600160401b031690506040610ede836111b3565b6001600160401b0316901b17919050565b6000805b6014811015610f255780600802610f0984610e3b565b60f81b6001600160f81b031916901c9190911790600101610ef3565b50919050565b606061070384846000856111df565b610f42611bd6565b610f4b82610f6e565b8152610f568261138a565b6020820152610f64826113ff565b6040820152919050565b610f76611bfd565b610f7f82611578565b63ffffffff166001600160401b0381118015610f9a57600080fd5b50604051908082528060200260200182016040528015610fd457816020015b610fc1611c10565b815260200190600190039081610fb95790505b50815260005b815151811015610f2557610fed836115a0565b8251805183908110610ffb57fe5b6020908102919091010152600101610fda565b611016611c27565b61101f8261138a565b815261102a8261138a565b602082015261103882611604565b816040018190525060028082604001516101000151836020015160405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083106110a75780518252601f199092019160209182019101611088565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110e6573d6000803e3d6000fd5b5050506040513d60208110156110fb57600080fd5b50518251604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b602083106111535780518252601f199092019160209182019101611134565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015611192573d6000803e3d6000fd5b5050506040513d60208110156111a757600080fd5b50516060820152919050565b60006111be82611578565b63ffffffff16905060206111d183611578565b63ffffffff16901b17919050565b60606111ea856116a1565b61123b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061127a5780518252601f19909201916020918201910161125b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146112dc576040519150601f19603f3d011682016040523d82523d6000602084013e6112e1565b606091505b509150915081156112f55791506107039050565b8051156113055780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134f578181015183820152602001611337565b50505050905090810190601f16801561137c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60008160208082600001510182602001515110156113e5576040805162461bcd60e51b8152602060048201526013602482015272426f7273683a204f7574206f662072616e676560681b604482015290519081900360640190fd5b602080850151945190940190930151815190930190525090565b611407611c53565b6114108261138a565b815261141b826116a7565b81602001819052506000816020015160c001515160010190506002600082901c60ff16600883901c60ff16601084901c60ff16601885901c60ff168660000151876020015160c00151604051602001808760ff1660f81b81526001018660ff1660f81b81526001018560ff1660f81b81526001018460ff1660f81b8152600101838152602001828051906020019060200280838360005b838110156114ca5781810151838201526020016114b2565b5050505090500196505050505050506040516020818303038152906040526040518082805190602001908083835b602083106115175780518252601f1990920191602091820191016114f8565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015611556573d6000803e3d6000fd5b5050506040513d602081101561156b57600080fd5b5051604083015250919050565b600061158382611975565b61ffff169050601061159483611975565b61ffff16901b17919050565b6115a8611c10565b6115b18261138a565b81526115bc82610e3b565b60ff1660208201819052600211610de85760405162461bcd60e51b8152600401808060200182810382526037815260200180611d2e6037913960400191505060405180910390fd5b61160c611c6e565b6116178260d061199b565b610100820152611626826111b3565b6001600160401b0316815261163a8261138a565b60208201526116488261138a565b60408201526116568261138a565b60608201526116648261138a565b6080820152611672826111b3565b6001600160401b031660a08201526116898261138a565b60c08201526116978261138a565b60e0820152919050565b3b151590565b6116af611cba565b6116b882611578565b63ffffffff166001600160401b03811180156116d357600080fd5b5060405190808252806020026020018201604052801561170757816020015b60608152602001906001900390816116f25790505b50815260005b81515181101561174157611720836119b7565b825180518390811061172e57fe5b602090810291909101015260010161170d565b50815161174d83611578565b63ffffffff166001600160401b038111801561176857600080fd5b50604051908082528060200260200182016040528015611792578160200160208202803683370190505b50602083015260005b8260200151518110156117d4576117b18461138a565b836020015182815181106117c157fe5b602090810291909101015260010161179b565b506117de836111b3565b6001600160401b031660408301526117f583610ebd565b6001600160801b0316606083015261180c836119b7565b608083015261181a83611a4e565b60a083015282518251516001016001600160401b038111801561183c57600080fd5b50604051908082528060200260200182016040528015611866578160200160208202803683370190505b5060c084015281845261187b8483830361199b565b8360c0015160008151811061188c57fe5b602090810291909101015280845260005b83515181101561196d576002846000015182815181106118b957fe5b60200260200101516040518082805190602001908083835b602083106118f05780518252601f1990920191602091820191016118d1565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa15801561192f573d6000803e3d6000fd5b5050506040513d602081101561194457600080fd5b505160c085015180516001840190811061195a57fe5b602090810291909101015260010161189d565b505050919050565b600061198082610e3b565b60ff169050600861199083610e3b565b60ff16901b17919050565b60006119b08360200151846000015184611b0e565b9392505050565b60606119c282611578565b63ffffffff166001600160401b03811180156119dd57600080fd5b506040519080825280601f01601f191660200182016040528015611a08576020820181803683370190505b50905060005b8151811015610f2557611a2083610e3b565b60f81b828281518110611a2f57fe5b60200101906001600160f81b031916908160001a905350600101611a0e565b611a56611b30565b611a5f82610e3b565b60ff16808252611a755760016020820152610de8565b806000015160ff1660011415611a915760016040820152610de8565b806000015160ff1660021415611ab457611aaa826119b7565b6060820152610de8565b806000015160ff1660031415611ad757611acd8261138a565b6080820152610de8565b60405162461bcd60e51b8152600401808060200182810382526035815260200180611da36035913960400191505060405180910390fd5b6000611b18611d0f565b6020818486602089010160025afa5051949350505050565b6040805160a081018252600080825260208201819052918101829052606080820152608081019190915290565b604080516060810182526000808252602082018190529181019190915290565b604051806040016040528060008152602001606081525090565b6040518060800160405280611baa611bd6565b8152602001611bb7611bfd565b8152602001611bc4611c27565b8152602001611bd1611bfd565b905290565b6040518060600160405280611be9611bfd565b815260006020820152604001611bd1611c53565b6040518060200160405280606081525090565b604080518082019091526000808252602082015290565b6040805160808101825260008082526020820152908101611c46611c6e565b8152600060209091015290565b60408051606081019091526000815260208101611c46611cba565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040518060e00160405280606081526020016060815260200160006001600160401b0316815260200160006001600160801b0316815260200160608152602001611d02611b30565b8152602001606081525090565b6040518060200160405280600190602082028036833750919291505056fe50726f6f664465636f6465723a204d65726b6c65506174684974656d20646972656374696f6e2073686f756c642062652030206f72203143616e6e6f742075736520756e6b6e6f776e20657865637574696f6e206f7574636f6d6520666f7220756e6c6f636b696e672074686520746f6b656e732e4e6561724465636f6465723a206465636f6465457865637574696f6e53746174757320696e646578206f7574206f662072616e676543616e206f6e6c7920756e6c6f636b20746f6b656e732066726f6d20746865206c696e6b6564206d696e7461626c652066756e6769626c6520746f6b656e206f6e204e65617220626c6f636b636861696e2e417267756d656e742073686f756c6420626520657861637420626f7273682073657269616c697a6174696f6e43616e6e6f7420757365206661696c656420657865637574696f6e206f7574636f6d6520666f7220756e6c6f636b696e672074686520746f6b656e732e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ed82c259b52636a96ebe051aa6ceae2ca8a89fa2c94e2ddf28e49191f58b7ae964736f6c634300060c0033 \ No newline at end of file +60806040523480156200001157600080fd5b5060405162001ff538038062001ff5833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b5060409081526020828101519290910151855192945092506200010f9160019186019062000143565b50600080546001600160a01b039384166001600160a01b0319918216179091556003805492909316911617905550620001df565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018657805160ff1916838001178555620001b6565b82800160010185558215620001b6579182015b82811115620001b657825182559160200191906001019062000199565b50620001c4929150620001c8565b5090565b5b80821115620001c45760008155600101620001c9565b611e0680620001ef6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063bb00b6981161005b578063bb00b6981461034a578063bccc9fcf14610352578063da72c1e814610383578063fc63e129146103b957610088565b80630889bfe71461008d5780634a00c6291461014a578063a4baf750146101fb578063b8e9744c1461021f575b600080fd5b610148600480360360608110156100a357600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156100d357600080fd5b8201836020820111156100e557600080fd5b8035906020019184600183028401116401000000008311171561010757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103c1945050505050565b005b6101486004803603604081101561016057600080fd5b81019060208101813564010000000081111561017b57600080fd5b82018360208201111561018d57600080fd5b803590602001918460018302840111640100000000831117156101af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160401b031691506104909050565b61020361053c565b604080516001600160a01b039092168252519081900360200190f35b6102d56004803603604081101561023557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561026057600080fd5b82018360208201111561027257600080fd5b8035906020019184600183028401116401000000008311171561029457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061054b945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020361061f565b61036f6004803603602081101561036857600080fd5b503561062e565b604080519115158252519081900360200190f35b6101486004803603606081101561039957600080fd5b506001600160a01b03813581169160208101359091169060400135610643565b6102d5610673565b6103d66001600160a01b038416333085610700565b336001600160a01b0316836001600160a01b03167fdd85dc56b5b4da387bf69c28ec19b1d66e793e0d51b567882fa31dc50bbd32c584846040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610450578181015183820152602001610438565b50505050905090810190601f16801561047d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3505050565b610498611a44565b6104a28383610760565b90506104ac611a71565b6104b98260600151610b16565b6040810151815160208301519293506104e5926001600160a01b031691906001600160801b0316610bdc565b805160408083015181516001600160801b0390931683526001600160a01b0316602083015280517f5fd575e9a8dd4ba1e9f434728800fe78c3c5ffccfa6a852bc7415294ecc0c2d59281900390910190a150505050565b6003546001600160a01b031681565b6003546060906001600160a01b0316331461056557600080fd5b60006060846001600160a01b0316846040518082805190602001908083835b602083106105a35780518252601f199092019160209182019101610584565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610603576040519150601f19603f3d011682016040523d82523d6000602084013e610608565b606091505b50915091508161061757600080fd5b949350505050565b6000546001600160a01b031681565b60026020526000908152604090205460ff1681565b6003546001600160a01b0316331461065a57600080fd5b61066e6001600160a01b0384168383610bdc565b505050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106f85780601f106106cd576101008083540402835291602001916106f8565b820191906000526020600020905b8154815290600101906020018083116106db57829003601f168201915b505050505081565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261075a908590610c2a565b50505050565b610768611a44565b60008054604080516392d68dfd60e01b81526001600160401b0386166024820152600481019182528651604482015286516001600160a01b03909316936392d68dfd93889388939092839260649092019160208701918190849084905b838110156107dd5781810151838201526020016107c5565b50505050905090810190601f16801561080a5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561082857600080fd5b505afa15801561083c573d6000803e3d6000fd5b505050506040513d602081101561085257600080fd5b505161089d576040805162461bcd60e51b8152602060048201526015602482015274141c9bdbd9881cda1bdd5b19081899481d985b1a59605a1b604482015290519081900360640190fd5b6108a5611a91565b6108ae84610cdb565b90506108b8611aab565b6108c182610d01565b90506108cc82610d43565b6109075760405162461bcd60e51b815260040180806020018281038252602c815260200180611d3e602c913960400191505060405180910390fd5b6000816000015160400151602001516020015160008151811061092657fe5b6020908102919091018101516000818152600290925260409091205490915060ff161561099a576040805162461bcd60e51b815260206004820152601f60248201527f546865206275726e206576656e742063616e6e6f742062652072657573656400604482015290519081900360640190fd5b600081815260026020819052604091829020805460ff1916600190811790915591518254909182918491600019828416156101000201909116048015610a175780601f106109f5576101008083540402835291820191610a17565b820191906000526020600020905b815481529060010190602001808311610a03575b5050915050604051809103902082600001516040015160200151608001518051906020012014610a785760405162461bcd60e51b8152600401808060200182810382526052815260200180611cec6052913960600191505060405180910390fd5b8160000151604001516020015160a001519350836040015115610acc5760405162461bcd60e51b815260040180806020018281038252603d815260200180611d6a603d913960400191505060405180910390fd5b836020015115610b0d5760405162461bcd60e51b815260040180806020018281038252603e815260200180611c79603e913960400191505060405180910390fd5b50505092915050565b610b1e611a71565b610b26611a91565b610b2f83610cdb565b90506000610b3c82610d4f565b905060ff811615610b94576040805162461bcd60e51b815260206004820152601760248201527f4552525f4e4f545f57495448445241575f524553554c54000000000000000000604482015290519081900360640190fd5b610b9d82610dd1565b6001600160801b031683526000610bb383610e03565b606081901c602086015290506000610bca84610e03565b60601c60408601525092949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261066e9084905b6060610c7f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e3f9092919063ffffffff16565b80519091501561066e57808060200190516020811015610c9e57600080fd5b505161066e5760405162461bcd60e51b815260040180806020018281038252602a815260200180611da7602a913960400191505060405180910390fd5b610ce3611a91565b6040518060400160405280600081526020018381525090505b919050565b610d09611aab565b610d1282610e4e565b8152610d1d82610e82565b6020820152610d2b82610f22565b6040820152610d3982610e82565b6060820152919050565b60208101515190511490565b6000816001808260000151018260200151511015610daa576040805162461bcd60e51b8152602060048201526013602482015272426f7273683a204f7574206f662072616e676560681b604482015290519081900360640190fd5b6020840151845181518110610dbb57fe5b0160200151825190910190915260f81c92915050565b6000610ddc826110c7565b6001600160401b031690506040610df2836110c7565b6001600160401b0316901b17919050565b6000805b6014811015610e395780600802610e1d84610d4f565b60f81b6001600160f81b031916901c9190911790600101610e07565b50919050565b606061061784846000856110f3565b610e56611aea565b610e5f82610e82565b8152610e6a8261129e565b6020820152610e7882611313565b6040820152919050565b610e8a611b11565b610e938261148c565b63ffffffff166001600160401b0381118015610eae57600080fd5b50604051908082528060200260200182016040528015610ee857816020015b610ed5611b24565b815260200190600190039081610ecd5790505b50815260005b815151811015610e3957610f01836114b4565b8251805183908110610f0f57fe5b6020908102919091010152600101610eee565b610f2a611b3b565b610f338261129e565b8152610f3e8261129e565b6020820152610f4c82611518565b816040018190525060028082604001516101000151836020015160405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610fbb5780518252601f199092019160209182019101610f9c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610ffa573d6000803e3d6000fd5b5050506040513d602081101561100f57600080fd5b50518251604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b602083106110675780518252601f199092019160209182019101611048565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110a6573d6000803e3d6000fd5b5050506040513d60208110156110bb57600080fd5b50516060820152919050565b60006110d28261148c565b63ffffffff16905060206110e58361148c565b63ffffffff16901b17919050565b60606110fe856115b5565b61114f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061118e5780518252601f19909201916020918201910161116f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146111f0576040519150601f19603f3d011682016040523d82523d6000602084013e6111f5565b606091505b509150915081156112095791506106179050565b8051156112195780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561126357818101518382015260200161124b565b50505050905090810190601f1680156112905780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60008160208082600001510182602001515110156112f9576040805162461bcd60e51b8152602060048201526013602482015272426f7273683a204f7574206f662072616e676560681b604482015290519081900360640190fd5b602080850151945190940190930151815190930190525090565b61131b611b67565b6113248261129e565b815261132f826115bb565b81602001819052506000816020015160c001515160010190506002600082901c60ff16600883901c60ff16601084901c60ff16601885901c60ff168660000151876020015160c00151604051602001808760ff1660f81b81526001018660ff1660f81b81526001018560ff1660f81b81526001018460ff1660f81b8152600101838152602001828051906020019060200280838360005b838110156113de5781810151838201526020016113c6565b5050505090500196505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061142b5780518252601f19909201916020918201910161140c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa15801561146a573d6000803e3d6000fd5b5050506040513d602081101561147f57600080fd5b5051604083015250919050565b600061149782611889565b61ffff16905060106114a883611889565b61ffff16901b17919050565b6114bc611b24565b6114c58261129e565b81526114d082610d4f565b60ff1660208201819052600211610cfc5760405162461bcd60e51b8152600401808060200182810382526037815260200180611c426037913960400191505060405180910390fd5b611520611b82565b61152b8260d06118af565b61010082015261153a826110c7565b6001600160401b0316815261154e8261129e565b602082015261155c8261129e565b604082015261156a8261129e565b60608201526115788261129e565b6080820152611586826110c7565b6001600160401b031660a082015261159d8261129e565b60c08201526115ab8261129e565b60e0820152919050565b3b151590565b6115c3611bce565b6115cc8261148c565b63ffffffff166001600160401b03811180156115e757600080fd5b5060405190808252806020026020018201604052801561161b57816020015b60608152602001906001900390816116065790505b50815260005b81515181101561165557611634836118cb565b825180518390811061164257fe5b6020908102919091010152600101611621565b5081516116618361148c565b63ffffffff166001600160401b038111801561167c57600080fd5b506040519080825280602002602001820160405280156116a6578160200160208202803683370190505b50602083015260005b8260200151518110156116e8576116c58461129e565b836020015182815181106116d557fe5b60209081029190910101526001016116af565b506116f2836110c7565b6001600160401b0316604083015261170983610dd1565b6001600160801b03166060830152611720836118cb565b608083015261172e83611962565b60a083015282518251516001016001600160401b038111801561175057600080fd5b5060405190808252806020026020018201604052801561177a578160200160208202803683370190505b5060c084015281845261178f848383036118af565b8360c001516000815181106117a057fe5b602090810291909101015280845260005b835151811015611881576002846000015182815181106117cd57fe5b60200260200101516040518082805190602001908083835b602083106118045780518252601f1990920191602091820191016117e5565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015611843573d6000803e3d6000fd5b5050506040513d602081101561185857600080fd5b505160c085015180516001840190811061186e57fe5b60209081029190910101526001016117b1565b505050919050565b600061189482610d4f565b60ff16905060086118a483610d4f565b60ff16901b17919050565b60006118c48360200151846000015184611a22565b9392505050565b60606118d68261148c565b63ffffffff166001600160401b03811180156118f157600080fd5b506040519080825280601f01601f19166020018201604052801561191c576020820181803683370190505b50905060005b8151811015610e395761193483610d4f565b60f81b82828151811061194357fe5b60200101906001600160f81b031916908160001a905350600101611922565b61196a611a44565b61197382610d4f565b60ff168082526119895760016020820152610cfc565b806000015160ff16600114156119a55760016040820152610cfc565b806000015160ff16600214156119c8576119be826118cb565b6060820152610cfc565b806000015160ff16600314156119eb576119e18261129e565b6080820152610cfc565b60405162461bcd60e51b8152600401808060200182810382526035815260200180611cb76035913960400191505060405180910390fd5b6000611a2c611c23565b6020818486602089010160025afa5051949350505050565b6040805160a081018252600080825260208201819052918101829052606080820152608081019190915290565b604080516060810182526000808252602082018190529181019190915290565b604051806040016040528060008152602001606081525090565b6040518060800160405280611abe611aea565b8152602001611acb611b11565b8152602001611ad8611b3b565b8152602001611ae5611b11565b905290565b6040518060600160405280611afd611b11565b815260006020820152604001611ae5611b67565b6040518060200160405280606081525090565b604080518082019091526000808252602082015290565b6040805160808101825260008082526020820152908101611b5a611b82565b8152600060209091015290565b60408051606081019091526000815260208101611b5a611bce565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040518060e00160405280606081526020016060815260200160006001600160401b0316815260200160006001600160801b0316815260200160608152602001611c16611a44565b8152602001606081525090565b6040518060200160405280600190602082028036833750919291505056fe50726f6f664465636f6465723a204d65726b6c65506174684974656d20646972656374696f6e2073686f756c642062652030206f72203143616e6e6f742075736520756e6b6e6f776e20657865637574696f6e206f7574636f6d6520666f7220756e6c6f636b696e672074686520746f6b656e732e4e6561724465636f6465723a206465636f6465457865637574696f6e53746174757320696e646578206f7574206f662072616e676543616e206f6e6c7920756e6c6f636b20746f6b656e732066726f6d20746865206c696e6b6564206d696e7461626c652066756e6769626c6520746f6b656e206f6e204e65617220626c6f636b636861696e2e417267756d656e742073686f756c6420626520657861637420626f7273682073657269616c697a6174696f6e43616e6e6f7420757365206661696c656420657865637574696f6e206f7574636f6d6520666f7220756e6c6f636b696e672074686520746f6b656e732e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a24faf4c02beb0ec15d5dd747a47e3240d647f5b8328487b32abadea802241bf64736f6c634300060c0033 \ No newline at end of file