From d6dc59b8dc7ebb11835a570358a68eb4e65cc4fd Mon Sep 17 00:00:00 2001 From: Juan Ignacio Ubeira Date: Wed, 19 Jun 2024 13:18:59 -0300 Subject: [PATCH] Missing artifact. --- .../artifact/OmniVotingEscrow.json | 903 ++++++++++++++++++ 1 file changed, 903 insertions(+) create mode 100644 tasks/20230524-mainnet-lz-omni-voting-escrow/artifact/OmniVotingEscrow.json diff --git a/tasks/20230524-mainnet-lz-omni-voting-escrow/artifact/OmniVotingEscrow.json b/tasks/20230524-mainnet-lz-omni-voting-escrow/artifact/OmniVotingEscrow.json new file mode 100644 index 00000000..aec22205 --- /dev/null +++ b/tasks/20230524-mainnet-lz-omni-voting-escrow/artifact/OmniVotingEscrow.json @@ -0,0 +1,903 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OmniVotingEscrow", + "sourceName": "contracts/OmniVotingEscrow.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_lzEndpoint", + "type": "address" + }, + { + "internalType": "address", + "name": "_votingEscrowRemapper", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_reason", + "type": "bytes" + } + ], + "name": "MessageFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_payloadHash", + "type": "bytes32" + } + ], + "name": "RetryMessageSuccess", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "_type", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_minDstGas", + "type": "uint256" + } + ], + "name": "SetMinDstGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "precrime", + "type": "address" + } + ], + "name": "SetPrecrime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "SetTrustedRemote", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "SetTrustedRemoteAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "dstChainId", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "int128", + "name": "bias", + "type": "int128" + }, + { + "internalType": "int128", + "name": "slope", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "ts", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blk", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct IVotingEscrow.Point", + "name": "totalSupplyPoint", + "type": "tuple" + } + ], + "name": "TotalSupplyToChain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "dstChainId", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "address", + "name": "localUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "remoteUser", + "type": "address" + }, + { + "components": [ + { + "internalType": "int128", + "name": "bias", + "type": "int128" + }, + { + "internalType": "int128", + "name": "slope", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "ts", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blk", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct IVotingEscrow.Point", + "name": "userPoint", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "int128", + "name": "bias", + "type": "int128" + }, + { + "internalType": "int128", + "name": "slope", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "ts", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blk", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct IVotingEscrow.Point", + "name": "totalSupplyPoint", + "type": "tuple" + } + ], + "name": "UserBalToChain", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "_useZro", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "estimateSendUserBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "zroFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "failedMessages", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "forceResumeReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + } + ], + "name": "getConfig", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + } + ], + "name": "getTrustedRemoteAddress", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + } + ], + "name": "isTrustedRemote", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lzEndpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "minDstGasLookup", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "nonblockingLzReceive", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "precrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_srcAddress", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "_nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "_payload", + "type": "bytes" + } + ], + "name": "retryMessage", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "address payable", + "name": "_refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "sendTotalSupply", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_localUser", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "address payable", + "name": "_refundAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_zroPaymentAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_adapterParams", + "type": "bytes" + } + ], + "name": "sendUserBalance", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_chainId", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_configType", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_config", + "type": "bytes" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_dstChainId", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "_packetType", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "_minGas", + "type": "uint256" + } + ], + "name": "setMinDstGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_precrime", + "type": "address" + } + ], + "name": "setPrecrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setReceiveVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_version", + "type": "uint16" + } + ], + "name": "setSendVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_srcChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_path", + "type": "bytes" + } + ], + "name": "setTrustedRemote", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_remoteChainId", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_remoteAddress", + "type": "bytes" + } + ], + "name": "setTrustedRemoteAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "name": "trustedRemoteLookup", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingEscrow", + "outputs": [ + { + "internalType": "contract IVotingEscrow", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "votingEscrowRemapper", + "outputs": [ + { + "internalType": "contract IVotingEscrowRemapper", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60e06040526005805463ffffffff1916620100001790553480156200002357600080fd5b5060405162002fef38038062002fef8339810160408190526200004691620001b8565b818062000053336200014f565b6001600160a01b03908116608052821615159050620000c95760405162461bcd60e51b815260206004820152602860248201527f4f6d6e69566f74696e67457363726f773a2072656d61707065722063616e6e6f604482015267074206265203078360c41b606482015260840160405180910390fd5b6001600160a01b03811660c081905260408051630458184560e11b815290516308b0308a916004808201926020929091908290030181865afa15801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a9190620001f7565b6001600160a01b031660a052506200021e9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620001b557600080fd5b50565b60008060408385031215620001cc57600080fd5b8251620001d9816200019f565b6020840151909250620001ec816200019f565b809150509250929050565b6000602082840312156200020a57600080fd5b815162000217816200019f565b9392505050565b60805160a05160c051612d1c620002d360003960008181610269015261118901526000818161032b01528181610ad201528181610b7601528181610bf901528181610c6c01528181610d0501528181610eab01528181610f4601528181610fd80152818161104901526110ed0152600081816104f4015281816105ec0152818161083b015281816108c40152818161097401528181610e22015281816116ab01528181611adc0152611e100152612d1c6000f3fe6080604052600436106101b65760003560e01c80637533d788116100ec578063baf3292d1161008a578063df2a5b3b11610064578063df2a5b3b14610569578063eb8d72b714610589578063f2fde38b146105a9578063f5ecbdbc146105c957600080fd5b8063baf3292d14610516578063cbed8b9c14610536578063d1deba1f1461055657600080fd5b8063950c8a74116100c6578063950c8a74146104825780639f38369a146104a2578063a6c3d165146104c2578063b353aaa7146104e257600080fd5b80637533d788146103ff5780638cfd8f5c1461042c5780638da5cb5b1461046457600080fd5b806342d65a8d116101595780635b8c41e6116101335780635b8c41e61461034d57806365d092d0146103aa57806366ad5c8a146103ca578063715018a6146103ea57600080fd5b806342d65a8d146102e65780634a759489146103065780634f2bfe5b1461031957600080fd5b806316334c8f1161019557806316334c8f1461021d578063363bf0de146102575780633d8b38f6146102a3578063416b154a146102d357600080fd5b80621d3567146101bb57806307e0db17146101dd57806310ddb137146101fd575b600080fd5b3480156101c757600080fd5b506101db6101d636600461224e565b6105e9565b005b3480156101e957600080fd5b506101db6101f83660046122e1565b61081a565b34801561020957600080fd5b506101db6102183660046122e1565b6108a3565b34801561022957600080fd5b5061023d6102383660046122fc565b6108fb565b604080519283526020830191909152015b60405180910390f35b34801561026357600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b3480156102af57600080fd5b506102c36102be366004612363565b610a01565b604051901515815260200161024e565b6101db6102e136600461248d565b610ace565b3480156102f257600080fd5b506101db610301366004612363565b610e03565b6101db6103143660046124ff565b610e89565b34801561032557600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561035957600080fd5b5061039c610368366004612584565b6004602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b60405190815260200161024e565b3480156103b657600080fd5b5061023d6103c53660046122fc565b6112a0565b3480156103d657600080fd5b506101db6103e536600461224e565b611303565b3480156103f657600080fd5b506101db6113df565b34801561040b57600080fd5b5061041f61041a3660046122e1565b6113f3565b60405161024e919061263d565b34801561043857600080fd5b5061039c610447366004612650565b600260209081526000928352604080842090915290825290205481565b34801561047057600080fd5b506000546001600160a01b031661028b565b34801561048e57600080fd5b5060035461028b906001600160a01b031681565b3480156104ae57600080fd5b5061041f6104bd3660046122e1565b61148d565b3480156104ce57600080fd5b506101db6104dd366004612363565b61159d565b3480156104ee57600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052257600080fd5b506101db610531366004612683565b611630565b34801561054257600080fd5b506101db6105513660046126a0565b61168c565b6101db61056436600461224e565b611721565b34801561057557600080fd5b506101db61058436600461270e565b611926565b34801561059557600080fd5b506101db6105a4366004612363565b6119d8565b3480156105b557600080fd5b506101db6105c4366004612683565b611a32565b3480156105d557600080fd5b5061041f6105e436600461274a565b611aab565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146106665760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff86166000908152600160205260408120805461068490612797565b80601f01602080910402602001604051908101604052809291908181526020018280546106b090612797565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b50505050509050805186869050148015610718575060008151115b801561074057508051602082012060405161073690889088906127d2565b6040518091039020145b61079b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b606482015260840161065d565b6108118787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b5c92505050565b50505050505050565b610822611c66565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050505050565b6108ab611c66565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb1379060240161086e565b6000806000600560029054906101000a900461ffff1660405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525060405160200161094d92919061280e565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906109b3908a90309086908c908c908c9060040161284f565b6040805180830381865afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f391906128a5565b925092505094509492505050565b61ffff831660009081526001602052604081208054829190610a2290612797565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90612797565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b505050505090508383604051610ab29291906127d2565b60405180910390208180519060200120149150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5291906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be391906128f4565b9050610bf28160400151611cc0565b15610d7d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906128c9565b60405163d1febfb960e01b8152600481018290529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1febfb9906024016080604051808303816000875af1158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a91906128f4565b90505b6000600560029054906101000a900461ffff1682604051602001610da292919061280e565b6040516020818303038152906040529050610dc1878288888834611cf1565b7fd76af77f4ffbd9969fdb15b1c1268d40cd4bf1093905e67639f369cb9f44c1728783604051610df292919061280e565b60405180910390a150505050505050565b610e0b611c66565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90610e5b90869086908690600401612965565b600060405180830381600087803b158015610e7557600080fd5b505af1158015610811573d6000803e3d6000fd5b60405163010ae75760e01b81526001600160a01b0386811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063010ae757906024016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906128c9565b6040516328d09d4760e01b81526001600160a01b038881166004830152602482018390529192506000917f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906044016080604051808303816000875af1158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb391906128f4565b60405163adc6358960e01b81526001600160a01b0389811660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063adc6358990602401602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104391906128c9565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c991906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a91906128f4565b6040516317b4eb8760e31b81526001600160a01b038c8116600483015261ffff8c1660248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063bda75c3890604401602060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190612983565b905060006001600160a01b03821661120c578b61120e565b815b6005546040519192506000916112339161ffff1690849089908b9089906020016129a0565b60405160208183030381529060405290506112528c828d8d8d34611cf1565b7f3689d0fa90a175cc766502dc62c2abdee9ca4b276d4315adf98339a8354755808c8e848a886040516112899594939291906129e6565b60405180910390a150505050505050505050505050565b6005546040805160808082018352600080835260208084018290528385018290526060808501839052855193840186528284528382018390528386018390528301829052935190948594859461094d9461ffff9093169386938493909101612a16565b3330146113615760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b606482015260840161065d565b6113d78686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611e8c92505050565b505050505050565b6113e7611c66565b6113f16000611ee4565b565b6001602052600090815260409020805461140c90612797565b80601f016020809104026020016040519081016040528092919081815260200182805461143890612797565b80156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b505050505081565b61ffff81166000908152600160205260408120805460609291906114b090612797565b80601f01602080910402602001604051908101604052809291908181526020018280546114dc90612797565b80156115295780601f106114fe57610100808354040283529160200191611529565b820191906000526020600020905b81548152906001019060200180831161150c57829003601f168201915b505050505090508051600014156115825760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f7264000000604482015260640161065d565b610ac76000601483516115959190612a5d565b839190611f34565b6115a5611c66565b8181306040516020016115ba93929190612a74565b60408051601f1981840301815291815261ffff851660009081526001602090815291902082516115ef939192909101906120cb565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161162393929190612965565b60405180910390a1505050565b611638611c66565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b611694611c66565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906116e89088908890889088908890600401612a9a565b600060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050505050505050565b61ffff8616600090815260046020526040808220905161174490889088906127d2565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806117c45760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b606482015260840161065d565b8083836040516117d59291906127d2565b6040518091039020146118345760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b606482015260840161065d565b61ffff8716600090815260046020526040808220905161185790899089906127d2565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f880182900482028301820190528682526118ef918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611e8c92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051610df2959493929190612ad3565b61192e611c66565b600081116119765760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b604482015260640161065d565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611623565b6119e0611c66565b61ffff831660009081526001602052604090206119fe90838361214f565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161162393929190612965565b611a3a611c66565b6001600160a01b038116611a9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065d565b611aa881611ee4565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611b2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b539190810190612b0e565b95945050505050565b600080611bbf5a60966366ad5c8a60e01b89898989604051602401611b849493929190612b7b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612041565b91509150816113d7578280519060200120600460008861ffff1661ffff16815260200190815260200160002086604051611bf99190612bb9565b9081526040805191829003602090810183206001600160401b0389166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90611c569088908890889088908790612bd5565b60405180910390a1505050505050565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b600042611cd062093a8084612c33565b611cdd9062093a80612c55565b611cea9062093a80612c74565b1092915050565b61ffff861660009081526001602052604081208054611d0f90612797565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3b90612797565b8015611d885780601f10611d5d57610100808354040283529160200191611d88565b820191906000526020600020905b815481529060010190602001808311611d6b57829003601f168201915b50505050509050805160001415611dfa5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b606482015260840161065d565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490611e51908b9086908c908c908c908c90600401612c8c565b6000604051808303818588803b158015611e6a57600080fd5b505af1158015611e7e573d6000803e3d6000fd5b505050505050505050505050565b60405162461bcd60e51b815260206004820152602760248201527f4f6d6e69566f74696e67457363726f773a2063616e6e6f742072656365697665604482015266206c7a4d73677360c81b606482015260840161065d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081611f4281601f612c74565b1015611f815760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161065d565b611f8b8284612c74565b84511015611fcf5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161065d565b606082158015611fee5760405191506000825260208201604052612038565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561202757805183526020928301920161200f565b5050858452601f01601f1916604052505b50949350505050565b6000606060008060008661ffff166001600160401b03811115612066576120666123ca565b6040519080825280601f01601f191660200182016040528015612090576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156120b2578692505b828152826000602083013e909890975095505050505050565b8280546120d790612797565b90600052602060002090601f0160209004810192826120f9576000855561213f565b82601f1061211257805160ff191683800117855561213f565b8280016001018555821561213f579182015b8281111561213f578251825591602001919060010190612124565b5061214b9291506121c3565b5090565b82805461215b90612797565b90600052602060002090601f01602090048101928261217d576000855561213f565b82601f106121965782800160ff1982351617855561213f565b8280016001018555821561213f579182015b8281111561213f5782358255916020019190600101906121a8565b5b8082111561214b57600081556001016121c4565b803561ffff811681146121ea57600080fd5b919050565b60008083601f84011261220157600080fd5b5081356001600160401b0381111561221857600080fd5b60208301915083602082850101111561223057600080fd5b9250929050565b80356001600160401b03811681146121ea57600080fd5b6000806000806000806080878903121561226757600080fd5b612270876121d8565b955060208701356001600160401b038082111561228c57600080fd5b6122988a838b016121ef565b90975095508591506122ac60408a01612237565b945060608901359150808211156122c257600080fd5b506122cf89828a016121ef565b979a9699509497509295939492505050565b6000602082840312156122f357600080fd5b610ac7826121d8565b6000806000806060858703121561231257600080fd5b61231b856121d8565b93506020850135801515811461233057600080fd5b925060408501356001600160401b0381111561234b57600080fd5b612357878288016121ef565b95989497509550505050565b60008060006040848603121561237857600080fd5b612381846121d8565b925060208401356001600160401b0381111561239c57600080fd5b6123a8868287016121ef565b9497909650939450505050565b6001600160a01b0381168114611aa857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612408576124086123ca565b604052919050565b60006001600160401b03821115612429576124296123ca565b50601f01601f191660200190565b600082601f83011261244857600080fd5b813561245b61245682612410565b6123e0565b81815284602083860101111561247057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156124a357600080fd5b6124ac856121d8565b935060208501356124bc816123b5565b925060408501356124cc816123b5565b915060608501356001600160401b038111156124e757600080fd5b6124f387828801612437565b91505092959194509250565b600080600080600060a0868803121561251757600080fd5b8535612522816123b5565b9450612530602087016121d8565b93506040860135612540816123b5565b92506060860135612550816123b5565b915060808601356001600160401b0381111561256b57600080fd5b61257788828901612437565b9150509295509295909350565b60008060006060848603121561259957600080fd5b6125a2846121d8565b925060208401356001600160401b038111156125bd57600080fd5b6125c986828701612437565b9250506125d860408501612237565b90509250925092565b60005b838110156125fc5781810151838201526020016125e4565b8381111561260b576000848401525b50505050565b600081518084526126298160208601602086016125e1565b601f01601f19169290920160200192915050565b602081526000610ac76020830184612611565b6000806040838503121561266357600080fd5b61266c836121d8565b915061267a602084016121d8565b90509250929050565b60006020828403121561269557600080fd5b8135610ac7816123b5565b6000806000806000608086880312156126b857600080fd5b6126c1866121d8565b94506126cf602087016121d8565b93506040860135925060608601356001600160401b038111156126f157600080fd5b6126fd888289016121ef565b969995985093965092949392505050565b60008060006060848603121561272357600080fd5b61272c846121d8565b925061273a602085016121d8565b9150604084013590509250925092565b6000806000806080858703121561276057600080fd5b612769856121d8565b9350612777602086016121d8565b92506040850135612787816123b5565b9396929550929360600135925050565b600181811c908216806127ab57607f821691505b602082108114156127cc57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b8051600f0b82526020810151600f0b602083015260408101516040830152606081015160608301525050565b61ffff8316815260a08101610ac760208301846127e2565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff871681526001600160a01b038616602082015260a06040820181905260009061287d90830187612611565b85151560608401528281036080840152612898818587612826565b9998505050505050505050565b600080604083850312156128b857600080fd5b505080516020909101519092909150565b6000602082840312156128db57600080fd5b5051919050565b8051600f81900b81146121ea57600080fd5b60006080828403121561290657600080fd5b604051608081018181106001600160401b0382111715612928576129286123ca565b604052612934836128e2565b8152612942602084016128e2565b602082015260408301516040820152606083015160608201528091505092915050565b61ffff84168152604060208201526000611b53604083018486612826565b60006020828403121561299557600080fd5b8151610ac7816123b5565b61ffff861681526001600160a01b03851660208201526040810184905261016081016129cf60608301856127e2565b6129dc60e08301846127e2565b9695505050505050565b61ffff861681526001600160a01b0385811660208301528416604082015261016081016129cf60608301856127e2565b61ffff861681526001600160a01b038516602082015260ff8416604082015261016081016129cf60608301856127e2565b634e487b7160e01b600052601160045260246000fd5b600082821015612a6f57612a6f612a47565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152612ac8608083018486612826565b979650505050505050565b61ffff86168152608060208201526000612af1608083018688612826565b6001600160401b0394909416604083015250606001529392505050565b600060208284031215612b2057600080fd5b81516001600160401b03811115612b3657600080fd5b8201601f81018413612b4757600080fd5b8051612b5561245682612410565b818152856020838501011115612b6a57600080fd5b611b538260208301602086016125e1565b61ffff85168152608060208201526000612b986080830186612611565b6001600160401b03851660408401528281036060840152612ac88185612611565b60008251612bcb8184602087016125e1565b9190910192915050565b61ffff8616815260a060208201526000612bf260a0830187612611565b6001600160401b03861660408401528281036060840152612c138186612611565b90508281036080840152612c278185612611565b98975050505050505050565b600082612c5057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c6f57612c6f612a47565b500290565b60008219821115612c8757612c87612a47565b500190565b61ffff8716815260c060208201526000612ca960c0830188612611565b8281036040840152612cbb8188612611565b6001600160a01b0387811660608601528616608085015283810360a08501529050612898818561261156fea2646970667358221220b85af53a2a319ccabd0aabf707afce404bbc10fcde62f9d2c0840fa8d9e9f31364736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106101b65760003560e01c80637533d788116100ec578063baf3292d1161008a578063df2a5b3b11610064578063df2a5b3b14610569578063eb8d72b714610589578063f2fde38b146105a9578063f5ecbdbc146105c957600080fd5b8063baf3292d14610516578063cbed8b9c14610536578063d1deba1f1461055657600080fd5b8063950c8a74116100c6578063950c8a74146104825780639f38369a146104a2578063a6c3d165146104c2578063b353aaa7146104e257600080fd5b80637533d788146103ff5780638cfd8f5c1461042c5780638da5cb5b1461046457600080fd5b806342d65a8d116101595780635b8c41e6116101335780635b8c41e61461034d57806365d092d0146103aa57806366ad5c8a146103ca578063715018a6146103ea57600080fd5b806342d65a8d146102e65780634a759489146103065780634f2bfe5b1461031957600080fd5b806316334c8f1161019557806316334c8f1461021d578063363bf0de146102575780633d8b38f6146102a3578063416b154a146102d357600080fd5b80621d3567146101bb57806307e0db17146101dd57806310ddb137146101fd575b600080fd5b3480156101c757600080fd5b506101db6101d636600461224e565b6105e9565b005b3480156101e957600080fd5b506101db6101f83660046122e1565b61081a565b34801561020957600080fd5b506101db6102183660046122e1565b6108a3565b34801561022957600080fd5b5061023d6102383660046122fc565b6108fb565b604080519283526020830191909152015b60405180910390f35b34801561026357600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b3480156102af57600080fd5b506102c36102be366004612363565b610a01565b604051901515815260200161024e565b6101db6102e136600461248d565b610ace565b3480156102f257600080fd5b506101db610301366004612363565b610e03565b6101db6103143660046124ff565b610e89565b34801561032557600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561035957600080fd5b5061039c610368366004612584565b6004602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b60405190815260200161024e565b3480156103b657600080fd5b5061023d6103c53660046122fc565b6112a0565b3480156103d657600080fd5b506101db6103e536600461224e565b611303565b3480156103f657600080fd5b506101db6113df565b34801561040b57600080fd5b5061041f61041a3660046122e1565b6113f3565b60405161024e919061263d565b34801561043857600080fd5b5061039c610447366004612650565b600260209081526000928352604080842090915290825290205481565b34801561047057600080fd5b506000546001600160a01b031661028b565b34801561048e57600080fd5b5060035461028b906001600160a01b031681565b3480156104ae57600080fd5b5061041f6104bd3660046122e1565b61148d565b3480156104ce57600080fd5b506101db6104dd366004612363565b61159d565b3480156104ee57600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052257600080fd5b506101db610531366004612683565b611630565b34801561054257600080fd5b506101db6105513660046126a0565b61168c565b6101db61056436600461224e565b611721565b34801561057557600080fd5b506101db61058436600461270e565b611926565b34801561059557600080fd5b506101db6105a4366004612363565b6119d8565b3480156105b557600080fd5b506101db6105c4366004612683565b611a32565b3480156105d557600080fd5b5061041f6105e436600461274a565b611aab565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146106665760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff86166000908152600160205260408120805461068490612797565b80601f01602080910402602001604051908101604052809291908181526020018280546106b090612797565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b50505050509050805186869050148015610718575060008151115b801561074057508051602082012060405161073690889088906127d2565b6040518091039020145b61079b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b606482015260840161065d565b6108118787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b5c92505050565b50505050505050565b610822611c66565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050505050565b6108ab611c66565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb1379060240161086e565b6000806000600560029054906101000a900461ffff1660405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525060405160200161094d92919061280e565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906109b3908a90309086908c908c908c9060040161284f565b6040805180830381865afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f391906128a5565b925092505094509492505050565b61ffff831660009081526001602052604081208054829190610a2290612797565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90612797565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b505050505090508383604051610ab29291906127d2565b60405180910390208180519060200120149150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5291906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be391906128f4565b9050610bf28160400151611cc0565b15610d7d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906128c9565b60405163d1febfb960e01b8152600481018290529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1febfb9906024016080604051808303816000875af1158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a91906128f4565b90505b6000600560029054906101000a900461ffff1682604051602001610da292919061280e565b6040516020818303038152906040529050610dc1878288888834611cf1565b7fd76af77f4ffbd9969fdb15b1c1268d40cd4bf1093905e67639f369cb9f44c1728783604051610df292919061280e565b60405180910390a150505050505050565b610e0b611c66565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90610e5b90869086908690600401612965565b600060405180830381600087803b158015610e7557600080fd5b505af1158015610811573d6000803e3d6000fd5b60405163010ae75760e01b81526001600160a01b0386811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063010ae757906024016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906128c9565b6040516328d09d4760e01b81526001600160a01b038881166004830152602482018390529192506000917f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906044016080604051808303816000875af1158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb391906128f4565b60405163adc6358960e01b81526001600160a01b0389811660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063adc6358990602401602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104391906128c9565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c991906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a91906128f4565b6040516317b4eb8760e31b81526001600160a01b038c8116600483015261ffff8c1660248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063bda75c3890604401602060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190612983565b905060006001600160a01b03821661120c578b61120e565b815b6005546040519192506000916112339161ffff1690849089908b9089906020016129a0565b60405160208183030381529060405290506112528c828d8d8d34611cf1565b7f3689d0fa90a175cc766502dc62c2abdee9ca4b276d4315adf98339a8354755808c8e848a886040516112899594939291906129e6565b60405180910390a150505050505050505050505050565b6005546040805160808082018352600080835260208084018290528385018290526060808501839052855193840186528284528382018390528386018390528301829052935190948594859461094d9461ffff9093169386938493909101612a16565b3330146113615760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b606482015260840161065d565b6113d78686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611e8c92505050565b505050505050565b6113e7611c66565b6113f16000611ee4565b565b6001602052600090815260409020805461140c90612797565b80601f016020809104026020016040519081016040528092919081815260200182805461143890612797565b80156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b505050505081565b61ffff81166000908152600160205260408120805460609291906114b090612797565b80601f01602080910402602001604051908101604052809291908181526020018280546114dc90612797565b80156115295780601f106114fe57610100808354040283529160200191611529565b820191906000526020600020905b81548152906001019060200180831161150c57829003601f168201915b505050505090508051600014156115825760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f7264000000604482015260640161065d565b610ac76000601483516115959190612a5d565b839190611f34565b6115a5611c66565b8181306040516020016115ba93929190612a74565b60408051601f1981840301815291815261ffff851660009081526001602090815291902082516115ef939192909101906120cb565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161162393929190612965565b60405180910390a1505050565b611638611c66565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b611694611c66565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906116e89088908890889088908890600401612a9a565b600060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050505050505050565b61ffff8616600090815260046020526040808220905161174490889088906127d2565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806117c45760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b606482015260840161065d565b8083836040516117d59291906127d2565b6040518091039020146118345760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b606482015260840161065d565b61ffff8716600090815260046020526040808220905161185790899089906127d2565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f880182900482028301820190528682526118ef918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611e8c92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051610df2959493929190612ad3565b61192e611c66565b600081116119765760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b604482015260640161065d565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611623565b6119e0611c66565b61ffff831660009081526001602052604090206119fe90838361214f565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161162393929190612965565b611a3a611c66565b6001600160a01b038116611a9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065d565b611aa881611ee4565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611b2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b539190810190612b0e565b95945050505050565b600080611bbf5a60966366ad5c8a60e01b89898989604051602401611b849493929190612b7b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612041565b91509150816113d7578280519060200120600460008861ffff1661ffff16815260200190815260200160002086604051611bf99190612bb9565b9081526040805191829003602090810183206001600160401b0389166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90611c569088908890889088908790612bd5565b60405180910390a1505050505050565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b600042611cd062093a8084612c33565b611cdd9062093a80612c55565b611cea9062093a80612c74565b1092915050565b61ffff861660009081526001602052604081208054611d0f90612797565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3b90612797565b8015611d885780601f10611d5d57610100808354040283529160200191611d88565b820191906000526020600020905b815481529060010190602001808311611d6b57829003601f168201915b50505050509050805160001415611dfa5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b606482015260840161065d565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490611e51908b9086908c908c908c908c90600401612c8c565b6000604051808303818588803b158015611e6a57600080fd5b505af1158015611e7e573d6000803e3d6000fd5b505050505050505050505050565b60405162461bcd60e51b815260206004820152602760248201527f4f6d6e69566f74696e67457363726f773a2063616e6e6f742072656365697665604482015266206c7a4d73677360c81b606482015260840161065d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081611f4281601f612c74565b1015611f815760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161065d565b611f8b8284612c74565b84511015611fcf5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161065d565b606082158015611fee5760405191506000825260208201604052612038565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561202757805183526020928301920161200f565b5050858452601f01601f1916604052505b50949350505050565b6000606060008060008661ffff166001600160401b03811115612066576120666123ca565b6040519080825280601f01601f191660200182016040528015612090576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156120b2578692505b828152826000602083013e909890975095505050505050565b8280546120d790612797565b90600052602060002090601f0160209004810192826120f9576000855561213f565b82601f1061211257805160ff191683800117855561213f565b8280016001018555821561213f579182015b8281111561213f578251825591602001919060010190612124565b5061214b9291506121c3565b5090565b82805461215b90612797565b90600052602060002090601f01602090048101928261217d576000855561213f565b82601f106121965782800160ff1982351617855561213f565b8280016001018555821561213f579182015b8281111561213f5782358255916020019190600101906121a8565b5b8082111561214b57600081556001016121c4565b803561ffff811681146121ea57600080fd5b919050565b60008083601f84011261220157600080fd5b5081356001600160401b0381111561221857600080fd5b60208301915083602082850101111561223057600080fd5b9250929050565b80356001600160401b03811681146121ea57600080fd5b6000806000806000806080878903121561226757600080fd5b612270876121d8565b955060208701356001600160401b038082111561228c57600080fd5b6122988a838b016121ef565b90975095508591506122ac60408a01612237565b945060608901359150808211156122c257600080fd5b506122cf89828a016121ef565b979a9699509497509295939492505050565b6000602082840312156122f357600080fd5b610ac7826121d8565b6000806000806060858703121561231257600080fd5b61231b856121d8565b93506020850135801515811461233057600080fd5b925060408501356001600160401b0381111561234b57600080fd5b612357878288016121ef565b95989497509550505050565b60008060006040848603121561237857600080fd5b612381846121d8565b925060208401356001600160401b0381111561239c57600080fd5b6123a8868287016121ef565b9497909650939450505050565b6001600160a01b0381168114611aa857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612408576124086123ca565b604052919050565b60006001600160401b03821115612429576124296123ca565b50601f01601f191660200190565b600082601f83011261244857600080fd5b813561245b61245682612410565b6123e0565b81815284602083860101111561247057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156124a357600080fd5b6124ac856121d8565b935060208501356124bc816123b5565b925060408501356124cc816123b5565b915060608501356001600160401b038111156124e757600080fd5b6124f387828801612437565b91505092959194509250565b600080600080600060a0868803121561251757600080fd5b8535612522816123b5565b9450612530602087016121d8565b93506040860135612540816123b5565b92506060860135612550816123b5565b915060808601356001600160401b0381111561256b57600080fd5b61257788828901612437565b9150509295509295909350565b60008060006060848603121561259957600080fd5b6125a2846121d8565b925060208401356001600160401b038111156125bd57600080fd5b6125c986828701612437565b9250506125d860408501612237565b90509250925092565b60005b838110156125fc5781810151838201526020016125e4565b8381111561260b576000848401525b50505050565b600081518084526126298160208601602086016125e1565b601f01601f19169290920160200192915050565b602081526000610ac76020830184612611565b6000806040838503121561266357600080fd5b61266c836121d8565b915061267a602084016121d8565b90509250929050565b60006020828403121561269557600080fd5b8135610ac7816123b5565b6000806000806000608086880312156126b857600080fd5b6126c1866121d8565b94506126cf602087016121d8565b93506040860135925060608601356001600160401b038111156126f157600080fd5b6126fd888289016121ef565b969995985093965092949392505050565b60008060006060848603121561272357600080fd5b61272c846121d8565b925061273a602085016121d8565b9150604084013590509250925092565b6000806000806080858703121561276057600080fd5b612769856121d8565b9350612777602086016121d8565b92506040850135612787816123b5565b9396929550929360600135925050565b600181811c908216806127ab57607f821691505b602082108114156127cc57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b8051600f0b82526020810151600f0b602083015260408101516040830152606081015160608301525050565b61ffff8316815260a08101610ac760208301846127e2565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff871681526001600160a01b038616602082015260a06040820181905260009061287d90830187612611565b85151560608401528281036080840152612898818587612826565b9998505050505050505050565b600080604083850312156128b857600080fd5b505080516020909101519092909150565b6000602082840312156128db57600080fd5b5051919050565b8051600f81900b81146121ea57600080fd5b60006080828403121561290657600080fd5b604051608081018181106001600160401b0382111715612928576129286123ca565b604052612934836128e2565b8152612942602084016128e2565b602082015260408301516040820152606083015160608201528091505092915050565b61ffff84168152604060208201526000611b53604083018486612826565b60006020828403121561299557600080fd5b8151610ac7816123b5565b61ffff861681526001600160a01b03851660208201526040810184905261016081016129cf60608301856127e2565b6129dc60e08301846127e2565b9695505050505050565b61ffff861681526001600160a01b0385811660208301528416604082015261016081016129cf60608301856127e2565b61ffff861681526001600160a01b038516602082015260ff8416604082015261016081016129cf60608301856127e2565b634e487b7160e01b600052601160045260246000fd5b600082821015612a6f57612a6f612a47565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152612ac8608083018486612826565b979650505050505050565b61ffff86168152608060208201526000612af1608083018688612826565b6001600160401b0394909416604083015250606001529392505050565b600060208284031215612b2057600080fd5b81516001600160401b03811115612b3657600080fd5b8201601f81018413612b4757600080fd5b8051612b5561245682612410565b818152856020838501011115612b6a57600080fd5b611b538260208301602086016125e1565b61ffff85168152608060208201526000612b986080830186612611565b6001600160401b03851660408401528281036060840152612ac88185612611565b60008251612bcb8184602087016125e1565b9190910192915050565b61ffff8616815260a060208201526000612bf260a0830187612611565b6001600160401b03861660408401528281036060840152612c138186612611565b90508281036080840152612c278185612611565b98975050505050505050565b600082612c5057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c6f57612c6f612a47565b500290565b60008219821115612c8757612c87612a47565b500190565b61ffff8716815260c060208201526000612ca960c0830188612611565b8281036040840152612cbb8188612611565b6001600160a01b0387811660608601528616608085015283810360a08501529050612898818561261156fea2646970667358221220b85af53a2a319ccabd0aabf707afce404bbc10fcde62f9d2c0840fa8d9e9f31364736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file