1100 lines
162 KiB
JSON
Generated
1100 lines
162 KiB
JSON
Generated
{
|
|
"schemaVersion": "2.0.0",
|
|
"contractName": "DevUtils",
|
|
"compilerOutput": {
|
|
"abi": [
|
|
{
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "_exchange", "type": "address" },
|
|
{ "internalType": "address", "name": "_chaiBridge", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "constructor"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [],
|
|
"name": "EIP712_EXCHANGE_DOMAIN_HASH",
|
|
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeAssetProxyDispatchError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.AssetProxyDispatchErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeAssetProxyExistsError",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "assetProxyAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeAssetProxyId",
|
|
"outputs": [{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeAssetProxyTransferError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeEIP1271SignatureError",
|
|
"outputs": [
|
|
{ "internalType": "address", "name": "verifyingContractAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "data", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC1155AssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "tokenValues", "type": "uint256[]" },
|
|
{ "internalType": "bytes", "name": "callbackData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC20AssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC20BridgeAssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "bridgeAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "bridgeData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeERC721AssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeExchangeInvalidContextError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.ExchangeContextErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "address", "name": "contextAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeFillError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.FillErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeIncompleteFillError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.IncompleteFillErrorCode",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "uint256", "name": "expectedAssetFillAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "actualAssetFillAmount", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeMultiAssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" },
|
|
{ "internalType": "bytes[]", "name": "nestedAssetData", "type": "bytes[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeNegativeSpreadError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "leftOrderHash", "type": "bytes32" },
|
|
{ "internalType": "bytes32", "name": "rightOrderHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeOrderEpochError",
|
|
"outputs": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "orderSenderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "currentEpoch", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeOrderStatusError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeSignatureError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.SignatureErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "hash", "type": "bytes32" },
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeSignatureValidatorNotApprovedError",
|
|
"outputs": [
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "validatorAddress", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeSignatureWalletError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "hash", "type": "bytes32" },
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "decodeStaticCallAssetData",
|
|
"outputs": [
|
|
{ "internalType": "bytes4", "name": "assetProxyId", "type": "bytes4" },
|
|
{ "internalType": "address", "name": "staticCallTargetAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "staticCallData", "type": "bytes" },
|
|
{ "internalType": "bytes32", "name": "expectedReturnDataHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeTransactionError",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum LibExchangeRichErrors.TransactionErrorCodes",
|
|
"name": "errorCode",
|
|
"type": "uint8"
|
|
},
|
|
{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "encoded", "type": "bytes" }],
|
|
"name": "decodeTransactionExecutionError",
|
|
"outputs": [
|
|
{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" },
|
|
{ "internalType": "bytes", "name": "errorData", "type": "bytes" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "transactionData", "type": "bytes" }],
|
|
"name": "decodeZeroExTransactionData",
|
|
"outputs": [
|
|
{ "internalType": "string", "name": "functionName", "type": "string" },
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]" },
|
|
{ "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "tokenValues", "type": "uint256[]" },
|
|
{ "internalType": "bytes", "name": "callbackData", "type": "bytes" }
|
|
],
|
|
"name": "encodeERC1155AssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "address", "name": "tokenAddress", "type": "address" }],
|
|
"name": "encodeERC20AssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "tokenAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }
|
|
],
|
|
"name": "encodeERC721AssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" },
|
|
{ "internalType": "bytes[]", "name": "nestedAssetData", "type": "bytes[]" }
|
|
],
|
|
"name": "encodeMultiAssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "staticCallTargetAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "staticCallData", "type": "bytes" },
|
|
{ "internalType": "bytes32", "name": "expectedReturnDataHash", "type": "bytes32" }
|
|
],
|
|
"name": "encodeStaticCallAssetData",
|
|
"outputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getAssetProxyAllowance",
|
|
"outputs": [{ "internalType": "uint256", "name": "allowance", "type": "uint256" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getBalance",
|
|
"outputs": [{ "internalType": "uint256", "name": "balance", "type": "uint256" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getBalanceAndAssetProxyAllowance",
|
|
"outputs": [
|
|
{ "internalType": "uint256", "name": "balance", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "allowance", "type": "uint256" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" }
|
|
],
|
|
"name": "getBatchAssetProxyAllowances",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "allowances", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" }
|
|
],
|
|
"name": "getBatchBalances",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "balances", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes[]", "name": "assetData", "type": "bytes[]" }
|
|
],
|
|
"name": "getBatchBalancesAndAssetProxyAllowances",
|
|
"outputs": [
|
|
{ "internalType": "uint256[]", "name": "balances", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "allowances", "type": "uint256[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "address[]", "name": "addresses", "type": "address[]" }],
|
|
"name": "getEthBalances",
|
|
"outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "uint256", "name": "chainId", "type": "uint256" },
|
|
{ "internalType": "address", "name": "exchange", "type": "address" }
|
|
],
|
|
"name": "getOrderHash",
|
|
"outputs": [{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "bytes", "name": "signature", "type": "bytes" }
|
|
],
|
|
"name": "getOrderRelevantState",
|
|
"outputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8" },
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256" }
|
|
],
|
|
"internalType": "struct LibOrder.OrderInfo",
|
|
"name": "orderInfo",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "uint256", "name": "fillableTakerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "bool", "name": "isValidSignature", "type": "bool" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" }
|
|
],
|
|
"name": "getOrderRelevantStates",
|
|
"outputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "enum LibOrder.OrderStatus", "name": "orderStatus", "type": "uint8" },
|
|
{ "internalType": "bytes32", "name": "orderHash", "type": "bytes32" },
|
|
{ "internalType": "uint256", "name": "orderTakerAssetFilledAmount", "type": "uint256" }
|
|
],
|
|
"internalType": "struct LibOrder.OrderInfo[]",
|
|
"name": "ordersInfo",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "uint256[]", "name": "fillableTakerAssetAmounts", "type": "uint256[]" },
|
|
{ "internalType": "bool[]", "name": "isValidSignature", "type": "bool[]" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256" }
|
|
],
|
|
"name": "getSimulatedOrderMakerTransferResults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum OrderTransferSimulationUtils.OrderTransferResults",
|
|
"name": "orderTransferResults",
|
|
"type": "uint8"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order",
|
|
"name": "order",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "takerAssetFillAmount", "type": "uint256" }
|
|
],
|
|
"name": "getSimulatedOrderTransferResults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum OrderTransferSimulationUtils.OrderTransferResults",
|
|
"name": "orderTransferResults",
|
|
"type": "uint8"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "address[]", "name": "takerAddresses", "type": "address[]" },
|
|
{ "internalType": "uint256[]", "name": "takerAssetFillAmounts", "type": "uint256[]" }
|
|
],
|
|
"name": "getSimulatedOrdersTransferResults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "enum OrderTransferSimulationUtils.OrderTransferResults[]",
|
|
"name": "orderTransferResults",
|
|
"type": "uint8[]"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
|
|
{ "internalType": "address", "name": "signerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "data", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibZeroExTransaction.ZeroExTransaction",
|
|
"name": "transaction",
|
|
"type": "tuple"
|
|
},
|
|
{ "internalType": "uint256", "name": "chainId", "type": "uint256" },
|
|
{ "internalType": "address", "name": "exchange", "type": "address" }
|
|
],
|
|
"name": "getTransactionHash",
|
|
"outputs": [{ "internalType": "bytes32", "name": "transactionHash", "type": "bytes32" }],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "ownerAddress", "type": "address" },
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" }
|
|
],
|
|
"name": "getTransferableAssetAmount",
|
|
"outputs": [{ "internalType": "uint256", "name": "transferableAssetAmount", "type": "uint256" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "revertIfInvalidAssetData",
|
|
"outputs": [],
|
|
"payable": false,
|
|
"stateMutability": "pure",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"devdoc": {
|
|
"methods": {
|
|
"decodeAssetProxyDispatchError(bytes)": {
|
|
"details": "Decompose an ABI-encoded AssetProxyDispatchError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.orderHash Hash of the order being dispatched.assetData Asset data of the order being dispatched."
|
|
},
|
|
"decodeAssetProxyExistsError(bytes)": {
|
|
"details": "Decompose an ABI-encoded AssetProxyExistsError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "assetProxyId Id of asset proxy.assetProxyAddress The address of the asset proxy."
|
|
},
|
|
"decodeAssetProxyId(bytes)": {
|
|
"details": "Decode AssetProxy identifier",
|
|
"params": {
|
|
"assetData": "AssetProxy-compliant asset data describing an ERC-20, ERC-721, ERC1155, or MultiAsset asset."
|
|
},
|
|
"return": "The AssetProxy identifier"
|
|
},
|
|
"decodeAssetProxyTransferError(bytes)": {
|
|
"details": "Decompose an ABI-encoded AssetProxyTransferError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "orderHash Hash of the order being dispatched.assetData Asset data of the order being dispatched.errorData ABI-encoded revert data from the asset proxy."
|
|
},
|
|
"decodeEIP1271SignatureError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureValidatorError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "signerAddress The expected signer of the hash.signature The full signature bytes.errorData The revert data thrown by the validator contract."
|
|
},
|
|
"decodeERC1155AssetData(bytes)": {
|
|
"details": "Decode ERC-1155 asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC-1155 set of assets." },
|
|
"return": "The ERC-1155 AssetProxy identifier, the address of the ERC-1155 contract hosting the assets, an array of the identifiers of the assets to be traded, an array of asset amounts to be traded, and callback data. Each element of the arrays corresponds to the same-indexed element of the other array. Return values specified as `memory` are returned as pointers to locations within the memory of the input parameter `assetData`."
|
|
},
|
|
"decodeERC20AssetData(bytes)": {
|
|
"details": "Decode ERC-20 asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC-20 asset." },
|
|
"return": "The AssetProxy identifier, and the address of the ERC-20 contract hosting this asset."
|
|
},
|
|
"decodeERC20BridgeAssetData(bytes)": {
|
|
"details": "Decode ERC20Bridge asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC20Bridge asset" },
|
|
"return": "The ERC20BridgeProxy identifier, the address of the ERC20 token to transfer, the address of the bridge contract, and extra data to be passed to the bridge contract."
|
|
},
|
|
"decodeERC721AssetData(bytes)": {
|
|
"details": "Decode ERC-721 asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing an ERC-721 asset." },
|
|
"return": "The ERC-721 AssetProxy identifier, the address of the ERC-721 contract hosting this asset, and the identifier of the specific asset to be traded."
|
|
},
|
|
"decodeExchangeInvalidContextError(bytes)": {
|
|
"details": "Decompose an ABI-encoded OrderStatusError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode Error code that corresponds to invalid maker, taker, or sender.orderHash The order hash.contextAddress The maker, taker, or sender address"
|
|
},
|
|
"decodeFillError(bytes)": {
|
|
"details": "Decompose an ABI-encoded FillError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.orderHash The order hash."
|
|
},
|
|
"decodeIncompleteFillError(bytes)": {
|
|
"details": "Decompose an ABI-encoded IncompleteFillError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "orderHash Hash of the order being filled."
|
|
},
|
|
"decodeMultiAssetData(bytes)": {
|
|
"details": "Decode multi-asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant data describing a multi-asset basket." },
|
|
"return": "The Multi-Asset AssetProxy identifier, an array of the amounts of the assets to be traded, and an array of the AssetProxy-compliant data describing each asset to be traded. Each element of the arrays corresponds to the same-indexed element of the other array."
|
|
},
|
|
"decodeNegativeSpreadError(bytes)": {
|
|
"details": "Decompose an ABI-encoded NegativeSpreadError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "leftOrderHash Hash of the left order being matched.rightOrderHash Hash of the right order being matched."
|
|
},
|
|
"decodeOrderEpochError(bytes)": {
|
|
"details": "Decompose an ABI-encoded OrderEpochError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "makerAddress The order maker.orderSenderAddress The order sender.currentEpoch The current epoch for the maker."
|
|
},
|
|
"decodeOrderStatusError(bytes)": {
|
|
"details": "Decompose an ABI-encoded OrderStatusError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "orderHash The order hash.orderStatus The order status."
|
|
},
|
|
"decodeSignatureError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.signerAddress The expected signer of the hash.signature The full signature."
|
|
},
|
|
"decodeSignatureValidatorNotApprovedError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureValidatorNotApprovedError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "signerAddress The expected signer of the hash.validatorAddress The expected validator."
|
|
},
|
|
"decodeSignatureWalletError(bytes)": {
|
|
"details": "Decompose an ABI-encoded SignatureWalletError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.signerAddress The expected signer of the hash.signature The full signature bytes.errorData The revert data thrown by the validator contract."
|
|
},
|
|
"decodeStaticCallAssetData(bytes)": {
|
|
"details": "Decode StaticCall asset data from the format described in the AssetProxy contract specification.",
|
|
"params": { "assetData": "AssetProxy-compliant asset data describing a StaticCall asset" },
|
|
"return": "The StaticCall AssetProxy identifier, the target address of the StaticCAll, the data to be passed to the target address, and the expected Keccak-256 hash of the static call return data."
|
|
},
|
|
"decodeTransactionError(bytes)": {
|
|
"details": "Decompose an ABI-encoded TransactionError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "errorCode The error code.transactionHash Hash of the transaction."
|
|
},
|
|
"decodeTransactionExecutionError(bytes)": {
|
|
"details": "Decompose an ABI-encoded TransactionExecutionError.",
|
|
"params": { "encoded": "ABI-encoded revert error." },
|
|
"return": "transactionHash Hash of the transaction.errorData Error thrown by exeucteTransaction()."
|
|
},
|
|
"decodeZeroExTransactionData(bytes)": {
|
|
"details": "Decodes the call data for an Exchange contract method call.",
|
|
"params": { "transactionData": "ABI-encoded calldata for an Exchange contract method call." },
|
|
"return": "The name of the function called, and the parameters it was given. For single-order fills and cancels, the arrays will have just one element."
|
|
},
|
|
"encodeERC1155AssetData(address,uint256[],uint256[],bytes)": {
|
|
"details": "Encode ERC-1155 asset data into the format described in the AssetProxy contract specification.",
|
|
"params": {
|
|
"callbackData": "Data to be passed to receiving contracts when a transfer is performed.",
|
|
"tokenAddress": "The address of the ERC-1155 contract hosting the asset(s) to be traded.",
|
|
"tokenIds": "The identifiers of the specific assets to be traded.",
|
|
"tokenValues": "The amounts of each asset to be traded."
|
|
},
|
|
"return": "AssetProxy-compliant asset data describing the set of assets."
|
|
},
|
|
"encodeERC20AssetData(address)": {
|
|
"details": "Encode ERC-20 asset data into the format described in the AssetProxy contract specification.",
|
|
"params": { "tokenAddress": "The address of the ERC-20 contract hosting the asset to be traded." },
|
|
"return": "AssetProxy-compliant data describing the asset."
|
|
},
|
|
"encodeERC721AssetData(address,uint256)": {
|
|
"details": "Encode ERC-721 asset data into the format described in the AssetProxy specification.",
|
|
"params": {
|
|
"tokenAddress": "The address of the ERC-721 contract hosting the asset to be traded.",
|
|
"tokenId": "The identifier of the specific asset to be traded."
|
|
},
|
|
"return": "AssetProxy-compliant asset data describing the asset."
|
|
},
|
|
"encodeMultiAssetData(uint256[],bytes[])": {
|
|
"details": "Encode data for multiple assets, per the AssetProxy contract specification.",
|
|
"params": {
|
|
"amounts": "The amounts of each asset to be traded.",
|
|
"nestedAssetData": "AssetProxy-compliant data describing each asset to be traded."
|
|
},
|
|
"return": "AssetProxy-compliant data describing the set of assets."
|
|
},
|
|
"encodeStaticCallAssetData(address,bytes,bytes32)": {
|
|
"details": "Encode StaticCall asset data into the format described in the AssetProxy contract specification.",
|
|
"params": {
|
|
"expectedReturnDataHash": "Expected Keccak-256 hash of the StaticCall return data.",
|
|
"staticCallData": "Data that will be passed to staticCallTargetAddress in the StaticCall.",
|
|
"staticCallTargetAddress": "Target address of StaticCall."
|
|
},
|
|
"return": "AssetProxy-compliant asset data describing the set of assets."
|
|
},
|
|
"getAssetProxyAllowance(address,bytes)": {
|
|
"details": "Returns the number of asset(s) (described by assetData) that the corresponding AssetProxy contract is authorized to spend. When the asset data contains multiple assets (eg for Multi-Asset), the return value indicates how many complete \"baskets\" of those assets may be spent by all of the corresponding AssetProxy contracts.",
|
|
"params": {
|
|
"assetData": "Details of asset, encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Number of assets (or asset baskets) that the corresponding AssetProxy is authorized to spend."
|
|
},
|
|
"getBalance(address,bytes)": {
|
|
"details": "Returns the owner's balance of the assets(s) specified in assetData. When the asset data contains multiple assets (eg in ERC1155 or Multi-Asset), the return value indicates how many complete \"baskets\" of those assets are owned by owner.",
|
|
"params": {
|
|
"assetData": "Details of asset, encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Number of assets (or asset baskets) held by owner."
|
|
},
|
|
"getBalanceAndAssetProxyAllowance(address,bytes)": {
|
|
"details": "Calls getBalance() and getAllowance() for assetData.",
|
|
"params": {
|
|
"assetData": "Details of asset, encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Number of assets (or asset baskets) held by owner, and number of assets (or asset baskets) that the corresponding AssetProxy is authorized to spend."
|
|
},
|
|
"getBatchAssetProxyAllowances(address,bytes[])": {
|
|
"details": "Calls getAssetProxyAllowance() for each element of assetData.",
|
|
"params": {
|
|
"assetData": "Array of asset details, each encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "An array of asset allowances from getAllowance(), with each element corresponding to the same-indexed element in the assetData input."
|
|
},
|
|
"getBatchBalances(address,bytes[])": {
|
|
"details": "Calls getBalance() for each element of assetData.",
|
|
"params": {
|
|
"assetData": "Array of asset details, each encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "Array of asset balances from getBalance(), with each element corresponding to the same-indexed element in the assetData input."
|
|
},
|
|
"getBatchBalancesAndAssetProxyAllowances(address,bytes[])": {
|
|
"details": "Calls getBatchBalances() and getBatchAllowances() for each element of assetData.",
|
|
"params": {
|
|
"assetData": "Array of asset details, each encoded per the AssetProxy contract specification.",
|
|
"ownerAddress": "Owner of the assets specified by assetData."
|
|
},
|
|
"return": "An array of asset balances from getBalance(), and an array of asset allowances from getAllowance(), with each element corresponding to the same-indexed element in the assetData input."
|
|
},
|
|
"getEthBalances(address[])": {
|
|
"details": "Batch fetches ETH balances",
|
|
"params": { "addresses": "Array of addresses." },
|
|
"return": "Array of ETH balances."
|
|
},
|
|
"getOrderRelevantState((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),bytes)": {
|
|
"details": "Fetches all order-relevant information needed to validate if the supplied order is fillable.",
|
|
"params": {
|
|
"order": "The order structure.",
|
|
"signature": "Signature provided by maker that proves the order's authenticity. `0x01` can always be provided if the signature does not need to be validated."
|
|
},
|
|
"return": "The orderInfo (hash, status, and `takerAssetAmount` already filled for the given order), fillableTakerAssetAmount (amount of the order's `takerAssetAmount` that is fillable given all on-chain state), and isValidSignature (validity of the provided signature). NOTE: If the `takerAssetData` encodes data for multiple assets, `fillableTakerAssetAmount` will represent a \"scaled\" amount, meaning it must be multiplied by all the individual asset amounts within the `takerAssetData` to get the final amount of each asset that can be filled."
|
|
},
|
|
"getOrderRelevantStates((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[])": {
|
|
"details": "Fetches all order-relevant information needed to validate if the supplied orders are fillable.",
|
|
"params": {
|
|
"orders": "Array of order structures.",
|
|
"signatures": "Array of signatures provided by makers that prove the authenticity of the orders. `0x01` can always be provided if a signature does not need to be validated."
|
|
},
|
|
"return": "The ordersInfo (array of the hash, status, and `takerAssetAmount` already filled for each order), fillableTakerAssetAmounts (array of amounts for each order's `takerAssetAmount` that is fillable given all on-chain state), and isValidSignature (array containing the validity of each provided signature). NOTE: If the `takerAssetData` encodes data for multiple assets, each element of `fillableTakerAssetAmounts` will represent a \"scaled\" amount, meaning it must be multiplied by all the individual asset amounts within the `takerAssetData` to get the final amount of each asset that can be filled."
|
|
},
|
|
"getSimulatedOrderMakerTransferResults((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),address,uint256)": {
|
|
"details": "Simulates the maker transfers within an order and returns the index of the first failed transfer.",
|
|
"params": {
|
|
"order": "The order to simulate transfers for.",
|
|
"takerAddress": "The address of the taker that will fill the order.",
|
|
"takerAssetFillAmount": "The amount of takerAsset that the taker wished to fill."
|
|
},
|
|
"return": "The index of the first failed transfer (or 4 if all transfers are successful)."
|
|
},
|
|
"getSimulatedOrderTransferResults((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes),address,uint256)": {
|
|
"details": "Simulates all of the transfers within an order and returns the index of the first failed transfer.",
|
|
"params": {
|
|
"order": "The order to simulate transfers for.",
|
|
"takerAddress": "The address of the taker that will fill the order.",
|
|
"takerAssetFillAmount": "The amount of takerAsset that the taker wished to fill."
|
|
},
|
|
"return": "The index of the first failed transfer (or 4 if all transfers are successful)."
|
|
},
|
|
"getSimulatedOrdersTransferResults((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],address[],uint256[])": {
|
|
"details": "Simulates all of the transfers for each given order and returns the indices of each first failed transfer.",
|
|
"params": {
|
|
"orders": "Array of orders to individually simulate transfers for.",
|
|
"takerAddresses": "Array of addresses of takers that will fill each order.",
|
|
"takerAssetFillAmounts": "Array of amounts of takerAsset that will be filled for each order."
|
|
},
|
|
"return": "The indices of the first failed transfer (or 4 if all transfers are successful) for each order."
|
|
},
|
|
"getTransferableAssetAmount(address,bytes)": {
|
|
"details": "Gets the amount of an asset transferable by the owner.",
|
|
"params": {
|
|
"assetData": "Description of tokens, per the AssetProxy contract specification.",
|
|
"ownerAddress": "Address of the owner of the asset."
|
|
},
|
|
"return": "The amount of the asset tranferable by the owner. NOTE: If the `assetData` encodes data for multiple assets, the `transferableAssetAmount` will represent the amount of times the entire `assetData` can be transferred. To calculate the total individual transferable amounts, this scaled `transferableAmount` must be multiplied by the individual asset amounts located within the `assetData`."
|
|
},
|
|
"revertIfInvalidAssetData(bytes)": {
|
|
"details": "Reverts if assetData is not of a valid format for its given proxy id.",
|
|
"params": { "assetData": "AssetProxy compliant asset data." }
|
|
}
|
|
}
|
|
},
|
|
"evm": {
|
|
"bytecode": {
|
|
"object": "0x60806040523480156200001157600080fd5b50604051620063ad380380620063ad833981016040819052620000349162000409565b600080546001600160a01b0319166001600160a01b0384811691909117808355604051630c0e082160e31b81528392869286928492839285929116906360704108906200008d90630f47261b60e41b9060040162000447565b60206040518083038186803b158015620000a657600080fd5b505afa158015620000bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620000e19190810190620003d9565b600180546001600160a01b0319166001600160a01b03928316179055600054604051630c0e082160e31b81529116906360704108906200012d9063012b8bc960e11b9060040162000447565b60206040518083038186803b1580156200014657600080fd5b505afa1580156200015b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620001819190810190620003d9565b600280546001600160a01b0319166001600160a01b03928316179055600054604051630c0e082160e31b8152911690636070410890620001cd9063a7cb5fb760e01b9060040162000447565b60206040518083038186803b158015620001e657600080fd5b505afa158015620001fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002219190810190620003d9565b600380546001600160a01b0319166001600160a01b03928316179055600054604051630c0e082160e31b81529116906360704108906200026d9063619ce88560e11b9060040162000447565b60206040518083038186803b1580156200028657600080fd5b505afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002c19190810190620003d9565b600480546001600160a01b03199081166001600160a01b039384161790915560058054821693831693909317909255600680549092169381169390931790555060009250831615905062000316578162000318565b305b9050620003736040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525085846200038260201b620038f71760201c565b60075550620004759350505050565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b600060208284031215620003eb578081fd5b81516001600160a01b038116811462000402578182fd5b9392505050565b600080604083850312156200041c578081fd5b825162000429816200045c565b60208401519092506200043c816200045c565b809150509250929050565b6001600160e01b031991909116815260200190565b6001600160a01b03811681146200047257600080fd5b50565b615f2880620004856000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80638f4ce4791161015c578063c26cfecd116100ce578063d3d862d111610087578063d3d862d1146106d7578063d4695028146106ea578063e25cabf71461070a578063e4e6e7da1461072c578063e77286eb1461074d578063ee4f5a941461076f5761027f565b8063c26cfecd14610652578063ca49f47c1461065a578063cafd3a071461067d578063d001c5dc1461069e578063d186037f146106b1578063d3637905146106c45761027f565b8063a5cd62ba11610120578063a5cd62ba146105a6578063a6627e9f146105c6578063acaedc74146105d9578063b43cffe1146105fc578063bbb2dcf61461060f578063bc03f964146106315761027f565b80638f4ce479146105265780639a7e7526146105395780639eadc8351461055c578063a070cac814610580578063a0901e51146105935761027f565b80634dfdac20116101f5578063750bdb30116101b9578063750bdb301461047b5780637914b2ec1461049e5780637982653e146104bf57806379c9c426146104df5780637b66ad34146104f25780637d727512146105135761027f565b80634dfdac20146103e3578063590aa8751461040357806363eb39921461042357806365129042146104365780636f83188e146104585761027f565b8063314853ff11610247578063314853ff14610333578063327d30541461035557806332aae3ad146103685780633db6dc611461038a578063459be5e2146103ad57806346eb65cb146103ce5761027f565b806302d0aec31461028457806304a5618a146102ae5780630d7b7d76146102d0578063165979e1146102f15780632322cf7614610313575b600080fd5b610297610292366004614f2f565b610791565b6040516102a5929190615948565b60405180910390f35b6102c16102bc366004614f2f565b6107ed565b6040516102a593929190615a76565b6102e36102de366004614a77565b610868565b6040516102a59291906158f6565b6103046102ff366004614f2f565b61088a565b6040516102a593929190615bb1565b610326610321366004614a77565b6108e7565b6040516102a591906158b1565b610346610341366004614f2f565b61090f565b6040516102a59392919061591d565b6102e3610363366004614f2f565b610956565b61037b610376366004614f2f565b610998565b6040516102a593929190615b26565b61039d610398366004614f2f565b6109eb565b6040516102a594939291906158ba565b6103c06103bb366004614f2f565b610a35565b6040516102a5929190615b9a565b6103e16103dc366004614f2f565b610a8b565b005b6103f66103f13660046149a0565b610ba9565b6040516102a5919061584b565b6104166104113660046147ba565b610c2c565b6040516102a59190615ad5565b610416610431366004614aba565b610c82565b610449610444366004614f2f565b610cdf565b6040516102a593929190615612565b61046b610466366004614f2f565b610d19565b6040516102a59493929190615c26565b61048e610489366004614f2f565b611526565b6040516102a5949392919061599d565b6104b16104ac366004614f2f565b6115a4565b6040516102a592919061597a565b6104d26104cd366004614ff7565b6115dc565b6040516102a59190615bcc565b6103266104ed3660046151a6565b611863565b610505610500366004614f2f565b6118c2565b6040516102a59291906155f8565b610326610521366004614a77565b6118fa565b6104b1610534366004614f2f565b611ea2565b61054c610547366004614f2f565b611eff565b6040516102a59493929190615bdf565b61056f61056a366004614f2f565b611f60565b6040516102a59594939291906159d9565b61032661058e3660046150a4565b611fd8565b6103f66105a1366004614b3b565b61202f565b6105b96105b4366004614b9f565b6120a8565b6040516102a59190615764565b6104166105d4366004614b10565b61216b565b6105ec6105e7366004614f2f565b6121c4565b6040516102a594939291906156be565b61041661060a3660046149ed565b612200565b61062261061d366004614f2f565b61225f565b6040516102a593929190615aa1565b61064461063f366004614f2f565b6122d9565b6040516102a5929190615904565b610326612312565b61066d610668366004614f2f565b612318565b6040516102a59493929190615a31565b61069061068b366004614f2f565b612389565b6040516102a5929190615c18565b6103f66106ac3660046149a0565b6123d7565b6103266106bf366004614a77565b612445565b6104d26106d2366004614ff7565b612b56565b6104166106e5366004614d39565b612eb6565b6106fd6106f8366004614f2f565b612ed5565b6040516102a59190615965565b61071d610718366004614c18565b612f8a565b6040516102a5939291906157b0565b61073f61073a3660046149a0565b6130c2565b6040516102a592919061588c565b61076061075b36600461504e565b6130db565b6040516102a593929190615d8c565b61078261077d366004614f2f565b613313565b6040516102a593929190615b70565b6000806107a5836107a0613350565b61335b565b60006107be600485518661339b9092919063ffffffff16565b8060200190516107d19190810190614ee2565b909350905060ff811660068111156107e557fe5b915050915091565b60008080610801848263ffffffff6133de16565b92506001600160e01b0319831663012b8bc960e11b1461083c5760405162461bcd60e51b815260040161083390615d64565b60405180910390fd5b61084d84601063ffffffff61341216565b915061086084602463ffffffff61344516565b929491935050565b60008061087584846118fa565b91506108818484612445565b90509250929050565b600080600061089b846107a0613451565b60006108b4600486518761339b9092919063ffffffff16565b8060200190516108c79190810190615375565b9094509250905060ff811660028111156108dd57fe5b9350509193909250565b60008060006108f68585610868565b91509150610904828261345c565b925050505b92915050565b6000606080610920846107a0613472565b835161093690859060049063ffffffff61339b16565b8060200190516109499190810190614e83565b9196909550909350915050565b600080610965836107a061347d565b825161097b90849060049063ffffffff61339b16565b80602001905161098e9190810190614e26565b9094909350915050565b60008060606109a9846107a0613488565b60006109c2600486518761339b9092919063ffffffff16565b8060200190516109d59190810190615336565b9094509250905060ff811660018111156108dd57fe5b6000806060806109fd856107a0613493565b8451610a1390869060049063ffffffff61339b16565b806020019051610a269190810190614de3565b92989197509550909350915050565b600080610a44836107a061349e565b6000610a5d600485518661339b9092919063ffffffff16565b806020019051610a709190810190615275565b9250905060ff81166003811115610a8357fe5b925050915091565b6000610a9d828263ffffffff6133de16565b90506001600160e01b03198116630f47261b60e41b1415610ac857610ac182611ea2565b5050610ba5565b6001600160e01b0319811663012b8bc960e11b1415610af257610aea826107ed565b505050610ba5565b6001600160e01b0319811663a7cb5fb760e01b1415610b1e57610b1482611f60565b5050505050610ba5565b6001600160e01b031981166394cfcdd760e01b1415610b4057610aea8261225f565b6001600160e01b0319811663619ce88560e11b1415610b6b57610b6282612318565b50505050610ba5565b6001600160e01b0319811663dc1600f360e01b1415610b8d57610b6282611526565b60405162461bcd60e51b815260040161083390615d64565b5050565b606060008251905080604051908082528060200260200182016040528015610bdb578160200160208202803883390190505b50915060005b818114610c2457610c0585858381518110610bf857fe5b6020026020010151612445565b838281518110610c1157fe5b6020908102919091010152600101610be1565b505092915050565b604051606090630f47261b60e41b90610c499084906024016155e4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050919050565b60405160609063619ce88560e11b90610ca39086908690869060240161568a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b9392505050565b6000806000610cf0846107a06134a9565b8351610d0690859060049063ffffffff61339b16565b8060200190516109499190810190614870565b60608080806000610d30868263ffffffff6133de16565b90506001600160e01b0319811663dedfc1f160e01b1415610d7c5760405180604001604052806011815260200170626174636843616e63656c4f726465727360781b8152509450611128565b6001600160e01b03198116634b4a520160e11b1415610dc4576040518060400160405280600f81526020016e626174636846696c6c4f726465727360881b8152509450611128565b6001600160e01b031981166323aa37f960e21b1415610e135760405180604001604052806016815260200175626174636846696c6c4f72646572734e6f5468726f7760501b8152509450611128565b6001600160e01b03198116632fbb8b8560e21b1415610e615760405180604001604052806015815260200174626174636846696c6c4f724b696c6c4f726465727360581b8152509450611128565b6001600160e01b03198116632da6298760e01b1415610ea5576040518060400160405280600b81526020016a31b0b731b2b627b93232b960a91b8152509450611128565b6001600160e01b03198116634da26aab60e11b1415610ee757604051806040016040528060098152602001683334b63627b93232b960b91b8152509450611128565b6001600160e01b03198116633852d63160e21b1415610f2f576040518060400160405280600f81526020016e3334b63627b925b4b63627b93232b960891b8152509450611128565b6001600160e01b031981166378d29ac160e01b1415610f7e57604051806040016040528060168152602001756d61726b65744275794f72646572734e6f5468726f7760501b8152509450611128565b6001600160e01b0319811663369da09960e01b1415610fd4576040518060400160405280601781526020017f6d61726b657453656c6c4f72646572734e6f5468726f770000000000000000008152509450611128565b6001600160e01b03198116638bc8efb360e01b141561102a576040518060400160405280601981526020017f6d61726b65744275794f726465727346696c6c4f724b696c6c000000000000008152509450611128565b6001600160e01b0319811663a6c3bf3360e01b1415611080576040518060400160405280601a81526020017f6d61726b657453656c6c4f726465727346696c6c4f724b696c6c0000000000008152509450611128565b6001600160e01b031981166388ec79fb60e01b14156110c4576040518060400160405280600b81526020016a6d617463684f726465727360a81b8152509450611128565b6001600160e01b03198116634f9559b160e01b14806110f357506001600160e01b031981166302280c9160e41b145b156111105760405162461bcd60e51b815260040161083390615d17565b60405162461bcd60e51b815260040161083390615ce0565b6001600160e01b0319811663dedfc1f160e01b14156111b457855161115790879060049063ffffffff6134b416565b80602001905161116a9190810190614b6d565b604080516000808252602082019092529195505b50604080516000808252602082019092529194506111ac565b60608152602001906001900390816111975790505b50915061151e565b6001600160e01b03198116632fbb8b8560e21b14806111e357506001600160e01b03198116634b4a520160e11b145b806111fe57506001600160e01b031981166323aa37f960e21b145b156112185761120c86613534565b9195509350915061151e565b6001600160e01b03198116632da6298760e01b14156112e75760408051600180825281830190925290816020015b61124e6140ed565b815260200190600190039081611246575050865190945061127990879060049063ffffffff6134b416565b80602001905161128c9190810190614fc5565b8460008151811061129957fe5b6020026020010181905250600060405190808252806020026020018201604052801561117e5781602001602082028038833901905050604080516000808252602082019092529194506111ac565b6001600160e01b03198116633852d63160e21b148061131657506001600160e01b03198116634da26aab60e11b145b156113245761120c86613563565b6001600160e01b031981166378d29ac160e01b148061135357506001600160e01b0319811663369da09960e01b145b8061136e57506001600160e01b03198116638bc8efb360e01b145b8061138957506001600160e01b0319811663a6c3bf3360e01b145b156113975761120c8661365d565b6001600160e01b031981166388ec79fb60e01b141561151e576113b86140ed565b6113c06140ed565b6060806113da60048b518c6134b49092919063ffffffff16565b8060200190516113ed91908101906150fc565b604080516002808252606082019092529498509296509094509250816020015b6114156140ed565b81526020019060019003908161140d579050509750838860008151811061143857fe5b6020026020010181905250828860018151811061145157fe5b602090810291909101015260408051600280825260608201909252908160200160208202803883390190505096508360a001518760008151811061149157fe5b6020026020010181815250508260a00151876001815181106114af57fe5b60209081029190910101526040805160028082526060820190925290816020015b60608152602001906001900390816114d057905050955081866000815181106114f557fe5b6020026020010181905250808660018151811061150e57fe5b6020026020010181905250505050505b509193509193565b60008080606061153c858363ffffffff6133de16565b93506001600160e01b0319841663dc1600f360e01b1461156e5760405162461bcd60e51b815260040161083390615d64565b845161158490869060049063ffffffff6134b416565b806020019051611597919081019061480f565b9597919650949350915050565b6000806115b3836107a06136d1565b82516115c990849060049063ffffffff61339b16565b80602001905161098e9190810190614f06565b60006115e6614180565b6116778584600660009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163957600080fd5b505afa15801561164d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611671919081019061525d565b3a6136db565b60408051600280825260608281019093529293509091816020015b606081526020019060019003908161169257505060408051600280825260608083018452939450909160208301908038833950506040805160028082526060808301845294955090925090602083019080388339505060408051600280825260608083018452949550909250906020830190803883390190505090508861014001518460008151811061172157fe5b602002602001018190525088600001518360008151811061173e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878260008151811061176c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084600001518160008151811061179e57fe5b602002602001018181525050886101800151846001815181106117bd57fe5b60200260200101819052508860000151836001815181106117da57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088604001518260018151811061180c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160018151811061183e57fe5b60200260200101818152505061185684848484613752565b9998505050505050505050565b60006118ba846118b56040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525087876138f7565b61394e565b949350505050565b6000806118d1836107a0613962565b82516118e790849060049063ffffffff61339b16565b80602001905161098e91908101906147d6565b60008061190d838263ffffffff6133de16565b90506001600160e01b03198116630f47261b60e41b141561194f57600061193b84601063ffffffff61341216565b9050611947818661396d565b925050611e9b565b6001600160e01b0319811663012b8bc960e11b1415611a8e57600080611974856107ed565b6040519194509250606091506331a9108f60e11b906119979084906024016158b1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b0316836040516119e891906155c8565b600060405180830381855afa9150503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b50915091506000828015611a3d575081516020145b611a48576000611a59565b611a5982600c63ffffffff61341216565b9050896001600160a01b0316816001600160a01b031614611a7b576000611a7e565b60015b60ff169750505050505050611e9b565b6001600160e01b0319811663a7cb5fb760e01b1415611c4c576000606080611ab586611f60565b5081519296509094509250905060005b818114611c4257828181518110611ad857fe5b602002602001015160001415611aed57611c3a565b8351606090627eeac760e11b908b90879085908110611b0857fe5b6020026020010151604051602401611b219291906156f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060876001600160a01b031683604051611b7291906155c8565b600060405180830381855afa9150503d8060008114611bad576040519150601f19603f3d011682016040523d82523d6000602084013e611bb2565b606091505b50915091506000828015611bc7575081516020145b611bd2576000611be3565b611be382600063ffffffff61344516565b90506000878681518110611bf357fe5b60200260200101518281611c0357fe5b04905080611c1f5760009b505050505050505050505050610909565b8b811080611c2b57508b155b15611c3457809b505b50505050505b600101611ac5565b5050505050611e9b565b6001600160e01b0319811663619ce88560e11b1415611d3857604051606090632a17967960e21b90611c8990869060009081908190602401615ae8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260045491519092506000916001600160a01b031690611cdb9084906155c8565b600060405180830381855afa9150503d8060008114611d16576040519150601f19603f3d011682016040523d82523d6000602084013e611d1b565b606091505b5050905080611d2b576000611d2f565b6000195b93505050611e9b565b6001600160e01b0319811663dc1600f360e01b1415611dc657600080611d5d85611526565b509250925050611d6b613a57565b6001600160a01b0316826001600160a01b0316148015611d9857506005546001600160a01b038281169116145b15611dbf576000611db0611daa613a6f565b8861396d565b9050611dbb81613a87565b9450505b5050611e9b565b6001600160e01b031981166394cfcdd760e01b1415611e9b57606080611deb8561225f565b80519194509250905060005b818114611e9657838181518110611e0a57fe5b602002602001015160001415611e1f57611e8e565b6000611e3e89858481518110611e3157fe5b60200260200101516118fa565b90506000858381518110611e4e57fe5b60200260200101518281611e5e57fe5b04905080611e76576000975050505050505050610909565b87811080611e82575087155b15611e8b578097505b50505b600101611df7565b505050505b5092915050565b600080611eb5838263ffffffff6133de16565b91506001600160e01b03198216630f47261b60e41b14611ee75760405162461bcd60e51b815260040161083390615d64565b611ef883601063ffffffff61341216565b9050915091565b60008060006060611f12856107a0613c85565b6000611f2b600487518861339b9092919063ffffffff16565b806020019051611f3e91908101906152d9565b91965094509250905060ff81166006811115611f5657fe5b9450509193509193565b60008060608080611f77868563ffffffff6133de16565b94506001600160e01b0319851663a7cb5fb760e01b14611fa95760405162461bcd60e51b815260040161083390615d64565b505050506024828101516044840151606485015160848601519496929591820184019490820184019391010190565b60006118ba8461202a6040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525087876138f7565b613c90565b606080825160405190808252806020026020018201604052801561205d578160200160208202803883390190505b50905060005b83518114611e9b5783818151811061207757fe5b60200260200101516001600160a01b03163182828151811061209557fe5b6020908102919091010152600101612063565b6060600084519050806040519080825280602002602001820160405280156120da578160200160208202803883390190505b50915060005b8181146121625761212b8682815181106120f657fe5b602002602001015186838151811061210a57fe5b602002602001015186848151811061211e57fe5b6020026020010151612b56565b83828151811061213757fe5b6020026020010190600481111561214a57fe5b9081600481111561215757fe5b9052506001016120e0565b50509392505050565b60405160609063012b8bc960e11b9061218a90859085906024016156f4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905092915050565b600060608060606121d7856107a0613c9f565b84516121ed90869060049063ffffffff61339b16565b806020019051610a269190810190614909565b60405160609063a7cb5fb760e01b90612223908790879087908790602401615636565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050949350505050565b6000606080612274848463ffffffff6133de16565b92506001600160e01b031983166394cfcdd760e01b146122a65760405162461bcd60e51b815260040161083390615d64565b83516122bc90859060049063ffffffff6134b416565b8060200190516122cf9190810190614d6d565b9395909450915050565b600060606122e9836107a0613caa565b82516122ff90849060049063ffffffff61339b16565b80602001905161098e9190810190614e49565b60075481565b60008060608161232e858263ffffffff6133de16565b93506001600160e01b0319841663619ce88560e11b146123605760405162461bcd60e51b815260040161083390615d64565b845161237690869060049063ffffffff6134b416565b80602001905161159791908101906148b2565b600080612398836107a0613cb5565b60006123b1600485518661339b9092919063ffffffff16565b8060200190516123c49190810190615275565b9250905060ff81166001811115610a8357fe5b606060008251905080604051908082528060200260200182016040528015612409578160200160208202803883390190505b50915060005b818114610c245761242685858381518110611e3157fe5b83828151811061243257fe5b602090810291909101015260010161240f565b600080612458838263ffffffff6133de16565b90506001600160e01b031981166394cfcdd760e01b14156125285760608061247f8561225f565b80519194509250905060005b81811461251d5783818151811061249e57fe5b6020026020010151600014156124b357612515565b60006124c589858481518110610bf857fe5b905060008583815181106124d557fe5b602002602001015182816124e557fe5b049050806124fd576000975050505050505050610909565b87811080612509575087155b15612512578097505b50505b60010161248b565b506109099350505050565b6001600160e01b03198116630f47261b60e41b141561264c57600061255484601063ffffffff61341216565b600154604051919250606091636eb1769f60e11b916125819189916001600160a01b0316906024016155f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b0316836040516125d291906155c8565b600060405180830381855afa9150503d806000811461260d576040519150601f19603f3d011682016040523d82523d6000602084013e612612565b606091505b5091509150818015612625575080516020145b612630576000612641565b61264181600063ffffffff61344516565b955050505050611e9b565b6001600160e01b0319811663012b8bc960e11b141561287f57600080612671856107ed565b6002546040519295509093506060925063e985e9c560e01b916126a4918a916001600160a01b03909116906024016155f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b0316836040516126f591906155c8565b600060405180830381855afa9150503d8060008114612730576040519150601f19603f3d011682016040523d82523d6000602084013e612735565b606091505b509150915081158061274957508051602014155b80612765575061276081600063ffffffff61344516565b600114155b156128705760405160609063020604bf60e21b906127879087906024016158b1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b0316816040516127d491906155c8565b600060405180830381855afa9150503d806000811461280f576040519150601f19603f3d011682016040523d82523d6000602084013e612814565b606091505b509093509150828015612828575081516020145b801561285757506002546001600160a01b031661284c83600c63ffffffff61341216565b6001600160a01b0316145b612862576000612865565b60015b60ff16975050611c42565b60001996505050505050611e9b565b6001600160e01b0319811663a7cb5fb760e01b14156129ad5760006128a384611f60565b50506003546040519294506060935063e985e9c560e01b926128d4925089916001600160a01b0316906024016155f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b03168360405161292591906155c8565b600060405180830381855afa9150503d8060008114612960576040519150601f19603f3d011682016040523d82523d6000602084013e612965565b606091505b5091509150818015612978575080516020145b8015612994575061299081600063ffffffff61344516565b6001145b61299f576000612641565b600019955050505050611e9b565b6001600160e01b0319811663619ce88560e11b14156129d0576000199150611e9b565b6001600160e01b0319811663dc1600f360e01b1415611e9b576000806129f585611526565b509250925050612a03613a57565b6001600160a01b0316826001600160a01b0316148015612a3057506005546001600160a01b038281169116145b15612b4d57600554604051606091636eb1769f60e11b91612a61918a916001600160a01b03909116906024016155f8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905060006060612aa1613a6f565b6001600160a01b031683604051612ab891906155c8565b600060405180830381855afa9150503d8060008114612af3576040519150601f19603f3d011682016040523d82523d6000602084013e612af8565b606091505b50915091506000828015612b0d575081516020145b612b18576000612b29565b612b2982600063ffffffff61344516565b90506000198114612b4257612b3d81613a87565b612b46565b6000195b9750505050505b50505092915050565b6000612b60614180565b612bb38584600660009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163957600080fd5b60408051600480825260a0820190925291925060609190816020015b6060815260200190600190039081612bcf57505060408051600480825260a082019092529192506060919060208201608080388339505060408051600480825260a08201909252929350606092915060208201608080388339505060408051600480825260a0820190925292935060609291506020820160808038833901905050905088610160015184600081518110612c6557fe5b60200260200101819052508783600081518110612c7e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886000015182600081518110612cb057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508681600081518110612cde57fe5b60200260200101818152505088610140015184600181518110612cfd57fe5b6020026020010181905250886000015183600181518110612d1a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508782600181518110612d4857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846000015181600181518110612d7a57fe5b602002602001018181525050886101a0015184600281518110612d9957fe5b60200260200101819052508783600281518110612db257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600281518110612de457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846060015181600281518110612e1657fe5b60200260200101818152505088610180015184600381518110612e3557fe5b6020026020010181905250886000015183600381518110612e5257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600381518110612e8457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160038151811061183e57fe5b6040516060906394cfcdd760e01b9061218a908590859060240161585e565b6000612ee7828263ffffffff6133de16565b90506001600160e01b03198116630f47261b60e41b1480612f1857506001600160e01b0319811663012b8bc960e11b145b80612f3357506001600160e01b0319811663a7cb5fb760e01b145b80612f4e57506001600160e01b031981166394cfcdd760e01b145b80612f6957506001600160e01b0319811663619ce88560e11b145b612f855760405162461bcd60e51b815260040161083390615d64565b919050565b606080606060008551905080604051908082528060200260200182016040528015612fcf57816020015b612fbc6141af565b815260200190600190039081612fb45790505b50935080604051908082528060200260200182016040528015612ffc578160200160208202803883390190505b50925080604051908082528060200260200182016040528015613029578160200160208202803883390190505b50915060005b8181146130b95761306687828151811061304557fe5b602002602001015187838151811061305957fe5b60200260200101516130db565b875188908590811061307457fe5b6020026020010187858151811061308757fe5b6020026020010187868151811061309a57fe5b931515602094850291909101909301929092529190525260010161302f565b50509250925092565b6060806130cf84846123d7565b91506108818484610ba9565b6130e36141af565b600654604051639d3fa4b960e01b815260009182916001600160a01b0390911690639d3fa4b990613118908890600401615db0565b60606040518083038186803b15801561313057600080fd5b505afa158015613144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131689190810190614f7d565b855160065460405163a12dcc6f60e01b815292955090916001600160a01b039091169063a12dcc6f906131a19089908990600401615dc3565b60206040518083038186803b1580156131b957600080fd5b505afa1580156131cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f19190810190614dc3565b91506000613204828861014001516108e7565b60a088015160c08901516101808a01516101408b0151939450919290916000916132339163ffffffff613cc016565b156132605761325984613253848d60800151613ce590919063ffffffff16565b85613d01565b90506132b9565b8161327457613259848b6080015185613d01565b6000613285868c61018001516108e7565b90506000613298868d6080015187613d01565b905060006132a7838688613d01565b90506132b3828261345c565b93505050505b6132d96132d3896040015185613d2390919063ffffffff16565b8261345c565b965060046132ec8b8c602001518a6115dc565b60048111156132f757fe5b14613303576000613305565b865b965050505050509250925092565b6000806000613324846107a0613d42565b600061333d600486518761339b9092919063ffffffff16565b8060200190516108c791908101906152a2565b63fdb6ca8d60e01b90565b60006133688360006133de565b90506001600160e01b0319808216908316146133965760405162461bcd60e51b815260040161083390615d3e565b505050565b6060818311156133b9576133b96133b460008585613d4d565b613d6c565b83518211156133d2576133d26133b46001848751613d4d565b50819003910190815290565b600081600401835110156133ff576133ff6133b46003855185600401613d4d565b5001602001516001600160e01b03191690565b60008160140183511015613433576134336133b46004855185601401613d4d565b5001601401516001600160a01b031690565b6000610cd88383613d74565b6318e4b14160e01b90565b600081831061346b5781610cd8565b5090919050565b634678472b60e01b90565b63b6555d6f60e01b90565b6324410cd360e11b90565b631b8388f760e01b90565b630e94a7ed60e41b90565b634ad3127560e01b90565b6060818311156134cd576134cd6133b460008585613d4d565b83518211156134e6576134e66133b46001848751613d4d565b8282036040519080825280601f01601f191660200182016040528015613513576020820181803883390190505b509050610cd861352282613d9e565b8461352c87613d9e565b018351613da4565b606080606061355060048551866134b49092919063ffffffff16565b8060200190516109499190810190614c6e565b60408051600180825281830190925260609182918291816020015b6135866140ed565b81526020019060019003908161357e5750506040805160018082528183019092529194506020808301908038833901905050604080516001808252818301909252919350816020015b60608152602001906001900390816135cf57505084519091506135fc90859060049063ffffffff6134b416565b80602001905161360f9190810190615154565b8560008151811061361c57fe5b602002602001018560008151811061363057fe5b602002602001018560008151811061364457fe5b6020908102919091010192909252919052529193909250565b6040805160018082528183019092526060918291829160208083019080388339505085519193506136999186915060049063ffffffff6134b416565b8060200190516136ac9190810190614ce7565b845185906000906136b957fe5b60209081029190910101919091529095929450925050565b628e3db960e51b90565b6136e3614180565b6020810184905260a085015160808601516136ff918691613e49565b815260a085015160c0860151613716918691613e49565b604082015260a085015160e0860151613730918691613e49565b6060820152613745828463ffffffff613e7d16565b6080820152949350505050565b60405160009060609063b04fbddd60e01b9061377890889088908890889060240161570d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260065491519092506060916001600160a01b0316906137ca9084906155c8565b6000604051808303816000865af19150503d8060008114613807576040519150601f19603f3d011682016040523d82523d6000602084013e61380c565b606091505b50915060009050613823828263ffffffff6133de16565b905061382d613488565b6001600160e01b03198281169116141561386a57600061384c83610998565b5091505060ff8116600481111561385f57fe5b9450505050506118ba565b613872613472565b6001600160e01b0319828116911614156138a55760006138918361090f565b509091505060ff8116600481111561385f57fe5b815160208301207ff43f26ea5a94b478394a975e856464913dc1a8a1ca70939d974aa7c238aa0ce014156138df57600493505050506118ba565b60405162461bcd60e51b815260040161083390615cb3565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b6000610cd88261395d85613eae565b613f29565b6350ae068360e11b90565b6040516000906060906370a0823160e01b9061398d9085906024016155e4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060856001600160a01b0316836040516139de91906155c8565b600060405180830381855afa9150503d8060008114613a19576040519150601f19603f3d011682016040523d82523d6000602084013e613a1e565b606091505b5091509150818015613a31575080516020145b613a3c576000613a4d565b613a4d81600063ffffffff61344516565b9695505050505050565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080613a92613a6f565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b049190810190614f61565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613b4357600080fd5b505af1158015613b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b7b919081019061525d565b4211613bf957816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613bbc57600080fd5b505af1158015613bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613bf4919081019061525d565b613c6c565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3457600080fd5b505af1158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c6c919081019061525d565b90506118ba816b033b2e3c9fd0803ce800000086613d01565b630fcb446360e31b90565b6000610cd88261395d85613f48565b635bd0428d60e01b90565b6320d11f6160e01b90565b633d66146160e21b90565b600081518351148015610cd85750508051602091820120825192909101919091201490565b600082820183811015610cd857610cd86133b460008686614001565b60006118ba83613d17868563ffffffff613e7d16565b9063ffffffff61402016565b600082821115613d3c57613d3c6133b460028585614001565b50900390565b631ca78ed960e31b90565b6060632800659560e01b848484604051602401610ca393929190615bbe565b805160208201fd5b60008160200183511015613d9557613d956133b46005855185602001613d4d565b50016020015190565b60200190565b6020811015613dce576001816020036101000a038019835116818551168082178652505050613396565b82821415613ddb57613396565b82821115613e155760208103905080820181840181515b82851015613e0d578451865260209586019590940193613df2565b905250613396565b60208103905080820181840183515b81861215613e405782518252601f199283019290910190613e24565b85525050505050565b6000613e5684848461404a565b15613e6957613e696133b48585856140b0565b6118ba83613d17868563ffffffff613e7d16565b600082613e8c57506000610909565b82820282848281613e9957fe5b0414610cd857610cd86133b460018686614001565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b60405161190160f01b8152600281019290925260228201526042902090565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a753493909290916020871015613f9457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b606063e946c1bb60e01b848484604051602401610ca393929190615b4f565b600081614036576140366133b460038585614001565b600082848161404157fe5b04949350505050565b60008261405c5761405c6133b46140cf565b811580614067575083155b1561407457506000610cd8565b6000838061407e57fe5b8584099050614093858463ffffffff613e7d16565b6140a5826103e863ffffffff613e7d16565b101595945050505050565b606063339f3de260e01b848484604051602401610ca393929190615de8565b60408051808201909152600481526329e460df60e21b602082015290565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b803561090981615ec1565b805161090981615ec1565b600082601f8301126141f7578081fd5b813561420a61420582615e24565b615dfe565b81815291506020808301908481018184028601820187101561422b57600080fd5b60005b84811015611e9657813561424181615ec1565b8452928201929082019060010161422e565b600082601f830112614263578081fd5b815161427161420582615e24565b8181529150602080830190840160005b838110156142ae5761429987602084518901016144d3565b83526020928301929190910190600101614281565b5050505092915050565b600082601f8301126142c8578081fd5b81356142d661420582615e24565b8181529150602080830190840160005b838110156142ae576142fe8760208435890101614485565b835260209283019291909101906001016142e6565b600082601f830112614323578081fd5b815161433161420582615e24565b8181529150602080830190840160005b838110156142ae576143598760208451890101614667565b83526020928301929190910190600101614341565b600082601f83011261437e578081fd5b813561438c61420582615e24565b8181529150602080830190840160005b838110156142ae576143b48760208435890101614519565b8352602092830192919091019060010161439c565b600082601f8301126143d9578081fd5b81516143e761420582615e24565b81815291506020808301908481018184028601820187101561440857600080fd5b60005b84811015611e965781518452928201929082019060010161440b565b600082601f830112614437578081fd5b813561444561420582615e24565b81815291506020808301908481018184028601820187101561446657600080fd5b60005b84811015611e9657813584529282019290820190600101614469565b600082601f830112614495578081fd5b81356144a361420582615e43565b91508082528360208285010111156144ba57600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126144e3578081fd5b81516144f161420582615e43565b915080825283602082850101111561450857600080fd5b611e9b816020840160208601615e66565b60006101c080838503121561452c578182fd5b61453581615dfe565b91505061454283836141d1565b815261455183602084016141d1565b602082015261456383604084016141d1565b604082015261457583606084016141d1565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301356001600160401b03808211156145d657600080fd5b6145e286838701614485565b838501526101609250828501359150808211156145fe57600080fd5b61460a86838701614485565b8385015261018092508285013591508082111561462657600080fd5b61463286838701614485565b838501526101a092508285013591508082111561464e57600080fd5b5061465b85828601614485565b82840152505092915050565b60006101c080838503121561467a578182fd5b61468381615dfe565b91505061469083836141dc565b815261469f83602084016141dc565b60208201526146b183604084016141dc565b60408201526146c383606084016141dc565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120808301518183015250610140808301516001600160401b038082111561472457600080fd5b614730868387016144d3565b8385015261016092508285015191508082111561474c57600080fd5b614758868387016144d3565b8385015261018092508285015191508082111561477457600080fd5b614780868387016144d3565b838501526101a092508285015191508082111561479c57600080fd5b5061465b858286016144d3565b805160ff8116811461090957600080fd5b6000602082840312156147cb578081fd5b8135610cd881615ec1565b600080604083850312156147e8578081fd5b82516147f381615ec1565b602084015190925061480481615ec1565b809150509250929050565b600080600060608486031215614823578081fd5b835161482e81615ec1565b602085015190935061483f81615ec1565b60408501519092506001600160401b0381111561485a578182fd5b614866868287016144d3565b9150509250925092565b600080600060608486031215614884578081fd5b835161488f81615ec1565b60208501519093506148a081615ec1565b80925050604084015190509250925092565b6000806000606084860312156148c6578081fd5b83516148d181615ec1565b60208501519093506001600160401b038111156148ec578182fd5b6148f8868287016144d3565b925050604084015190509250925092565b6000806000806080858703121561491e578182fd5b845161492981615ec1565b60208601519094506001600160401b0380821115614945578384fd5b614951888389016144d3565b94506040870151915080821115614966578384fd5b614972888389016144d3565b93506060870151915080821115614987578283fd5b50614994878288016144d3565b91505092959194509250565b600080604083850312156149b2578182fd5b82356149bd81615ec1565b915060208301356001600160401b038111156149d7578182fd5b6149e3858286016142b8565b9150509250929050565b60008060008060808587031215614a02578182fd5b8435614a0d81615ec1565b935060208501356001600160401b0380821115614a28578384fd5b614a3488838901614427565b94506040870135915080821115614a49578384fd5b614a5588838901614427565b93506060870135915080821115614a6a578283fd5b5061499487828801614485565b60008060408385031215614a89578182fd5b8235614a9481615ec1565b915060208301356001600160401b03811115614aae578182fd5b6149e385828601614485565b600080600060608486031215614ace578081fd5b8335614ad981615ec1565b925060208401356001600160401b03811115614af3578182fd5b614aff86828701614485565b925050604084013590509250925092565b60008060408385031215614b22578182fd5b8235614b2d81615ec1565b946020939093013593505050565b600060208284031215614b4c578081fd5b81356001600160401b03811115614b61578182fd5b6118ba848285016141e7565b600060208284031215614b7e578081fd5b81516001600160401b03811115614b93578182fd5b6118ba84828501614313565b600080600060608486031215614bb3578081fd5b83356001600160401b0380821115614bc9578283fd5b614bd58783880161436e565b94506020860135915080821115614bea578283fd5b614bf6878388016141e7565b93506040860135915080821115614c0b578283fd5b5061486686828701614427565b60008060408385031215614c2a578182fd5b82356001600160401b0380821115614c40578384fd5b614c4c8683870161436e565b93506020850135915080821115614c61578283fd5b506149e3858286016142b8565b600080600060608486031215614c82578081fd5b83516001600160401b0380821115614c98578283fd5b614ca487838801614313565b94506020860151915080821115614cb9578283fd5b614cc5878388016143c9565b93506040860151915080821115614cda578283fd5b5061486686828701614253565b600080600060608486031215614cfb578081fd5b83516001600160401b0380821115614d11578283fd5b614d1d87838801614313565b9450602086015193506040860151915080821115614cda578283fd5b60008060408385031215614d4b578182fd5b82356001600160401b0380821115614d61578384fd5b614c4c86838701614427565b60008060408385031215614d7f578182fd5b82516001600160401b0380821115614d95578384fd5b614da1868387016143c9565b93506020850151915080821115614db6578283fd5b506149e385828601614253565b600060208284031215614dd4578081fd5b81518015158114610cd8578182fd5b60008060008060808587031215614df8578182fd5b845193506020850151614e0a81615ec1565b60408601519093506001600160401b0380821115614966578384fd5b60008060408385031215614e38578182fd5b505080516020909101519092909150565b60008060408385031215614e5b578182fd5b8251915060208301516001600160401b03811115614e77578182fd5b6149e3858286016144d3565b600080600060608486031215614e97578081fd5b8351925060208401516001600160401b0380821115614eb4578283fd5b614ec0878388016144d3565b93506040860151915080821115614ed5578283fd5b50614866868287016144d3565b60008060408385031215614ef4578182fd5b82519150602083015161480481615ed6565b60008060408385031215614f18578182fd5b82516001600160e01b0319811681146147f3578283fd5b600060208284031215614f40578081fd5b81356001600160401b03811115614f55578182fd5b6118ba84828501614485565b600060208284031215614f72578081fd5b8151610cd881615ec1565b600060608284031215614f8e578081fd5b614f986060615dfe565b825160078110614fa6578283fd5b8152602083810151908201526040928301519281019290925250919050565b600060208284031215614fd6578081fd5b81516001600160401b03811115614feb578182fd5b6118ba84828501614667565b60008060006060848603121561500b578081fd5b83356001600160401b03811115615020578182fd5b61502c86828701614519565b935050602084013561503d81615ec1565b929592945050506040919091013590565b60008060408385031215615060578182fd5b82356001600160401b0380821115615076578384fd5b61508286838701614519565b93506020850135915080821115615097578283fd5b506149e385828601614485565b6000806000606084860312156150b8578081fd5b83356001600160401b038111156150cd578182fd5b6150d986828701614519565b9350506020840135915060408401356150f181615ec1565b809150509250925092565b60008060008060808587031215615111578182fd5b84516001600160401b0380821115615127578384fd5b61513388838901614667565b95506020870151915080821115615148578384fd5b61495188838901614667565b600080600060608486031215615168578081fd5b83516001600160401b038082111561517e578283fd5b61518a87838801614667565b9450602086015193506040860151915080821115614ed5578283fd5b6000806000606084860312156151ba578081fd5b83356001600160401b03808211156151d0578283fd5b81860160a081890312156151e2578384fd5b6151ec60a0615dfe565b925080358352602081013560208401526040810135604084015261521388606083016141d1565b6060840152608081013582811115615229578485fd5b61523589828401614485565b60808501525091945050506020840135915061525485604086016141d1565b90509250925092565b60006020828403121561526e578081fd5b5051919050565b60008060408385031215615287578182fd5b825161529281615ed6565b6020939093015192949293505050565b6000806000606084860312156152b6578081fd5b83516152c181615ed6565b6020850151604086015191945092506150f181615ec1565b600080600080608085870312156152ee578182fd5b6152f886866147a9565b935060208501519250604085015161530f81615ec1565b60608601519092506001600160401b0381111561532a578182fd5b614994878288016144d3565b60008060006060848603121561534a578081fd5b61535485856147a9565b92506020840151915060408401516001600160401b0381111561485a578182fd5b600080600060608486031215615389578081fd5b61539385856147a9565b925060208401519150604084015190509250925092565b6001600160a01b03169052565b6000815180845260208401935060208301825b828110156153f15781516001600160a01b03168652602095860195909101906001016153ca565b5093949350505050565b600081518084526020840180819550602083028101915060208501845b84811015615446578284038852615430848351615483565b6020988901989094509190910190600101615418565b50919695505050505050565b6000815180845260208401935060208301825b828110156153f1578151865260209586019590910190600101615465565b6000815180845261549b816020860160208601615e66565b601f01601f19169290920160200192915050565b80516154ba81615ead565b825260208181015190830152604090810151910152565b60006101c06154e18484516153aa565b60208301516154f360208601826153aa565b50604083015161550660408601826153aa565b50606083015161551960608601826153aa565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261557283870182615483565b9150506101609150818401518582038387015261558f8282615483565b9250505061018080840151858303828701526155ab8382615483565b9150506101a091508184015185820383870152613a4d8282615483565b600082516155da818460208701615e66565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038516815260806020820181905260009061565a90830186615452565b828103604084015261566c8186615452565b838103606085015261567e8186615483565b98975050505050505050565b6001600160a01b03841681526060602082018190526000906156ae90830185615483565b9050826040830152949350505050565b6001600160a01b03851681526080602082018190526000906156e290830186615483565b828103604084015261566c8186615483565b6001600160a01b03929092168252602082015260400190565b60006080825261572060808301876153fb565b828103602084015261573281876153b7565b838103604085015261574481876153b7565b91505082810360608401526157598185615452565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156157a557835161579181615eb7565b83526020938401939092019160010161577e565b509095945050505050565b606080825284519082018190526000906020906080840190828801845b828110156157f3576157e08483516154af565b60609390930192908401906001016157cd565b505050838103828501526158078187615452565b84810360408601528551808252908301915082860190845b8181101561583d57825115158452928401929184019160010161581f565b509198975050505050505050565b600060208252610cd86020830184615452565b6000604082526158716040830185615452565b828103602084015261588381856153fb565b95945050505050565b60006040825261589f6040830185615452565b82810360208401526158838185615452565b90815260200190565b8481526001600160a01b03841660208201526080604082018190526000906158e490830185615483565b82810360608401526157598185615483565b918252602082015260400190565b6000838252604060208301526118ba6040830184615483565b6000848252606060208301526159366060830185615483565b8281036040840152613a4d8185615483565b8281526040810161595883615ead565b8260208301529392505050565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b6001600160e01b0319851681526001600160a01b03848116602083015283166040820152608060608201819052600090613a4d90830184615483565b6001600160e01b0319861681526001600160a01b038516602082015260a060408201819052600090615a0d90830186615452565b8281036060840152615a1f8186615452565b83810360808501526118568186615483565b6001600160e01b0319851681526001600160a01b0384166020820152608060408201819052600090615a6590830185615483565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b600063ffffffff60e01b8516825260606020830152615ac36060830185615452565b8281036040840152613a4d81856153fb565b600060208252610cd86020830184615483565b600060808252615afb6080830187615483565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b600060028510615b3257fe5b848252836020830152606060408301526158836060830184615483565b60608101615b5c85615e96565b938152602081019290925260409091015290565b60608101615b7d85615ea3565b93815260208101929092526001600160a01b031660409091015290565b60408101615ba784615e96565b9281526020015290565b60608101615b5c85615ea3565b6060810160088510615b5c57fe5b60208101615bd983615eb7565b91905290565b6000615bea86615ead565b858252602082018590526001600160a01b0384166040830152608060608301819052613a4d90830184615483565b6040810160028410615ba757fe5b600060808252615c396080830187615483565b602083820381850152818751808452828401915082838202850101838a01865b83811015615c8757601f19878403018552615c758383516154d1565b94860194925090850190600101615c59565b50508681036040880152615c9b818a615452565b945050505050828103606084015261575981856153fb565b602080825260139082015272554e4b4e4f574e5f52455455524e5f4441544160681b604082015260600190565b60208082526019908201527f554e4b4e4f574e5f46554e4354494f4e5f53454c4543544f5200000000000000604082015260600190565b6020808252600d908201526c15539253541311535153951151609a1b604082015260600190565b6020808252600c908201526b2120a22fa9a2a622a1aa27a960a11b604082015260600190565b6020808252600e908201526d15d493d391d7d41493d61657d25160921b604082015260600190565b60a08101615d9a82866154af565b8360608301528215156080830152949350505050565b600060208252610cd860208301846154d1565b600060408252615dd660408301856154d1565b82810360208401526158838185615483565b9283526020830191909152604082015260600190565b6040518181016001600160401b0381118282101715615e1c57600080fd5b604052919050565b60006001600160401b03821115615e39578081fd5b5060209081020190565b60006001600160401b03821115615e58578081fd5b50601f01601f191660200190565b60005b83811015615e81578181015183820152602001615e69565b83811115615e90576000848401525b50505050565b60048110615ea057fe5b50565b60038110615ea057fe5b60078110615ea057fe5b60058110615ea057fe5b6001600160a01b0381168114615ea057600080fd5b60ff81168114615ea057600080fdfea365627a7a72315820a1f72e0fecf83c3e25dfac45671531008e6d10bf428de8acfd449b715d8f4ad16c6578706572696d656e74616cf564736f6c63430005100040"
|
|
},
|
|
"deployedBytecode": {
|
|
"object": "0x608060405234801561001057600080fd5b506004361061027f5760003560e01c80638f4ce4791161015c578063c26cfecd116100ce578063d3d862d111610087578063d3d862d1146106d7578063d4695028146106ea578063e25cabf71461070a578063e4e6e7da1461072c578063e77286eb1461074d578063ee4f5a941461076f5761027f565b8063c26cfecd14610652578063ca49f47c1461065a578063cafd3a071461067d578063d001c5dc1461069e578063d186037f146106b1578063d3637905146106c45761027f565b8063a5cd62ba11610120578063a5cd62ba146105a6578063a6627e9f146105c6578063acaedc74146105d9578063b43cffe1146105fc578063bbb2dcf61461060f578063bc03f964146106315761027f565b80638f4ce479146105265780639a7e7526146105395780639eadc8351461055c578063a070cac814610580578063a0901e51146105935761027f565b80634dfdac20116101f5578063750bdb30116101b9578063750bdb301461047b5780637914b2ec1461049e5780637982653e146104bf57806379c9c426146104df5780637b66ad34146104f25780637d727512146105135761027f565b80634dfdac20146103e3578063590aa8751461040357806363eb39921461042357806365129042146104365780636f83188e146104585761027f565b8063314853ff11610247578063314853ff14610333578063327d30541461035557806332aae3ad146103685780633db6dc611461038a578063459be5e2146103ad57806346eb65cb146103ce5761027f565b806302d0aec31461028457806304a5618a146102ae5780630d7b7d76146102d0578063165979e1146102f15780632322cf7614610313575b600080fd5b610297610292366004614f2f565b610791565b6040516102a5929190615948565b60405180910390f35b6102c16102bc366004614f2f565b6107ed565b6040516102a593929190615a76565b6102e36102de366004614a77565b610868565b6040516102a59291906158f6565b6103046102ff366004614f2f565b61088a565b6040516102a593929190615bb1565b610326610321366004614a77565b6108e7565b6040516102a591906158b1565b610346610341366004614f2f565b61090f565b6040516102a59392919061591d565b6102e3610363366004614f2f565b610956565b61037b610376366004614f2f565b610998565b6040516102a593929190615b26565b61039d610398366004614f2f565b6109eb565b6040516102a594939291906158ba565b6103c06103bb366004614f2f565b610a35565b6040516102a5929190615b9a565b6103e16103dc366004614f2f565b610a8b565b005b6103f66103f13660046149a0565b610ba9565b6040516102a5919061584b565b6104166104113660046147ba565b610c2c565b6040516102a59190615ad5565b610416610431366004614aba565b610c82565b610449610444366004614f2f565b610cdf565b6040516102a593929190615612565b61046b610466366004614f2f565b610d19565b6040516102a59493929190615c26565b61048e610489366004614f2f565b611526565b6040516102a5949392919061599d565b6104b16104ac366004614f2f565b6115a4565b6040516102a592919061597a565b6104d26104cd366004614ff7565b6115dc565b6040516102a59190615bcc565b6103266104ed3660046151a6565b611863565b610505610500366004614f2f565b6118c2565b6040516102a59291906155f8565b610326610521366004614a77565b6118fa565b6104b1610534366004614f2f565b611ea2565b61054c610547366004614f2f565b611eff565b6040516102a59493929190615bdf565b61056f61056a366004614f2f565b611f60565b6040516102a59594939291906159d9565b61032661058e3660046150a4565b611fd8565b6103f66105a1366004614b3b565b61202f565b6105b96105b4366004614b9f565b6120a8565b6040516102a59190615764565b6104166105d4366004614b10565b61216b565b6105ec6105e7366004614f2f565b6121c4565b6040516102a594939291906156be565b61041661060a3660046149ed565b612200565b61062261061d366004614f2f565b61225f565b6040516102a593929190615aa1565b61064461063f366004614f2f565b6122d9565b6040516102a5929190615904565b610326612312565b61066d610668366004614f2f565b612318565b6040516102a59493929190615a31565b61069061068b366004614f2f565b612389565b6040516102a5929190615c18565b6103f66106ac3660046149a0565b6123d7565b6103266106bf366004614a77565b612445565b6104d26106d2366004614ff7565b612b56565b6104166106e5366004614d39565b612eb6565b6106fd6106f8366004614f2f565b612ed5565b6040516102a59190615965565b61071d610718366004614c18565b612f8a565b6040516102a5939291906157b0565b61073f61073a3660046149a0565b6130c2565b6040516102a592919061588c565b61076061075b36600461504e565b6130db565b6040516102a593929190615d8c565b61078261077d366004614f2f565b613313565b6040516102a593929190615b70565b6000806107a5836107a0613350565b61335b565b60006107be600485518661339b9092919063ffffffff16565b8060200190516107d19190810190614ee2565b909350905060ff811660068111156107e557fe5b915050915091565b60008080610801848263ffffffff6133de16565b92506001600160e01b0319831663012b8bc960e11b1461083c5760405162461bcd60e51b815260040161083390615d64565b60405180910390fd5b61084d84601063ffffffff61341216565b915061086084602463ffffffff61344516565b929491935050565b60008061087584846118fa565b91506108818484612445565b90509250929050565b600080600061089b846107a0613451565b60006108b4600486518761339b9092919063ffffffff16565b8060200190516108c79190810190615375565b9094509250905060ff811660028111156108dd57fe5b9350509193909250565b60008060006108f68585610868565b91509150610904828261345c565b925050505b92915050565b6000606080610920846107a0613472565b835161093690859060049063ffffffff61339b16565b8060200190516109499190810190614e83565b9196909550909350915050565b600080610965836107a061347d565b825161097b90849060049063ffffffff61339b16565b80602001905161098e9190810190614e26565b9094909350915050565b60008060606109a9846107a0613488565b60006109c2600486518761339b9092919063ffffffff16565b8060200190516109d59190810190615336565b9094509250905060ff811660018111156108dd57fe5b6000806060806109fd856107a0613493565b8451610a1390869060049063ffffffff61339b16565b806020019051610a269190810190614de3565b92989197509550909350915050565b600080610a44836107a061349e565b6000610a5d600485518661339b9092919063ffffffff16565b806020019051610a709190810190615275565b9250905060ff81166003811115610a8357fe5b925050915091565b6000610a9d828263ffffffff6133de16565b90506001600160e01b03198116630f47261b60e41b1415610ac857610ac182611ea2565b5050610ba5565b6001600160e01b0319811663012b8bc960e11b1415610af257610aea826107ed565b505050610ba5565b6001600160e01b0319811663a7cb5fb760e01b1415610b1e57610b1482611f60565b5050505050610ba5565b6001600160e01b031981166394cfcdd760e01b1415610b4057610aea8261225f565b6001600160e01b0319811663619ce88560e11b1415610b6b57610b6282612318565b50505050610ba5565b6001600160e01b0319811663dc1600f360e01b1415610b8d57610b6282611526565b60405162461bcd60e51b815260040161083390615d64565b5050565b606060008251905080604051908082528060200260200182016040528015610bdb578160200160208202803883390190505b50915060005b818114610c2457610c0585858381518110610bf857fe5b6020026020010151612445565b838281518110610c1157fe5b6020908102919091010152600101610be1565b505092915050565b604051606090630f47261b60e41b90610c499084906024016155e4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050919050565b60405160609063619ce88560e11b90610ca39086908690869060240161568a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b9392505050565b6000806000610cf0846107a06134a9565b8351610d0690859060049063ffffffff61339b16565b8060200190516109499190810190614870565b60608080806000610d30868263ffffffff6133de16565b90506001600160e01b0319811663dedfc1f160e01b1415610d7c5760405180604001604052806011815260200170626174636843616e63656c4f726465727360781b8152509450611128565b6001600160e01b03198116634b4a520160e11b1415610dc4576040518060400160405280600f81526020016e626174636846696c6c4f726465727360881b8152509450611128565b6001600160e01b031981166323aa37f960e21b1415610e135760405180604001604052806016815260200175626174636846696c6c4f72646572734e6f5468726f7760501b8152509450611128565b6001600160e01b03198116632fbb8b8560e21b1415610e615760405180604001604052806015815260200174626174636846696c6c4f724b696c6c4f726465727360581b8152509450611128565b6001600160e01b03198116632da6298760e01b1415610ea5576040518060400160405280600b81526020016a31b0b731b2b627b93232b960a91b8152509450611128565b6001600160e01b03198116634da26aab60e11b1415610ee757604051806040016040528060098152602001683334b63627b93232b960b91b8152509450611128565b6001600160e01b03198116633852d63160e21b1415610f2f576040518060400160405280600f81526020016e3334b63627b925b4b63627b93232b960891b8152509450611128565b6001600160e01b031981166378d29ac160e01b1415610f7e57604051806040016040528060168152602001756d61726b65744275794f72646572734e6f5468726f7760501b8152509450611128565b6001600160e01b0319811663369da09960e01b1415610fd4576040518060400160405280601781526020017f6d61726b657453656c6c4f72646572734e6f5468726f770000000000000000008152509450611128565b6001600160e01b03198116638bc8efb360e01b141561102a576040518060400160405280601981526020017f6d61726b65744275794f726465727346696c6c4f724b696c6c000000000000008152509450611128565b6001600160e01b0319811663a6c3bf3360e01b1415611080576040518060400160405280601a81526020017f6d61726b657453656c6c4f726465727346696c6c4f724b696c6c0000000000008152509450611128565b6001600160e01b031981166388ec79fb60e01b14156110c4576040518060400160405280600b81526020016a6d617463684f726465727360a81b8152509450611128565b6001600160e01b03198116634f9559b160e01b14806110f357506001600160e01b031981166302280c9160e41b145b156111105760405162461bcd60e51b815260040161083390615d17565b60405162461bcd60e51b815260040161083390615ce0565b6001600160e01b0319811663dedfc1f160e01b14156111b457855161115790879060049063ffffffff6134b416565b80602001905161116a9190810190614b6d565b604080516000808252602082019092529195505b50604080516000808252602082019092529194506111ac565b60608152602001906001900390816111975790505b50915061151e565b6001600160e01b03198116632fbb8b8560e21b14806111e357506001600160e01b03198116634b4a520160e11b145b806111fe57506001600160e01b031981166323aa37f960e21b145b156112185761120c86613534565b9195509350915061151e565b6001600160e01b03198116632da6298760e01b14156112e75760408051600180825281830190925290816020015b61124e6140ed565b815260200190600190039081611246575050865190945061127990879060049063ffffffff6134b416565b80602001905161128c9190810190614fc5565b8460008151811061129957fe5b6020026020010181905250600060405190808252806020026020018201604052801561117e5781602001602082028038833901905050604080516000808252602082019092529194506111ac565b6001600160e01b03198116633852d63160e21b148061131657506001600160e01b03198116634da26aab60e11b145b156113245761120c86613563565b6001600160e01b031981166378d29ac160e01b148061135357506001600160e01b0319811663369da09960e01b145b8061136e57506001600160e01b03198116638bc8efb360e01b145b8061138957506001600160e01b0319811663a6c3bf3360e01b145b156113975761120c8661365d565b6001600160e01b031981166388ec79fb60e01b141561151e576113b86140ed565b6113c06140ed565b6060806113da60048b518c6134b49092919063ffffffff16565b8060200190516113ed91908101906150fc565b604080516002808252606082019092529498509296509094509250816020015b6114156140ed565b81526020019060019003908161140d579050509750838860008151811061143857fe5b6020026020010181905250828860018151811061145157fe5b602090810291909101015260408051600280825260608201909252908160200160208202803883390190505096508360a001518760008151811061149157fe5b6020026020010181815250508260a00151876001815181106114af57fe5b60209081029190910101526040805160028082526060820190925290816020015b60608152602001906001900390816114d057905050955081866000815181106114f557fe5b6020026020010181905250808660018151811061150e57fe5b6020026020010181905250505050505b509193509193565b60008080606061153c858363ffffffff6133de16565b93506001600160e01b0319841663dc1600f360e01b1461156e5760405162461bcd60e51b815260040161083390615d64565b845161158490869060049063ffffffff6134b416565b806020019051611597919081019061480f565b9597919650949350915050565b6000806115b3836107a06136d1565b82516115c990849060049063ffffffff61339b16565b80602001905161098e9190810190614f06565b60006115e6614180565b6116778584600660009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163957600080fd5b505afa15801561164d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611671919081019061525d565b3a6136db565b60408051600280825260608281019093529293509091816020015b606081526020019060019003908161169257505060408051600280825260608083018452939450909160208301908038833950506040805160028082526060808301845294955090925090602083019080388339505060408051600280825260608083018452949550909250906020830190803883390190505090508861014001518460008151811061172157fe5b602002602001018190525088600001518360008151811061173e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878260008151811061176c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084600001518160008151811061179e57fe5b602002602001018181525050886101800151846001815181106117bd57fe5b60200260200101819052508860000151836001815181106117da57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505088604001518260018151811061180c57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160018151811061183e57fe5b60200260200101818152505061185684848484613752565b9998505050505050505050565b60006118ba846118b56040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525087876138f7565b61394e565b949350505050565b6000806118d1836107a0613962565b82516118e790849060049063ffffffff61339b16565b80602001905161098e91908101906147d6565b60008061190d838263ffffffff6133de16565b90506001600160e01b03198116630f47261b60e41b141561194f57600061193b84601063ffffffff61341216565b9050611947818661396d565b925050611e9b565b6001600160e01b0319811663012b8bc960e11b1415611a8e57600080611974856107ed565b6040519194509250606091506331a9108f60e11b906119979084906024016158b1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b0316836040516119e891906155c8565b600060405180830381855afa9150503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b50915091506000828015611a3d575081516020145b611a48576000611a59565b611a5982600c63ffffffff61341216565b9050896001600160a01b0316816001600160a01b031614611a7b576000611a7e565b60015b60ff169750505050505050611e9b565b6001600160e01b0319811663a7cb5fb760e01b1415611c4c576000606080611ab586611f60565b5081519296509094509250905060005b818114611c4257828181518110611ad857fe5b602002602001015160001415611aed57611c3a565b8351606090627eeac760e11b908b90879085908110611b0857fe5b6020026020010151604051602401611b219291906156f4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060876001600160a01b031683604051611b7291906155c8565b600060405180830381855afa9150503d8060008114611bad576040519150601f19603f3d011682016040523d82523d6000602084013e611bb2565b606091505b50915091506000828015611bc7575081516020145b611bd2576000611be3565b611be382600063ffffffff61344516565b90506000878681518110611bf357fe5b60200260200101518281611c0357fe5b04905080611c1f5760009b505050505050505050505050610909565b8b811080611c2b57508b155b15611c3457809b505b50505050505b600101611ac5565b5050505050611e9b565b6001600160e01b0319811663619ce88560e11b1415611d3857604051606090632a17967960e21b90611c8990869060009081908190602401615ae8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260045491519092506000916001600160a01b031690611cdb9084906155c8565b600060405180830381855afa9150503d8060008114611d16576040519150601f19603f3d011682016040523d82523d6000602084013e611d1b565b606091505b5050905080611d2b576000611d2f565b6000195b93505050611e9b565b6001600160e01b0319811663dc1600f360e01b1415611dc657600080611d5d85611526565b509250925050611d6b613a57565b6001600160a01b0316826001600160a01b0316148015611d9857506005546001600160a01b038281169116145b15611dbf576000611db0611daa613a6f565b8861396d565b9050611dbb81613a87565b9450505b5050611e9b565b6001600160e01b031981166394cfcdd760e01b1415611e9b57606080611deb8561225f565b80519194509250905060005b818114611e9657838181518110611e0a57fe5b602002602001015160001415611e1f57611e8e565b6000611e3e89858481518110611e3157fe5b60200260200101516118fa565b90506000858381518110611e4e57fe5b60200260200101518281611e5e57fe5b04905080611e76576000975050505050505050610909565b87811080611e82575087155b15611e8b578097505b50505b600101611df7565b505050505b5092915050565b600080611eb5838263ffffffff6133de16565b91506001600160e01b03198216630f47261b60e41b14611ee75760405162461bcd60e51b815260040161083390615d64565b611ef883601063ffffffff61341216565b9050915091565b60008060006060611f12856107a0613c85565b6000611f2b600487518861339b9092919063ffffffff16565b806020019051611f3e91908101906152d9565b91965094509250905060ff81166006811115611f5657fe5b9450509193509193565b60008060608080611f77868563ffffffff6133de16565b94506001600160e01b0319851663a7cb5fb760e01b14611fa95760405162461bcd60e51b815260040161083390615d64565b505050506024828101516044840151606485015160848601519496929591820184019490820184019391010190565b60006118ba8461202a6040518060400160405280600b81526020016a0c1e08141c9bdd1bd8dbdb60aa1b815250604051806040016040528060058152602001640332e302e360dc1b81525087876138f7565b613c90565b606080825160405190808252806020026020018201604052801561205d578160200160208202803883390190505b50905060005b83518114611e9b5783818151811061207757fe5b60200260200101516001600160a01b03163182828151811061209557fe5b6020908102919091010152600101612063565b6060600084519050806040519080825280602002602001820160405280156120da578160200160208202803883390190505b50915060005b8181146121625761212b8682815181106120f657fe5b602002602001015186838151811061210a57fe5b602002602001015186848151811061211e57fe5b6020026020010151612b56565b83828151811061213757fe5b6020026020010190600481111561214a57fe5b9081600481111561215757fe5b9052506001016120e0565b50509392505050565b60405160609063012b8bc960e11b9061218a90859085906024016156f4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905092915050565b600060608060606121d7856107a0613c9f565b84516121ed90869060049063ffffffff61339b16565b806020019051610a269190810190614909565b60405160609063a7cb5fb760e01b90612223908790879087908790602401615636565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050949350505050565b6000606080612274848463ffffffff6133de16565b92506001600160e01b031983166394cfcdd760e01b146122a65760405162461bcd60e51b815260040161083390615d64565b83516122bc90859060049063ffffffff6134b416565b8060200190516122cf9190810190614d6d565b9395909450915050565b600060606122e9836107a0613caa565b82516122ff90849060049063ffffffff61339b16565b80602001905161098e9190810190614e49565b60075481565b60008060608161232e858263ffffffff6133de16565b93506001600160e01b0319841663619ce88560e11b146123605760405162461bcd60e51b815260040161083390615d64565b845161237690869060049063ffffffff6134b416565b80602001905161159791908101906148b2565b600080612398836107a0613cb5565b60006123b1600485518661339b9092919063ffffffff16565b8060200190516123c49190810190615275565b9250905060ff81166001811115610a8357fe5b606060008251905080604051908082528060200260200182016040528015612409578160200160208202803883390190505b50915060005b818114610c245761242685858381518110611e3157fe5b83828151811061243257fe5b602090810291909101015260010161240f565b600080612458838263ffffffff6133de16565b90506001600160e01b031981166394cfcdd760e01b14156125285760608061247f8561225f565b80519194509250905060005b81811461251d5783818151811061249e57fe5b6020026020010151600014156124b357612515565b60006124c589858481518110610bf857fe5b905060008583815181106124d557fe5b602002602001015182816124e557fe5b049050806124fd576000975050505050505050610909565b87811080612509575087155b15612512578097505b50505b60010161248b565b506109099350505050565b6001600160e01b03198116630f47261b60e41b141561264c57600061255484601063ffffffff61341216565b600154604051919250606091636eb1769f60e11b916125819189916001600160a01b0316906024016155f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b0316836040516125d291906155c8565b600060405180830381855afa9150503d806000811461260d576040519150601f19603f3d011682016040523d82523d6000602084013e612612565b606091505b5091509150818015612625575080516020145b612630576000612641565b61264181600063ffffffff61344516565b955050505050611e9b565b6001600160e01b0319811663012b8bc960e11b141561287f57600080612671856107ed565b6002546040519295509093506060925063e985e9c560e01b916126a4918a916001600160a01b03909116906024016155f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060846001600160a01b0316836040516126f591906155c8565b600060405180830381855afa9150503d8060008114612730576040519150601f19603f3d011682016040523d82523d6000602084013e612735565b606091505b509150915081158061274957508051602014155b80612765575061276081600063ffffffff61344516565b600114155b156128705760405160609063020604bf60e21b906127879087906024016158b1565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050856001600160a01b0316816040516127d491906155c8565b600060405180830381855afa9150503d806000811461280f576040519150601f19603f3d011682016040523d82523d6000602084013e612814565b606091505b509093509150828015612828575081516020145b801561285757506002546001600160a01b031661284c83600c63ffffffff61341216565b6001600160a01b0316145b612862576000612865565b60015b60ff16975050611c42565b60001996505050505050611e9b565b6001600160e01b0319811663a7cb5fb760e01b14156129ad5760006128a384611f60565b50506003546040519294506060935063e985e9c560e01b926128d4925089916001600160a01b0316906024016155f8565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060836001600160a01b03168360405161292591906155c8565b600060405180830381855afa9150503d8060008114612960576040519150601f19603f3d011682016040523d82523d6000602084013e612965565b606091505b5091509150818015612978575080516020145b8015612994575061299081600063ffffffff61344516565b6001145b61299f576000612641565b600019955050505050611e9b565b6001600160e01b0319811663619ce88560e11b14156129d0576000199150611e9b565b6001600160e01b0319811663dc1600f360e01b1415611e9b576000806129f585611526565b509250925050612a03613a57565b6001600160a01b0316826001600160a01b0316148015612a3057506005546001600160a01b038281169116145b15612b4d57600554604051606091636eb1769f60e11b91612a61918a916001600160a01b03909116906024016155f8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152905060006060612aa1613a6f565b6001600160a01b031683604051612ab891906155c8565b600060405180830381855afa9150503d8060008114612af3576040519150601f19603f3d011682016040523d82523d6000602084013e612af8565b606091505b50915091506000828015612b0d575081516020145b612b18576000612b29565b612b2982600063ffffffff61344516565b90506000198114612b4257612b3d81613a87565b612b46565b6000195b9750505050505b50505092915050565b6000612b60614180565b612bb38584600660009054906101000a90046001600160a01b03166001600160a01b0316631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561163957600080fd5b60408051600480825260a0820190925291925060609190816020015b6060815260200190600190039081612bcf57505060408051600480825260a082019092529192506060919060208201608080388339505060408051600480825260a08201909252929350606092915060208201608080388339505060408051600480825260a0820190925292935060609291506020820160808038833901905050905088610160015184600081518110612c6557fe5b60200260200101819052508783600081518110612c7e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886000015182600081518110612cb057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508681600081518110612cde57fe5b60200260200101818152505088610140015184600181518110612cfd57fe5b6020026020010181905250886000015183600181518110612d1a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508782600181518110612d4857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846000015181600181518110612d7a57fe5b602002602001018181525050886101a0015184600281518110612d9957fe5b60200260200101819052508783600281518110612db257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600281518110612de457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050846060015181600281518110612e1657fe5b60200260200101818152505088610180015184600381518110612e3557fe5b6020026020010181905250886000015183600381518110612e5257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050886040015182600381518110612e8457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084604001518160038151811061183e57fe5b6040516060906394cfcdd760e01b9061218a908590859060240161585e565b6000612ee7828263ffffffff6133de16565b90506001600160e01b03198116630f47261b60e41b1480612f1857506001600160e01b0319811663012b8bc960e11b145b80612f3357506001600160e01b0319811663a7cb5fb760e01b145b80612f4e57506001600160e01b031981166394cfcdd760e01b145b80612f6957506001600160e01b0319811663619ce88560e11b145b612f855760405162461bcd60e51b815260040161083390615d64565b919050565b606080606060008551905080604051908082528060200260200182016040528015612fcf57816020015b612fbc6141af565b815260200190600190039081612fb45790505b50935080604051908082528060200260200182016040528015612ffc578160200160208202803883390190505b50925080604051908082528060200260200182016040528015613029578160200160208202803883390190505b50915060005b8181146130b95761306687828151811061304557fe5b602002602001015187838151811061305957fe5b60200260200101516130db565b875188908590811061307457fe5b6020026020010187858151811061308757fe5b6020026020010187868151811061309a57fe5b931515602094850291909101909301929092529190525260010161302f565b50509250925092565b6060806130cf84846123d7565b91506108818484610ba9565b6130e36141af565b600654604051639d3fa4b960e01b815260009182916001600160a01b0390911690639d3fa4b990613118908890600401615db0565b60606040518083038186803b15801561313057600080fd5b505afa158015613144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131689190810190614f7d565b855160065460405163a12dcc6f60e01b815292955090916001600160a01b039091169063a12dcc6f906131a19089908990600401615dc3565b60206040518083038186803b1580156131b957600080fd5b505afa1580156131cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f19190810190614dc3565b91506000613204828861014001516108e7565b60a088015160c08901516101808a01516101408b0151939450919290916000916132339163ffffffff613cc016565b156132605761325984613253848d60800151613ce590919063ffffffff16565b85613d01565b90506132b9565b8161327457613259848b6080015185613d01565b6000613285868c61018001516108e7565b90506000613298868d6080015187613d01565b905060006132a7838688613d01565b90506132b3828261345c565b93505050505b6132d96132d3896040015185613d2390919063ffffffff16565b8261345c565b965060046132ec8b8c602001518a6115dc565b60048111156132f757fe5b14613303576000613305565b865b965050505050509250925092565b6000806000613324846107a0613d42565b600061333d600486518761339b9092919063ffffffff16565b8060200190516108c791908101906152a2565b63fdb6ca8d60e01b90565b60006133688360006133de565b90506001600160e01b0319808216908316146133965760405162461bcd60e51b815260040161083390615d3e565b505050565b6060818311156133b9576133b96133b460008585613d4d565b613d6c565b83518211156133d2576133d26133b46001848751613d4d565b50819003910190815290565b600081600401835110156133ff576133ff6133b46003855185600401613d4d565b5001602001516001600160e01b03191690565b60008160140183511015613433576134336133b46004855185601401613d4d565b5001601401516001600160a01b031690565b6000610cd88383613d74565b6318e4b14160e01b90565b600081831061346b5781610cd8565b5090919050565b634678472b60e01b90565b63b6555d6f60e01b90565b6324410cd360e11b90565b631b8388f760e01b90565b630e94a7ed60e41b90565b634ad3127560e01b90565b6060818311156134cd576134cd6133b460008585613d4d565b83518211156134e6576134e66133b46001848751613d4d565b8282036040519080825280601f01601f191660200182016040528015613513576020820181803883390190505b509050610cd861352282613d9e565b8461352c87613d9e565b018351613da4565b606080606061355060048551866134b49092919063ffffffff16565b8060200190516109499190810190614c6e565b60408051600180825281830190925260609182918291816020015b6135866140ed565b81526020019060019003908161357e5750506040805160018082528183019092529194506020808301908038833901905050604080516001808252818301909252919350816020015b60608152602001906001900390816135cf57505084519091506135fc90859060049063ffffffff6134b416565b80602001905161360f9190810190615154565b8560008151811061361c57fe5b602002602001018560008151811061363057fe5b602002602001018560008151811061364457fe5b6020908102919091010192909252919052529193909250565b6040805160018082528183019092526060918291829160208083019080388339505085519193506136999186915060049063ffffffff6134b416565b8060200190516136ac9190810190614ce7565b845185906000906136b957fe5b60209081029190910101919091529095929450925050565b628e3db960e51b90565b6136e3614180565b6020810184905260a085015160808601516136ff918691613e49565b815260a085015160c0860151613716918691613e49565b604082015260a085015160e0860151613730918691613e49565b6060820152613745828463ffffffff613e7d16565b6080820152949350505050565b60405160009060609063b04fbddd60e01b9061377890889088908890889060240161570d565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925260065491519092506060916001600160a01b0316906137ca9084906155c8565b6000604051808303816000865af19150503d8060008114613807576040519150601f19603f3d011682016040523d82523d6000602084013e61380c565b606091505b50915060009050613823828263ffffffff6133de16565b905061382d613488565b6001600160e01b03198281169116141561386a57600061384c83610998565b5091505060ff8116600481111561385f57fe5b9450505050506118ba565b613872613472565b6001600160e01b0319828116911614156138a55760006138918361090f565b509091505060ff8116600481111561385f57fe5b815160208301207ff43f26ea5a94b478394a975e856464913dc1a8a1ca70939d974aa7c238aa0ce014156138df57600493505050506118ba565b60405162461bcd60e51b815260040161083390615cb3565b8351602094850120835193850193909320604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815295860194909452928401929092526060830152608082015260a0902090565b6000610cd88261395d85613eae565b613f29565b6350ae068360e11b90565b6040516000906060906370a0823160e01b9061398d9085906024016155e4565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006060856001600160a01b0316836040516139de91906155c8565b600060405180830381855afa9150503d8060008114613a19576040519150601f19603f3d011682016040523d82523d6000602084013e613a1e565b606091505b5091509150818015613a31575080516020145b613a3c576000613a4d565b613a4d81600063ffffffff61344516565b9695505050505050565b736b175474e89094c44da98b954eedeac495271d0f90565b7306af07097c9eeb7fd685c692751d5c66db49c21590565b600080613a92613a6f565b6001600160a01b0316634ba2363a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613acc57600080fd5b505af1158015613ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b049190810190614f61565b90506000816001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613b4357600080fd5b505af1158015613b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b7b919081019061525d565b4211613bf957816001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613bbc57600080fd5b505af1158015613bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613bf4919081019061525d565b613c6c565b816001600160a01b0316639f678cca6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c3457600080fd5b505af1158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c6c919081019061525d565b90506118ba816b033b2e3c9fd0803ce800000086613d01565b630fcb446360e31b90565b6000610cd88261395d85613f48565b635bd0428d60e01b90565b6320d11f6160e01b90565b633d66146160e21b90565b600081518351148015610cd85750508051602091820120825192909101919091201490565b600082820183811015610cd857610cd86133b460008686614001565b60006118ba83613d17868563ffffffff613e7d16565b9063ffffffff61402016565b600082821115613d3c57613d3c6133b460028585614001565b50900390565b631ca78ed960e31b90565b6060632800659560e01b848484604051602401610ca393929190615bbe565b805160208201fd5b60008160200183511015613d9557613d956133b46005855185602001613d4d565b50016020015190565b60200190565b6020811015613dce576001816020036101000a038019835116818551168082178652505050613396565b82821415613ddb57613396565b82821115613e155760208103905080820181840181515b82851015613e0d578451865260209586019590940193613df2565b905250613396565b60208103905080820181840183515b81861215613e405782518252601f199283019290910190613e24565b85525050505050565b6000613e5684848461404a565b15613e6957613e696133b48585856140b0565b6118ba83613d17868563ffffffff613e7d16565b600082613e8c57506000610909565b82820282848281613e9957fe5b0414610cd857610cd86133b460018686614001565b608081810151825160208085015160408087015160609788015186519685019690962082517fec69816980a3a3ca4554410e60253953e9ff375ba4536a98adfa15cc7154150881529485019590955290830191909152948101949094526001600160a01b039091169183019190915260a082015260c0902090565b60405161190160f01b8152600281019290925260228201526042902090565b6101408101516101608201516101808301516101a08401516000937ff80322eb8376aafb64eadf8f0d7623f22130fd9491a221e902b713cb984a753493909290916020871015613f9457fe5b601f1987018051610140890180516101608b0180516101808d0180516101a08f0180519d89528c5160209d8e012087528b519b8d019b909b2084528951998c01999099208152875197909a019690962088526101e085209390945290529190529252919091529050919050565b606063e946c1bb60e01b848484604051602401610ca393929190615b4f565b600081614036576140366133b460038585614001565b600082848161404157fe5b04949350505050565b60008261405c5761405c6133b46140cf565b811580614067575083155b1561407457506000610cd8565b6000838061407e57fe5b8584099050614093858463ffffffff613e7d16565b6140a5826103e863ffffffff613e7d16565b101595945050505050565b606063339f3de260e01b848484604051602401610ca393929190615de8565b60408051808201909152600481526329e460df60e21b602082015290565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160608152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040805160608101909152806000815260006020820181905260409091015290565b803561090981615ec1565b805161090981615ec1565b600082601f8301126141f7578081fd5b813561420a61420582615e24565b615dfe565b81815291506020808301908481018184028601820187101561422b57600080fd5b60005b84811015611e9657813561424181615ec1565b8452928201929082019060010161422e565b600082601f830112614263578081fd5b815161427161420582615e24565b8181529150602080830190840160005b838110156142ae5761429987602084518901016144d3565b83526020928301929190910190600101614281565b5050505092915050565b600082601f8301126142c8578081fd5b81356142d661420582615e24565b8181529150602080830190840160005b838110156142ae576142fe8760208435890101614485565b835260209283019291909101906001016142e6565b600082601f830112614323578081fd5b815161433161420582615e24565b8181529150602080830190840160005b838110156142ae576143598760208451890101614667565b83526020928301929190910190600101614341565b600082601f83011261437e578081fd5b813561438c61420582615e24565b8181529150602080830190840160005b838110156142ae576143b48760208435890101614519565b8352602092830192919091019060010161439c565b600082601f8301126143d9578081fd5b81516143e761420582615e24565b81815291506020808301908481018184028601820187101561440857600080fd5b60005b84811015611e965781518452928201929082019060010161440b565b600082601f830112614437578081fd5b813561444561420582615e24565b81815291506020808301908481018184028601820187101561446657600080fd5b60005b84811015611e9657813584529282019290820190600101614469565b600082601f830112614495578081fd5b81356144a361420582615e43565b91508082528360208285010111156144ba57600080fd5b8060208401602084013760009082016020015292915050565b600082601f8301126144e3578081fd5b81516144f161420582615e43565b915080825283602082850101111561450857600080fd5b611e9b816020840160208601615e66565b60006101c080838503121561452c578182fd5b61453581615dfe565b91505061454283836141d1565b815261455183602084016141d1565b602082015261456383604084016141d1565b604082015261457583606084016141d1565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301356001600160401b03808211156145d657600080fd5b6145e286838701614485565b838501526101609250828501359150808211156145fe57600080fd5b61460a86838701614485565b8385015261018092508285013591508082111561462657600080fd5b61463286838701614485565b838501526101a092508285013591508082111561464e57600080fd5b5061465b85828601614485565b82840152505092915050565b60006101c080838503121561467a578182fd5b61468381615dfe565b91505061469083836141dc565b815261469f83602084016141dc565b60208201526146b183604084016141dc565b60408201526146c383606084016141dc565b60608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e0820152610100808301518183015250610120808301518183015250610140808301516001600160401b038082111561472457600080fd5b614730868387016144d3565b8385015261016092508285015191508082111561474c57600080fd5b614758868387016144d3565b8385015261018092508285015191508082111561477457600080fd5b614780868387016144d3565b838501526101a092508285015191508082111561479c57600080fd5b5061465b858286016144d3565b805160ff8116811461090957600080fd5b6000602082840312156147cb578081fd5b8135610cd881615ec1565b600080604083850312156147e8578081fd5b82516147f381615ec1565b602084015190925061480481615ec1565b809150509250929050565b600080600060608486031215614823578081fd5b835161482e81615ec1565b602085015190935061483f81615ec1565b60408501519092506001600160401b0381111561485a578182fd5b614866868287016144d3565b9150509250925092565b600080600060608486031215614884578081fd5b835161488f81615ec1565b60208501519093506148a081615ec1565b80925050604084015190509250925092565b6000806000606084860312156148c6578081fd5b83516148d181615ec1565b60208501519093506001600160401b038111156148ec578182fd5b6148f8868287016144d3565b925050604084015190509250925092565b6000806000806080858703121561491e578182fd5b845161492981615ec1565b60208601519094506001600160401b0380821115614945578384fd5b614951888389016144d3565b94506040870151915080821115614966578384fd5b614972888389016144d3565b93506060870151915080821115614987578283fd5b50614994878288016144d3565b91505092959194509250565b600080604083850312156149b2578182fd5b82356149bd81615ec1565b915060208301356001600160401b038111156149d7578182fd5b6149e3858286016142b8565b9150509250929050565b60008060008060808587031215614a02578182fd5b8435614a0d81615ec1565b935060208501356001600160401b0380821115614a28578384fd5b614a3488838901614427565b94506040870135915080821115614a49578384fd5b614a5588838901614427565b93506060870135915080821115614a6a578283fd5b5061499487828801614485565b60008060408385031215614a89578182fd5b8235614a9481615ec1565b915060208301356001600160401b03811115614aae578182fd5b6149e385828601614485565b600080600060608486031215614ace578081fd5b8335614ad981615ec1565b925060208401356001600160401b03811115614af3578182fd5b614aff86828701614485565b925050604084013590509250925092565b60008060408385031215614b22578182fd5b8235614b2d81615ec1565b946020939093013593505050565b600060208284031215614b4c578081fd5b81356001600160401b03811115614b61578182fd5b6118ba848285016141e7565b600060208284031215614b7e578081fd5b81516001600160401b03811115614b93578182fd5b6118ba84828501614313565b600080600060608486031215614bb3578081fd5b83356001600160401b0380821115614bc9578283fd5b614bd58783880161436e565b94506020860135915080821115614bea578283fd5b614bf6878388016141e7565b93506040860135915080821115614c0b578283fd5b5061486686828701614427565b60008060408385031215614c2a578182fd5b82356001600160401b0380821115614c40578384fd5b614c4c8683870161436e565b93506020850135915080821115614c61578283fd5b506149e3858286016142b8565b600080600060608486031215614c82578081fd5b83516001600160401b0380821115614c98578283fd5b614ca487838801614313565b94506020860151915080821115614cb9578283fd5b614cc5878388016143c9565b93506040860151915080821115614cda578283fd5b5061486686828701614253565b600080600060608486031215614cfb578081fd5b83516001600160401b0380821115614d11578283fd5b614d1d87838801614313565b9450602086015193506040860151915080821115614cda578283fd5b60008060408385031215614d4b578182fd5b82356001600160401b0380821115614d61578384fd5b614c4c86838701614427565b60008060408385031215614d7f578182fd5b82516001600160401b0380821115614d95578384fd5b614da1868387016143c9565b93506020850151915080821115614db6578283fd5b506149e385828601614253565b600060208284031215614dd4578081fd5b81518015158114610cd8578182fd5b60008060008060808587031215614df8578182fd5b845193506020850151614e0a81615ec1565b60408601519093506001600160401b0380821115614966578384fd5b60008060408385031215614e38578182fd5b505080516020909101519092909150565b60008060408385031215614e5b578182fd5b8251915060208301516001600160401b03811115614e77578182fd5b6149e3858286016144d3565b600080600060608486031215614e97578081fd5b8351925060208401516001600160401b0380821115614eb4578283fd5b614ec0878388016144d3565b93506040860151915080821115614ed5578283fd5b50614866868287016144d3565b60008060408385031215614ef4578182fd5b82519150602083015161480481615ed6565b60008060408385031215614f18578182fd5b82516001600160e01b0319811681146147f3578283fd5b600060208284031215614f40578081fd5b81356001600160401b03811115614f55578182fd5b6118ba84828501614485565b600060208284031215614f72578081fd5b8151610cd881615ec1565b600060608284031215614f8e578081fd5b614f986060615dfe565b825160078110614fa6578283fd5b8152602083810151908201526040928301519281019290925250919050565b600060208284031215614fd6578081fd5b81516001600160401b03811115614feb578182fd5b6118ba84828501614667565b60008060006060848603121561500b578081fd5b83356001600160401b03811115615020578182fd5b61502c86828701614519565b935050602084013561503d81615ec1565b929592945050506040919091013590565b60008060408385031215615060578182fd5b82356001600160401b0380821115615076578384fd5b61508286838701614519565b93506020850135915080821115615097578283fd5b506149e385828601614485565b6000806000606084860312156150b8578081fd5b83356001600160401b038111156150cd578182fd5b6150d986828701614519565b9350506020840135915060408401356150f181615ec1565b809150509250925092565b60008060008060808587031215615111578182fd5b84516001600160401b0380821115615127578384fd5b61513388838901614667565b95506020870151915080821115615148578384fd5b61495188838901614667565b600080600060608486031215615168578081fd5b83516001600160401b038082111561517e578283fd5b61518a87838801614667565b9450602086015193506040860151915080821115614ed5578283fd5b6000806000606084860312156151ba578081fd5b83356001600160401b03808211156151d0578283fd5b81860160a081890312156151e2578384fd5b6151ec60a0615dfe565b925080358352602081013560208401526040810135604084015261521388606083016141d1565b6060840152608081013582811115615229578485fd5b61523589828401614485565b60808501525091945050506020840135915061525485604086016141d1565b90509250925092565b60006020828403121561526e578081fd5b5051919050565b60008060408385031215615287578182fd5b825161529281615ed6565b6020939093015192949293505050565b6000806000606084860312156152b6578081fd5b83516152c181615ed6565b6020850151604086015191945092506150f181615ec1565b600080600080608085870312156152ee578182fd5b6152f886866147a9565b935060208501519250604085015161530f81615ec1565b60608601519092506001600160401b0381111561532a578182fd5b614994878288016144d3565b60008060006060848603121561534a578081fd5b61535485856147a9565b92506020840151915060408401516001600160401b0381111561485a578182fd5b600080600060608486031215615389578081fd5b61539385856147a9565b925060208401519150604084015190509250925092565b6001600160a01b03169052565b6000815180845260208401935060208301825b828110156153f15781516001600160a01b03168652602095860195909101906001016153ca565b5093949350505050565b600081518084526020840180819550602083028101915060208501845b84811015615446578284038852615430848351615483565b6020988901989094509190910190600101615418565b50919695505050505050565b6000815180845260208401935060208301825b828110156153f1578151865260209586019590910190600101615465565b6000815180845261549b816020860160208601615e66565b601f01601f19169290920160200192915050565b80516154ba81615ead565b825260208181015190830152604090810151910152565b60006101c06154e18484516153aa565b60208301516154f360208601826153aa565b50604083015161550660408601826153aa565b50606083015161551960608601826153aa565b506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151818601525061012080840151818601525061014080840151828287015261557283870182615483565b9150506101609150818401518582038387015261558f8282615483565b9250505061018080840151858303828701526155ab8382615483565b9150506101a091508184015185820383870152613a4d8282615483565b600082516155da818460208701615e66565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038516815260806020820181905260009061565a90830186615452565b828103604084015261566c8186615452565b838103606085015261567e8186615483565b98975050505050505050565b6001600160a01b03841681526060602082018190526000906156ae90830185615483565b9050826040830152949350505050565b6001600160a01b03851681526080602082018190526000906156e290830186615483565b828103604084015261566c8186615483565b6001600160a01b03929092168252602082015260400190565b60006080825261572060808301876153fb565b828103602084015261573281876153b7565b838103604085015261574481876153b7565b91505082810360608401526157598185615452565b979650505050505050565b602080825282518282018190526000918401906040840190835b818110156157a557835161579181615eb7565b83526020938401939092019160010161577e565b509095945050505050565b606080825284519082018190526000906020906080840190828801845b828110156157f3576157e08483516154af565b60609390930192908401906001016157cd565b505050838103828501526158078187615452565b84810360408601528551808252908301915082860190845b8181101561583d57825115158452928401929184019160010161581f565b509198975050505050505050565b600060208252610cd86020830184615452565b6000604082526158716040830185615452565b828103602084015261588381856153fb565b95945050505050565b60006040825261589f6040830185615452565b82810360208401526158838185615452565b90815260200190565b8481526001600160a01b03841660208201526080604082018190526000906158e490830185615483565b82810360608401526157598185615483565b918252602082015260400190565b6000838252604060208301526118ba6040830184615483565b6000848252606060208301526159366060830185615483565b8281036040840152613a4d8185615483565b8281526040810161595883615ead565b8260208301529392505050565b6001600160e01b031991909116815260200190565b6001600160e01b03199290921682526001600160a01b0316602082015260400190565b6001600160e01b0319851681526001600160a01b03848116602083015283166040820152608060608201819052600090613a4d90830184615483565b6001600160e01b0319861681526001600160a01b038516602082015260a060408201819052600090615a0d90830186615452565b8281036060840152615a1f8186615452565b83810360808501526118568186615483565b6001600160e01b0319851681526001600160a01b0384166020820152608060408201819052600090615a6590830185615483565b905082606083015295945050505050565b6001600160e01b03199390931683526001600160a01b03919091166020830152604082015260600190565b600063ffffffff60e01b8516825260606020830152615ac36060830185615452565b8281036040840152613a4d81856153fb565b600060208252610cd86020830184615483565b600060808252615afb6080830187615483565b6001600160a01b03958616602084015293909416604082015260ff9190911660609091015292915050565b600060028510615b3257fe5b848252836020830152606060408301526158836060830184615483565b60608101615b5c85615e96565b938152602081019290925260409091015290565b60608101615b7d85615ea3565b93815260208101929092526001600160a01b031660409091015290565b60408101615ba784615e96565b9281526020015290565b60608101615b5c85615ea3565b6060810160088510615b5c57fe5b60208101615bd983615eb7565b91905290565b6000615bea86615ead565b858252602082018590526001600160a01b0384166040830152608060608301819052613a4d90830184615483565b6040810160028410615ba757fe5b600060808252615c396080830187615483565b602083820381850152818751808452828401915082838202850101838a01865b83811015615c8757601f19878403018552615c758383516154d1565b94860194925090850190600101615c59565b50508681036040880152615c9b818a615452565b945050505050828103606084015261575981856153fb565b602080825260139082015272554e4b4e4f574e5f52455455524e5f4441544160681b604082015260600190565b60208082526019908201527f554e4b4e4f574e5f46554e4354494f4e5f53454c4543544f5200000000000000604082015260600190565b6020808252600d908201526c15539253541311535153951151609a1b604082015260600190565b6020808252600c908201526b2120a22fa9a2a622a1aa27a960a11b604082015260600190565b6020808252600e908201526d15d493d391d7d41493d61657d25160921b604082015260600190565b60a08101615d9a82866154af565b8360608301528215156080830152949350505050565b600060208252610cd860208301846154d1565b600060408252615dd660408301856154d1565b82810360208401526158838185615483565b9283526020830191909152604082015260600190565b6040518181016001600160401b0381118282101715615e1c57600080fd5b604052919050565b60006001600160401b03821115615e39578081fd5b5060209081020190565b60006001600160401b03821115615e58578081fd5b50601f01601f191660200190565b60005b83811015615e81578181015183820152602001615e69565b83811115615e90576000848401525b50505050565b60048110615ea057fe5b50565b60038110615ea057fe5b60078110615ea057fe5b60058110615ea057fe5b6001600160a01b0381168114615ea057600080fd5b60ff81168114615ea057600080fdfea365627a7a72315820a1f72e0fecf83c3e25dfac45671531008e6d10bf428de8acfd449b715d8f4ad16c6578706572696d656e74616cf564736f6c63430005100040"
|
|
}
|
|
}
|
|
},
|
|
"compiler": {
|
|
"name": "solc",
|
|
"version": "soljson-v0.5.16+commit.9c3226ce.js",
|
|
"settings": {
|
|
"optimizer": {
|
|
"enabled": true,
|
|
"runs": 200,
|
|
"details": { "yul": true, "deduplicate": true, "cse": true, "constantOptimizer": true }
|
|
},
|
|
"outputSelection": {
|
|
"*": {
|
|
"*": [
|
|
"abi",
|
|
"devdoc",
|
|
"evm.bytecode.object",
|
|
"evm.bytecode.sourceMap",
|
|
"evm.deployedBytecode.object",
|
|
"evm.deployedBytecode.sourceMap"
|
|
]
|
|
}
|
|
},
|
|
"evmVersion": "istanbul"
|
|
}
|
|
},
|
|
"chains": {}
|
|
}
|