[ { "inputs": [ { "internalType": "uint256", "name": "_minGasToStore", "type": "uint256" }, { "internalType": "address", "name": "_layerZeroEndpoint", "type": "address" }, { "internalType": "uint256", "name": "_startMintId", "type": "uint256" }, { "internalType": "uint256", "name": "_endMintId", "type": "uint256" }, { "internalType": "uint256", "name": "_fees", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "_hashedPayload", "type": "bytes32" } ], "name": "CreditCleared", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "_hashedPayload", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "CreditStored", "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": "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": true, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": true, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": true, "internalType": "address", "name": "_toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } ], "name": "ReceiveFromChain", "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": true, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" } ], "name": "SendToChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": false, "internalType": "uint256", "name": "_dstChainIdToBatchLimit", "type": "uint256" } ], "name": "SetDstChainIdToBatchLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": false, "internalType": "uint256", "name": "_dstChainIdToTransferGas", "type": "uint256" } ], "name": "SetDstChainIdToTransferGas", "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": "uint256", "name": "_minGasToTransferAndStore", "type": "uint256" } ], "name": "SetMinGasToTransferAndStore", "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": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_PAYLOAD_SIZE_LIMIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FUNCTION_TYPE_SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "bridgeGas", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "clearCredits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "dstChainIdToBatchLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "dstChainIdToTransferGas", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendBatchFee", "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": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee", "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": [], "name": "fee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "maxMintId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "minGasToTransferAndStore", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextMintId", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "payloadSizeLimitLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "sendBatchFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "sendFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "_dstChainIdToBatchLimit", "type": "uint256" } ], "name": "setDstChainIdToBatchLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint256", "name": "_dstChainIdToTransferGas", "type": "uint256" } ], "name": "setDstChainIdToTransferGas", "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": "uint256", "name": "_minGasToTransferAndStore", "type": "uint256" } ], "name": "setMinGasToTransferAndStore", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint256", "name": "_size", "type": "uint256" } ], "name": "setPayloadSizeLimit", "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": "_remoteChainId", "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": "bytes32", "name": "", "type": "bytes32" } ], "name": "storedCredits", "outputs": [ { "internalType": "uint16", "name": "srcChainId", "type": "uint16" }, { "internalType": "address", "name": "toAddress", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "bool", "name": "creditsRemain", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "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": [ { "internalType": "uint256", "name": "_newFeesInEther", "type": "uint256" } ], "name": "updateFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162004bf838038062004bf8833981016040819052620000349162000269565b6040518060400160405280600a81526020016912185c99121a5d13919560b21b8152506040518060400160405280600381526020016212125560ea1b8152508686868686868686868383838380806200009c620000966200016f60201b60201c565b62000173565b6001600160a01b0316608052506001600655816200010c5760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b606482015260840160405180910390fd5b5060075581516200012590600b906020850190620001c3565b5080516200013b90600c906020840190620001c3565b505050601187905550505060128390555062000159816001620002c1565b601355506200032c9a5050505050505050505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001d190620002ef565b90600052602060002090601f016020900481019282620001f5576000855562000240565b82601f106200021057805160ff191683800117855562000240565b8280016001018555821562000240579182015b828111156200024057825182559160200191906001019062000223565b506200024e92915062000252565b5090565b5b808211156200024e576000815560010162000253565b600080600080600060a086880312156200028257600080fd5b855160208701519095506001600160a01b0381168114620002a257600080fd5b6040870151606088015160809098015196999198509695945092505050565b6000816000190483118215151615620002ea57634e487b7160e01b600052601160045260246000fd5b500290565b600181811c908216806200030457607f821691505b602082108114156200032657634e487b7160e01b600052602260045260246000fd5b50919050565b608051614878620003806000396000818161095401528181610b8401528181610e880152818161110d015281816113f301528181611d860152818161220d0152818161234001526129e301526148786000f3fe6080604052600436106103805760003560e01c806378dacee1116101d1578063baf3292d11610102578063df2a5b3b116100a0578063f23536411161006f578063f235364114610af4578063f2fde38b14610b14578063f5ecbdbc14610b34578063fa25f9b614610b5457600080fd5b8063df2a5b3b14610a55578063e1d4c87014610a75578063e985e9c514610a8b578063eb8d72b714610ad457600080fd5b8063cbed8b9c116100dc578063cbed8b9c146109ec578063d12473a514610a0c578063d1deba1f14610a2c578063ddca3f4314610a3f57600080fd5b8063baf3292d14610996578063c4461834146109b6578063c87b56dd146109cc57600080fd5b80639f38369a1161016f578063ab3ffb9311610149578063ab3ffb9314610907578063af3fb21c1461091a578063b353aaa714610942578063b88d4fde1461097657600080fd5b80639f38369a146108a7578063a22cb465146108c7578063a6c3d165146108e757600080fd5b80638ffa1f2a116101ab5780638ffa1f2a14610832578063950c8a741461085257806395d89b41146108725780639ea5d6b11461088757600080fd5b806378dacee1146107bc5780638cfd8f5c146107dc5780638da5cb5b1461081457600080fd5b80633d8b38f6116102b657806351905636116102545780636aa99da3116102235780636aa99da31461075157806370a0823114610767578063715018a6146107875780637533d7881461079c57600080fd5b806351905636146106af5780635b8c41e6146106c25780636352211e1461071157806366ad5c8a1461073157600080fd5b806342d65a8d1161029057806342d65a8d1461063957806348288190146106595780634ac3f4ff1461066f5780635154c0b41461069c57600080fd5b80633d8b38f6146105be5780633f1f4fa4146105de57806342842e0e1461061957600080fd5b80630df374831161032357806322a3ecf9116102fd57806322a3ecf9146104de57806323b872dd146105615780632a205e3d146105815780633ccfd60b146105b657600080fd5b80630df374831461049657806310ddb137146104b65780631249c58b146104d657600080fd5b806307e0db171161035f57806307e0db17146103fe578063081812fc1461041e578063095ea7b3146104565780630b4cad4c1461047657600080fd5b80621d35671461038557806301ffc9a7146103a757806306fdde03146103dc575b600080fd5b34801561039157600080fd5b506103a56103a0366004613861565b610b81565b005b3480156103b357600080fd5b506103c76103c236600461390a565b610db2565b60405190151581526020015b60405180910390f35b3480156103e857600080fd5b506103f1610dd5565b6040516103d3919061397f565b34801561040a57600080fd5b506103a5610419366004613992565b610e67565b34801561042a57600080fd5b5061043e6104393660046139ad565b610ef0565b6040516001600160a01b0390911681526020016103d3565b34801561046257600080fd5b506103a56104713660046139e6565b610f17565b34801561048257600080fd5b506103a56104913660046139ad565b61102d565b3480156104a257600080fd5b506103a56104b1366004613a12565b6110cd565b3480156104c257600080fd5b506103a56104d1366004613992565b6110ec565b6103a5611144565b3480156104ea57600080fd5b506105326104f93660046139ad565b600a6020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b03909316602085015291830152151560608201526080016103d3565b34801561056d57600080fd5b506103a561057c366004613a2e565b611238565b34801561058d57600080fd5b506105a161059c366004613b42565b61126a565b604080519283526020830191909152016103d3565b6103a5611290565b3480156105ca57600080fd5b506103c76105d9366004613bd0565b6112ed565b3480156105ea57600080fd5b5061060b6105f9366004613992565b60036020526000908152604090205481565b6040519081526020016103d3565b34801561062557600080fd5b506103a5610634366004613a2e565b6113b9565b34801561064557600080fd5b506103a5610654366004613bd0565b6113d4565b34801561066557600080fd5b5061060b60075481565b34801561067b57600080fd5b5061060b61068a366004613992565b60086020526000908152604090205481565b6103a56106aa366004613c22565b61145a565b6103a56106bd366004613c81565b6114c9565b3480156106ce57600080fd5b5061060b6106dd366004613d3a565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561071d57600080fd5b5061043e61072c3660046139ad565b6114e0565b34801561073d57600080fd5b506103a561074c366004613861565b611540565b34801561075d57600080fd5b5061060b60115481565b34801561077357600080fd5b5061060b610782366004613d97565b61161c565b34801561079357600080fd5b506103a56116a2565b3480156107a857600080fd5b506103f16107b7366004613992565b6116b6565b3480156107c857600080fd5b506103a56107d73660046139ad565b611750565b3480156107e857600080fd5b5061060b6107f7366004613db4565b600260209081526000928352604080842090915290825290205481565b34801561082057600080fd5b506000546001600160a01b031661043e565b34801561083e57600080fd5b506103a561084d366004613de7565b611769565b34801561085e57600080fd5b5060045461043e906001600160a01b031681565b34801561087e57600080fd5b506103f16119b2565b34801561089357600080fd5b506103a56108a2366004613a12565b6119c1565b3480156108b357600080fd5b506103f16108c2366004613992565b611a78565b3480156108d357600080fd5b506103a56108e2366004613e1b565b611b8f565b3480156108f357600080fd5b506103a5610902366004613bd0565b611b9e565b6103a5610915366004613ed0565b611c31565b34801561092657600080fd5b5061092f600181565b60405161ffff90911681526020016103d3565b34801561094e57600080fd5b5061043e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561098257600080fd5b506103a5610991366004613f85565b611c40565b3480156109a257600080fd5b506103a56109b1366004613d97565b611c78565b3480156109c257600080fd5b5061060b61271081565b3480156109d857600080fd5b506103f16109e73660046139ad565b611cce565b3480156109f857600080fd5b506103a5610a07366004613ff0565b611d67565b348015610a1857600080fd5b506103a5610a27366004613a12565b611dfc565b6103a5610a3a366004613861565b611eac565b348015610a4b57600080fd5b5061060b60135481565b348015610a6157600080fd5b506103a5610a7036600461405e565b6120c2565b348015610a8157600080fd5b5061060b60125481565b348015610a9757600080fd5b506103c7610aa636600461409a565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205460ff1690565b348015610ae057600080fd5b506103a5610aef366004613bd0565b612174565b348015610b0057600080fd5b506105a1610b0f3660046140d3565b6121ce565b348015610b2057600080fd5b506103a5610b2f366004613d97565b612299565b348015610b4057600080fd5b506103f1610b4f36600461414c565b61230f565b348015610b6057600080fd5b5061060b610b6f366004613992565b60096020526000908152604090205481565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610bfe5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610c1c90614199565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890614199565b8015610c955780601f10610c6a57610100808354040283529160200191610c95565b820191906000526020600020905b815481529060010190602001808311610c7857829003601f168201915b50505050509050805186869050148015610cb0575060008151115b8015610cd8575080516020820120604051610cce90889088906141d4565b6040518091039020145b610d335760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610bf5565b610da98787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506123c292505050565b50505050505050565b60006001600160e01b031982161580610dcf5750610dcf8261243b565b92915050565b6060600b8054610de490614199565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1090614199565b8015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b820191906000526020600020905b815481529060010190602001808311610e4057829003601f168201915b5050505050905090565b610e6f61247b565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610ed557600080fd5b505af1158015610ee9573d6000803e3d6000fd5b5050505050565b6000610efb826124d5565b506000908152600f60205260409020546001600160a01b031690565b6000610f22826114e0565b9050806001600160a01b0316836001600160a01b03161415610f905760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610bf5565b336001600160a01b0382161480610fac5750610fac8133610aa6565b61101e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610bf5565b6110288383612525565b505050565b61103561247b565b600081116110915760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b6064820152608401610bf5565b60078190556040518181527ffebbc4f8bb9ec2313950c718d43123124b15778efda4c1f1d529de2995b4f34d906020015b60405180910390a150565b6110d561247b565b61ffff909116600090815260036020526040902055565b6110f461247b565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610ebb565b60125460115411156111a95760405162461bcd60e51b815260206004820152602860248201527f556e6976657273616c4f4e46543732313a206d6178206d696e74206c696d6974604482015267081c995858da195960c21b6064820152608401610bf5565b6013543410156112145760405162461bcd60e51b815260206004820152603060248201527f4e6f7420656e6f7567682065746865722073656e742c204d696e696d6d20302e60448201526f0c0c0c595d1a195c881d1bc81b5a5b9d60821b6064820152608401610bf5565b601180549081906000611226836141fa565b91905055506112353382612593565b50565b611243335b826125ad565b61125f5760405162461bcd60e51b8152600401610bf590614215565b61102883838361262b565b600080611282878761127b8861278f565b87876121ce565b915091509550959350505050565b61129861247b565b604051600090339047908381818185875af1925050503d80600081146112da576040519150601f19603f3d011682016040523d82523d6000602084013e6112df565b606091505b505090508061123557600080fd5b61ffff83166000908152600160205260408120805482919061130e90614199565b80601f016020809104026020016040519081016040528092919081815260200182805461133a90614199565b80156113875780601f1061135c57610100808354040283529160200191611387565b820191906000526020600020905b81548152906001019060200180831161136a57829003601f168201915b50505050509050838360405161139e9291906141d4565b60405180910390208180519060200120149150509392505050565b61102883838360405180602001604052806000815250611c40565b6113dc61247b565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061142c9086908690869060040161428b565b600060405180830381600087803b15801561144657600080fd5b505af1158015610da9573d6000803e3d6000fd5b61ffff831660009081526009602052604090205461147e90849060019084906127da565b6040805133602082015260009181019190915261102890849060600160408051601f1981840301815291905233858560646114ba3460636142a9565b6114c491906142c8565b6128b9565b610da98787876114d88861278f565b878787612a5f565b6000818152600d60205260408120546001600160a01b031680610dcf5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610bf5565b33301461159e5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610bf5565b6116148686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612c3392505050565b505050505050565b60006001600160a01b0382166116865760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610bf5565b506001600160a01b03166000908152600e602052604090205490565b6116aa61247b565b6116b46000612d8a565b565b600160205260009081526040902080546116cf90614199565b80601f01602080910402602001604051908101604052809291908181526020018280546116fb90614199565b80156117485780601f1061171d57610100808354040283529160200191611748565b820191906000526020600020905b81548152906001019060200180831161172b57829003601f168201915b505050505081565b61175861247b565b6117638160016142a9565b60135550565b611771612dda565b80516020808301919091206000818152600a90925260409091206002015460ff166117d25760405162461bcd60e51b81526020600482015260116024820152701b9bc818dc99591a5d1cc81cdd1bdc9959607a1b6044820152606401610bf5565b6000828060200190518101906117e8919061432f565b6000848152600a6020526040812080546001909101549294509092506118249161ffff8216916201000090046001600160a01b03169085612e34565b6000848152600a602052604090206001015490915081116118995760405162461bcd60e51b815260206004820152602960248201527f6e6f7420656e6f7567682067617320746f2070726f6365737320637265646974604482015268103a3930b739b332b960b91b6064820152608401610bf5565b8151811415611911576000838152600a602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba233906119049085815260200190565b60405180910390a16119a5565b604080516080810182526000858152600a6020818152848320805461ffff80821687526001600160a01b03620100008084048216868a019081529989018b8152600160608b01818152998f90529790965297519851169096026001600160b01b03199091169690951695909517939093178455915191830191909155516002909101805491151560ff199092169190911790555b5050506112356001600655565b6060600c8054610de490614199565b6119c961247b565b60008111611a245760405162461bcd60e51b815260206004820152602260248201527f647374436861696e4964546f42617463684c696d6974206d757374206265203e604482015261020360f41b6064820152608401610bf5565b61ffff8216600081815260086020908152604091829020849055815192835282018390527f7315f7654d594ead24a30160ed9ba2d23247f543016b918343591e93d7afdb6d91015b60405180910390a15050565b61ffff8116600090815260016020526040812080546060929190611a9b90614199565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac790614199565b8015611b145780601f10611ae957610100808354040283529160200191611b14565b820191906000526020600020905b815481529060010190602001808311611af757829003601f168201915b50505050509050805160001415611b6d5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610bf5565b611b88600060148351611b8091906143e9565b839190612e86565b9392505050565b611b9a338383612f93565b5050565b611ba661247b565b818130604051602001611bbb93929190614400565b60408051601f1981840301815291815261ffff85166000908152600160209081529190208251611bf0939192909101906136de565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611c249392919061428b565b60405180910390a1505050565b610da987878787878787612a5f565b611c4a33836125ad565b611c665760405162461bcd60e51b8152600401610bf590614215565b611c7284848484613062565b50505050565b611c8061247b565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020016110c2565b6060611cd982613095565b611d3d5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610bf5565b6000611d476130b2565b90506000815111610dcf5760405180602001604052806000815250611b88565b611d6f61247b565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611dc39088908890889088908890600401614426565b600060405180830381600087803b158015611ddd57600080fd5b505af1158015611df1573d6000803e3d6000fd5b505050505050505050565b611e0461247b565b60008111611e605760405162461bcd60e51b815260206004820152602360248201527f647374436861696e4964546f5472616e73666572476173206d7573742062652060448201526203e20360ec1b6064820152608401610bf5565b61ffff8216600081815260096020908152604091829020849055815192835282018390527fc46df2983228ac2d9754e94a0d565e6671665dc8ad38602bc8e544f0685a29fb9101611a6c565b61ffff86166000908152600560205260408082209051611ecf90889088906141d4565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611f4f5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610bf5565b808383604051611f609291906141d4565b604051809103902014611fbf5760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610bf5565b61ffff87166000908152600560205260408082209051611fe290899089906141d4565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f8801829004820283018201905286825261207a918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612c3392505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e587878787856040516120b195949392919061445f565b60405180910390a150505050505050565b6120ca61247b565b600081116121125760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610bf5565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611c24565b61217c61247b565b61ffff8316600090815260016020526040902061219a908383613762565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611c249392919061428b565b600080600086866040516020016121e69291906144d5565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb109061224a908b90309086908b908b90600401614503565b6040805180830381865afa158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228a9190614557565b92509250509550959350505050565b6122a161247b565b6001600160a01b0381166123065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bf5565b61123581612d8a565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa15801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123b7919081019061457b565b90505b949350505050565b6000806124255a60966366ad5c8a60e01b898989896040516024016123ea94939291906145af565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152309291906130d2565b915091508161161457611614868686868561315c565b60006001600160e01b031982166380ac58cd60e01b148061246c57506001600160e01b03198216635b5e139f60e01b145b80610dcf5750610dcf826131f9565b6000546001600160a01b031633146116b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bf5565b6124de81613095565b6112355760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610bf5565b6000818152600f6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061255a826114e0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611b9a82826040518060200160405280600081525061322e565b6000806125b9836114e0565b9050806001600160a01b0316846001600160a01b0316148061260057506001600160a01b0380821660009081526010602090815260408083209388168352929052205460ff165b806123ba5750836001600160a01b031661261984610ef0565b6001600160a01b031614949350505050565b826001600160a01b031661263e826114e0565b6001600160a01b0316146126645760405162461bcd60e51b8152600401610bf5906145ed565b6001600160a01b0382166126c65760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610bf5565b826001600160a01b03166126d9826114e0565b6001600160a01b0316146126ff5760405162461bcd60e51b8152600401610bf5906145ed565b6000818152600f6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600e8552838620805460001901905590871680865283862080546001019055868652600d90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106127c9576127c9614632565b602090810291909101015292915050565b60006127e583613261565b61ffff808716600090815260026020908152604080832093891683529290529081205491925090612817908490614648565b9050600081116128695760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610bf5565b808210156116145760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610bf5565b61ffff8616600090815260016020526040812080546128d790614199565b80601f016020809104026020016040519081016040528092919081815260200182805461290390614199565b80156129505780601f1061292557610100808354040283529160200191612950565b820191906000526020600020905b81548152906001019060200180831161293357829003601f168201915b505050505090508051600014156129c25760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610bf5565b6129cd8787516132bd565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490612a24908b9086908c908c908c908c90600401614660565b6000604051808303818588803b158015612a3d57600080fd5b505af1158015612a51573d6000803e3d6000fd5b505050505050505050505050565b6000845111612aa65760405162461bcd60e51b8152602060048201526013602482015272746f6b656e4964735b5d20697320656d70747960681b6044820152606401610bf5565b835160011480612aca575061ffff8616600090815260086020526040902054845111155b612b215760405162461bcd60e51b815260206004820152602260248201527f62617463682073697a65206578636565647320647374206261746368206c696d6044820152611a5d60f21b6064820152608401610bf5565b60005b8451811015612b6457612b52888888888581518110612b4557612b45614632565b602002602001015161332b565b80612b5c816141fa565b915050612b24565b5060008585604051602001612b7a9291906144d5565b6040516020818303038152906040529050612bbf876001848851600960008d61ffff1661ffff16815260200190815260200160002054612bba91906142a9565b6127da565b612bcd8782868686346128b9565b85604051612bdb91906146c7565b6040518091039020886001600160a01b03168861ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a88604051612c2191906146e3565b60405180910390a45050505050505050565b60008082806020019051810190612c4a919061432f565b601482015191935091506000612c6288838386612e34565b90508251811015612d365784516020808701919091206040805160808101825261ffff808d1682526001600160a01b038088168387019081528385018881526001606086018181526000898152600a909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad790612d2c90839089906146f6565b60405180910390a1505b816001600160a01b031687604051612d4e91906146c7565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d99026586604051612c2191906146e3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60026006541415612e2d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bf5565b6002600655565b6000825b82518110156123b7576007545a1015612e50576123b7565b612e748686858481518110612e6757612e67614632565b6020026020010151613416565b80612e7e816141fa565b915050612e38565b606081612e9481601f614648565b1015612ed35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610bf5565b612edd8284614648565b84511015612f215760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610bf5565b606082158015612f405760405191506000825260208201604052612f8a565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612f79578051835260209283019201612f61565b5050858452601f01601f1916604052505b50949350505050565b816001600160a01b0316836001600160a01b03161415612ff55760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610bf5565b6001600160a01b03838116600081815260106020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61306d84848461262b565b61307984848484613476565b611c725760405162461bcd60e51b8152600401610bf59061470f565b6000908152600d60205260409020546001600160a01b0316151590565b606060405180606001604052806035815260200161480e60359139905090565b6000606060008060008661ffff166001600160401b038111156130f7576130f7613a6f565b6040519080825280601f01601f191660200182016040528015613121576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115613143578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff1681526020019081526020016000208560405161318d91906146c7565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906131ea9087908790879087908790614761565b60405180910390a15050505050565b60006001600160e01b031982166322bac5d960e01b1480610dcf57506301ffc9a760e01b6001600160e01b0319831614610dcf565b6132388383613571565b6132456000848484613476565b6110285760405162461bcd60e51b8152600401610bf59061470f565b60006022825110156132b55760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610bf5565b506022015190565b61ffff8216600090815260036020526040902054806132db57506127105b808211156110285760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610bf5565b6133343361123d565b6133975760405162461bcd60e51b815260206004820152602e60248201527f4f4e46543732313a2073656e642063616c6c6572206973206e6f74206f776e6560448201526d1c881b9bdc88185c1c1c9bdd995960921b6064820152608401610bf5565b836001600160a01b03166133aa826114e0565b6001600160a01b03161461340b5760405162461bcd60e51b815260206004820152602260248201527f4f4e46543732313a2073656e642066726f6d20696e636f7272656374206f776e60448201526132b960f11b6064820152608401610bf5565b611c7284308361262b565b61341f81613095565b158061344b575061342f81613095565b801561344b575030613440826114e0565b6001600160a01b0316145b61345457600080fd5b61345d81613095565b61346b576110288282612593565b61102830838361262b565b60006001600160a01b0384163b1561356957604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906134ba9033908990889088906004016147b3565b6020604051808303816000875af19250505080156134f5575060408051601f3d908101601f191682019092526134f2918101906147f0565b60015b61354f573d808015613523576040519150601f19603f3d011682016040523d82523d6000602084013e613528565b606091505b5080516135475760405162461bcd60e51b8152600401610bf59061470f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506123ba565b5060016123ba565b6001600160a01b0382166135c75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610bf5565b6135d081613095565b1561361d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610bf5565b61362681613095565b156136735760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610bf5565b6001600160a01b0382166000818152600e6020908152604080832080546001019055848352600d90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546136ea90614199565b90600052602060002090601f01602090048101928261370c5760008555613752565b82601f1061372557805160ff1916838001178555613752565b82800160010185558215613752579182015b82811115613752578251825591602001919060010190613737565b5061375e9291506137d6565b5090565b82805461376e90614199565b90600052602060002090601f0160209004810192826137905760008555613752565b82601f106137a95782800160ff19823516178555613752565b82800160010185558215613752579182015b828111156137525782358255916020019190600101906137bb565b5b8082111561375e57600081556001016137d7565b803561ffff811681146137fd57600080fd5b919050565b60008083601f84011261381457600080fd5b5081356001600160401b0381111561382b57600080fd5b60208301915083602082850101111561384357600080fd5b9250929050565b80356001600160401b03811681146137fd57600080fd5b6000806000806000806080878903121561387a57600080fd5b613883876137eb565b955060208701356001600160401b038082111561389f57600080fd5b6138ab8a838b01613802565b90975095508591506138bf60408a0161384a565b945060608901359150808211156138d557600080fd5b506138e289828a01613802565b979a9699509497509295939492505050565b6001600160e01b03198116811461123557600080fd5b60006020828403121561391c57600080fd5b8135611b88816138f4565b60005b8381101561394257818101518382015260200161392a565b83811115611c725750506000910152565b6000815180845261396b816020860160208601613927565b601f01601f19169290920160200192915050565b602081526000611b886020830184613953565b6000602082840312156139a457600080fd5b611b88826137eb565b6000602082840312156139bf57600080fd5b5035919050565b6001600160a01b038116811461123557600080fd5b80356137fd816139c6565b600080604083850312156139f957600080fd5b8235613a04816139c6565b946020939093013593505050565b60008060408385031215613a2557600080fd5b613a04836137eb565b600080600060608486031215613a4357600080fd5b8335613a4e816139c6565b92506020840135613a5e816139c6565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613aad57613aad613a6f565b604052919050565b60006001600160401b03821115613ace57613ace613a6f565b50601f01601f191660200190565b600082601f830112613aed57600080fd5b8135613b00613afb82613ab5565b613a85565b818152846020838601011115613b1557600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146137fd57600080fd5b600080600080600060a08688031215613b5a57600080fd5b613b63866137eb565b945060208601356001600160401b0380821115613b7f57600080fd5b613b8b89838a01613adc565b955060408801359450613ba060608901613b32565b93506080880135915080821115613bb657600080fd5b50613bc388828901613adc565b9150509295509295909350565b600080600060408486031215613be557600080fd5b613bee846137eb565b925060208401356001600160401b03811115613c0957600080fd5b613c1586828701613802565b9497909650939450505050565b600080600060608486031215613c3757600080fd5b613c40846137eb565b92506020840135613c50816139c6565b915060408401356001600160401b03811115613c6b57600080fd5b613c7786828701613adc565b9150509250925092565b600080600080600080600060e0888a031215613c9c57600080fd5b8735613ca7816139c6565b9650613cb5602089016137eb565b955060408801356001600160401b0380821115613cd157600080fd5b613cdd8b838c01613adc565b965060608a0135955060808a01359150613cf6826139c6565b90935060a089013590613d08826139c6565b90925060c08901359080821115613d1e57600080fd5b50613d2b8a828b01613adc565b91505092959891949750929550565b600080600060608486031215613d4f57600080fd5b613d58846137eb565b925060208401356001600160401b03811115613d7357600080fd5b613d7f86828701613adc565b925050613d8e6040850161384a565b90509250925092565b600060208284031215613da957600080fd5b8135611b88816139c6565b60008060408385031215613dc757600080fd5b613dd0836137eb565b9150613dde602084016137eb565b90509250929050565b600060208284031215613df957600080fd5b81356001600160401b03811115613e0f57600080fd5b6123ba84828501613adc565b60008060408385031215613e2e57600080fd5b8235613e39816139c6565b9150613dde60208401613b32565b60006001600160401b03821115613e6057613e60613a6f565b5060051b60200190565b600082601f830112613e7b57600080fd5b81356020613e8b613afb83613e47565b82815260059290921b84018101918181019086841115613eaa57600080fd5b8286015b84811015613ec55780358352918301918301613eae565b509695505050505050565b600080600080600080600060e0888a031215613eeb57600080fd5b8735613ef6816139c6565b9650613f04602089016137eb565b955060408801356001600160401b0380821115613f2057600080fd5b613f2c8b838c01613adc565b965060608a0135915080821115613f4257600080fd5b613f4e8b838c01613e6a565b955060808a01359150613f60826139c6565b819450613f6f60a08b016139db565b935060c08a0135915080821115613d1e57600080fd5b60008060008060808587031215613f9b57600080fd5b8435613fa6816139c6565b93506020850135613fb6816139c6565b92506040850135915060608501356001600160401b03811115613fd857600080fd5b613fe487828801613adc565b91505092959194509250565b60008060008060006080868803121561400857600080fd5b614011866137eb565b945061401f602087016137eb565b93506040860135925060608601356001600160401b0381111561404157600080fd5b61404d88828901613802565b969995985093965092949392505050565b60008060006060848603121561407357600080fd5b61407c846137eb565b925061408a602085016137eb565b9150604084013590509250925092565b600080604083850312156140ad57600080fd5b82356140b8816139c6565b915060208301356140c8816139c6565b809150509250929050565b600080600080600060a086880312156140eb57600080fd5b6140f4866137eb565b945060208601356001600160401b038082111561411057600080fd5b61411c89838a01613adc565b9550604088013591508082111561413257600080fd5b61413e89838a01613e6a565b9450613ba060608901613b32565b6000806000806080858703121561416257600080fd5b61416b856137eb565b9350614179602086016137eb565b92506040850135614189816139c6565b9396929550929360600135925050565b600181811c908216806141ad57607f821691505b602082108114156141ce57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600060001982141561420e5761420e6141e4565b5060010190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff841681526040602082015260006123b7604083018486614262565b60008160001904831182151516156142c3576142c36141e4565b500290565b6000826142e557634e487b7160e01b600052601260045260246000fd5b500490565b600082601f8301126142fb57600080fd5b8151614309613afb82613ab5565b81815284602083860101111561431e57600080fd5b6123ba826020830160208701613927565b6000806040838503121561434257600080fd5b82516001600160401b038082111561435957600080fd5b614365868387016142ea565b935060209150818501518181111561437c57600080fd5b85019050601f8101861361438f57600080fd5b805161439d613afb82613e47565b81815260059190911b820183019083810190888311156143bc57600080fd5b928401925b828410156143da578351825292840192908401906143c1565b80955050505050509250929050565b6000828210156143fb576143fb6141e4565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152614454608083018486614262565b979650505050505050565b61ffff8616815260806020820152600061447d608083018688614262565b6001600160401b0394909416604083015250606001529392505050565b600081518084526020808501945080840160005b838110156144ca578151875295820195908201906001016144ae565b509495945050505050565b6040815260006144e86040830185613953565b82810360208401526144fa818561449a565b95945050505050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061453190830186613953565b8415156060840152828103608084015261454b8185613953565b98975050505050505050565b6000806040838503121561456a57600080fd5b505080516020909101519092909150565b60006020828403121561458d57600080fd5b81516001600160401b038111156145a357600080fd5b6123ba848285016142ea565b61ffff851681526080602082015260006145cc6080830186613953565b6001600160401b038516604084015282810360608401526144548185613953565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000821982111561465b5761465b6141e4565b500190565b61ffff8716815260c06020820152600061467d60c0830188613953565b828103604084015261468f8188613953565b6001600160a01b0387811660608601528616608085015283810360a085015290506146ba8185613953565b9998505050505050505050565b600082516146d9818460208701613927565b9190910192915050565b602081526000611b88602083018461449a565b8281526040602082015260006123ba6040830184613953565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b61ffff8616815260a06020820152600061477e60a0830187613953565b6001600160401b0386166040840152828103606084015261479f8186613953565b9050828103608084015261454b8185613953565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906147e690830184613953565b9695505050505050565b60006020828403121561480257600080fd5b8151611b88816138f456fe697066733a2f2f516d5a47356f586b6a6b316b6e6337476871575978656868435375684c6755523764535056566a3946523468546da26469706673582212208d306d2cee2043abe5c26726034067414b7dcea47a4369134294987b2838472864736f6c634300080c003300000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd700000000000000000000000000000000000000000000000000000000000017710000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000000001