zic-tron-sdk
Version:
An sdk for interacting with tron zebec card sdk
1,012 lines • 2.06 MB
JSON
{
"contractName": "ZebecCard",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requiredBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentBalance",
"type": "uint256"
}
],
"name": "NotEnoughBalance",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "userEmail",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "purchasedAt",
"type": "uint256"
}
],
"name": "CardPurchased",
"type": "event",
"signature": "0xce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Deposited",
"type": "event",
"signature": "0x2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event",
"signature": "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event",
"signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "srcToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "spentAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "returnAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "feeAmount",
"type": "uint256"
}
],
"name": "Swapped",
"type": "event",
"signature": "0xd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event",
"signature": "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "withdrawnAmount",
"type": "uint256"
}
],
"name": "WithdrawYield",
"type": "event",
"signature": "0xf09b3678dd1b265d3e2d9f681481c92d1cdd81b6e19fa43651707dedf99263a8",
"stateMutability": "nonpayable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "withdrawnAmount",
"type": "uint256"
}
],
"name": "Withdrawn",
"type": "event",
"signature": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5",
"stateMutability": "nonpayable"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0xad3cb1cc"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "string",
"name": "userEmail",
"type": "string"
}
],
"name": "buyCard",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x69a34653"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "cardBalances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0xf076a846"
},
{
"inputs": [],
"name": "cardConfig",
"outputs": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nonNativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "revenueFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "counter",
"type": "uint256"
},
{
"internalType": "address",
"name": "cardVault",
"type": "address"
},
{
"internalType": "address",
"name": "revenueVault",
"type": "address"
},
{
"internalType": "address",
"name": "usdcAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "minCardAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxCardAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dailyCardBuyLimit",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0x37cf5331"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "cardPurchases",
"outputs": [
{
"internalType": "uint256",
"name": "unixInRecord",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalCardBoughtPerDay",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0xa5b7ac7e"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "depositUsdc",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x2357928e"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "feeTiers",
"outputs": [
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0x230ed44a"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "getFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0xfcee45f4"
},
{
"inputs": [],
"name": "getFeeTiers",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"internalType": "struct ZebecCard.FeeTier[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0xe9a4d24f"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nonNativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "revenueFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "counter",
"type": "uint256"
},
{
"internalType": "address",
"name": "cardVault",
"type": "address"
},
{
"internalType": "address",
"name": "revenueVault",
"type": "address"
},
{
"internalType": "address",
"name": "usdcAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "minCardAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxCardAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dailyCardBuyLimit",
"type": "uint256"
}
],
"internalType": "struct ZebecCard.CardConfig",
"name": "card_config",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"internalType": "struct ZebecCard.FeeTier[]",
"name": "fee_tiers",
"type": "tuple[]"
},
{
"internalType": "address",
"name": "sun_swap_router",
"type": "address"
},
{
"internalType": "address",
"name": "wrapped_trx",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x569b5dbf"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0x8da5cb5b"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0x52d1902d"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x715018a6"
},
{
"inputs": [
{
"internalType": "address",
"name": "cardVault",
"type": "address"
}
],
"name": "setCardVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xd895a46b"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "dailyCardBuyLimit",
"type": "uint256"
}
],
"name": "setDailyCardBuyLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xbea9c43e"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"name": "setFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x5b65b9ab"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"internalType": "struct ZebecCard.FeeTier[]",
"name": "newTiers",
"type": "tuple[]"
}
],
"name": "setFeeArray",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x166dbb73"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "maxAmount",
"type": "uint256"
}
],
"name": "setMaxCardAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xb0d097de"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "minAmount",
"type": "uint256"
}
],
"name": "setMinCardAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x48455ff0"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
}
],
"name": "setNativeFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xb91a1e8f"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "nonNativeFee",
"type": "uint256"
}
],
"name": "setNonNativeFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xe591f2ff"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "revenueFee",
"type": "uint256"
}
],
"name": "setRevenueFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x14435445"
},
{
"inputs": [
{
"internalType": "address",
"name": "revenueVault",
"type": "address"
}
],
"name": "setRevenueVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x4d68e925"
},
{
"inputs": [
{
"internalType": "address",
"name": "usdcAddress",
"type": "address"
}
],
"name": "setUsdcAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xd38bcdee"
},
{
"inputs": [],
"name": "sunSwapRouter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0x22e41dc4"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "path",
"type": "address[]"
},
{
"internalType": "string[]",
"name": "poolVersion",
"type": "string[]"
},
{
"internalType": "uint256[]",
"name": "versionLen",
"type": "uint256[]"
},
{
"internalType": "uint24[]",
"name": "fees",
"type": "uint24[]"
},
{
"components": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amountOutMin",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
}
],
"internalType": "struct ISmartRouter.SwapData",
"name": "data",
"type": "tuple"
}
],
"name": "swapAndDeposit",
"outputs": [],
"stateMutability": "payable",
"type": "function",
"payable": true,
"signature": "0xce82f2b3"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xf2fde38b"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function",
"payable": true,
"signature": "0x4f1ef286"
},
{
"inputs": [],
"name": "wTrx",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true,
"signature": "0x2a780067"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x2e1a7d4d"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b50d3801561002157600080fd5b50d2801561002e57600080fd5b50608051612f0e61005860003960008181611c8f01528181611cb80152611df90152612f0e6000f3fe6080604052600436106101cd5760003560e01c8063715018a6116100f7578063ce82f2b311610095578063e9a4d24f11610064578063e9a4d24f1461087d578063f076a846146108b9578063f2fde38b14610900578063fcee45f41461093a57600080fd5b8063ce82f2b3146107bc578063d38bcdee146107cf578063d895a46b14610809578063e591f2ff1461084357600080fd5b8063ad3cb1cc116100d1578063ad3cb1cc146106b6578063b0d097de1461070e578063b91a1e8f14610748578063bea9c43e1461078257600080fd5b8063715018a6146105cd5780638da5cb5b146105fc578063a5b7ac7e1461065357600080fd5b806337cf53311161016f57806352d1902d1161013e57806352d1902d146104e2578063569b5dbf1461051f5780635b65b9ab1461055957806369a346531461059357600080fd5b806337cf5331146103a257806348455ff01461045b5780634d68e925146104955780634f1ef286146104cf57600080fd5b8063230ed44a116101ab578063230ed44a1461029f5780632357928e146102f45780632a7800671461032e5780632e1a7d4d1461036857600080fd5b806314435445146101d2578063166dbb731461020e57806322e41dc414610248575b600080fd5b3480156101de57600080fd5b50d380156101eb57600080fd5b50d280156101f857600080fd5b5061020c610207366004612444565b610974565b005b34801561021a57600080fd5b50d3801561022757600080fd5b50d2801561023457600080fd5b5061020c6102433660046125aa565b610981565b34801561025457600080fd5b50d3801561026157600080fd5b50d2801561026e57600080fd5b50600a54610282906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ab57600080fd5b50d380156102b857600080fd5b50d280156102c557600080fd5b506102d96102d4366004612444565b610a0b565b60408051938452602084019290925290820152606001610296565b34801561030057600080fd5b50d3801561030d57600080fd5b50d2801561031a57600080fd5b5061020c610329366004612444565b610a3e565b34801561033a57600080fd5b50d3801561034757600080fd5b50d2801561035457600080fd5b50600b54610282906001600160a01b031681565b34801561037457600080fd5b50d3801561038157600080fd5b50d2801561038e57600080fd5b5061020c61039d366004612444565b610bf3565b3480156103ae57600080fd5b50d380156103bb57600080fd5b50d280156103c857600080fd5b5060005460015460025460035460045460055460065460075460085460095461040599989796956001600160a01b0390811695811694169291908a565b604080519a8b5260208b01999099529789019690965260608801949094526001600160a01b03928316608088015290821660a08701521660c085015260e084015261010083015261012082015261014001610296565b34801561046757600080fd5b50d3801561047457600080fd5b50d2801561048157600080fd5b5061020c610490366004612444565b610d70565b3480156104a157600080fd5b50d380156104ae57600080fd5b50d280156104bb57600080fd5b5061020c6104ca36600461260e565b610d7d565b61020c6104dd366004612680565b610da7565b3480156104ee57600080fd5b50d380156104fb57600080fd5b50d2801561050857600080fd5b50610511610dc2565b604051908152602001610296565b34801561052b57600080fd5b50d3801561053857600080fd5b50d2801561054557600080fd5b5061020c6105543660046126e1565b610ddf565b34801561056557600080fd5b50d3801561057257600080fd5b50d2801561057f57600080fd5b5061020c61058e3660046127d8565b611018565b34801561059f57600080fd5b50d380156105ac57600080fd5b50d280156105b957600080fd5b5061020c6105c8366004612804565b61117f565b3480156105d957600080fd5b50d380156105e657600080fd5b50d280156105f357600080fd5b5061020c6114ee565b34801561060857600080fd5b50d3801561061557600080fd5b50d2801561062257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610282565b34801561065f57600080fd5b50d3801561066c57600080fd5b50d2801561067957600080fd5b506106a161068836600461260e565b600c602052600090815260409020805460019091015482565b60408051928352602083019190915201610296565b3480156106c257600080fd5b50d380156106cf57600080fd5b50d280156106dc57600080fd5b50610701604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102969190612884565b34801561071a57600080fd5b50d3801561072757600080fd5b50d2801561073457600080fd5b5061020c610743366004612444565b611502565b34801561075457600080fd5b50d3801561076157600080fd5b50d2801561076e57600080fd5b5061020c61077d366004612444565b61150f565b34801561078e57600080fd5b50d3801561079b57600080fd5b50d280156107a857600080fd5b5061020c6107b7366004612444565b61151c565b61020c6107ca3660046128db565b611529565b3480156107db57600080fd5b50d380156107e857600080fd5b50d280156107f557600080fd5b5061020c61080436600461260e565b61193c565b34801561081557600080fd5b50d3801561082257600080fd5b50d2801561082f57600080fd5b5061020c61083e36600461260e565b611966565b34801561084f57600080fd5b50d3801561085c57600080fd5b50d2801561086957600080fd5b5061020c610878366004612444565b611990565b34801561088957600080fd5b50d3801561089657600080fd5b50d280156108a357600080fd5b506108ac61199d565b60405161029691906129ba565b3480156108c557600080fd5b50d380156108d257600080fd5b50d280156108df57600080fd5b506105116108ee36600461260e565b600d6020526000908152604090205481565b34801561090c57600080fd5b50d3801561091957600080fd5b50d2801561092657600080fd5b5061020c61093536600461260e565b611a1a565b34801561094657600080fd5b50d3801561095357600080fd5b50d2801561096057600080fd5b5061051161096f366004612444565b611a58565b61097c611b41565b600255565b610989611b41565b610995600e6000612402565b60005b8151811015610a0757600e8282815181106109b5576109b5612a13565b60209081029190910181015182546001818101855560009485529383902082516003909202019081559181015192820192909255604090910151600290910155806109ff81612a3f565b915050610998565b5050565b600e8181548110610a1b57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b600654604051636eb1769f60e11b8152336004820152306024820152829182916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa158015610a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab49190612a58565b1015610b005760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064015b60405180910390fd5b6006546001600160a01b03166000839003610b4e5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b610b636001600160a01b038216333086611b9c565b336000908152600d60205260408120548190610b7f9086611c03565b9150915081610ba05760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602052604090819020839055517f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490610be49088815260200190565b60405180910390a25050505050565b6006546001600160a01b0316336000839003610c425760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b6001600160a01b038116610c8a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b6001600160a01b0381166000908152600d602052604090205483811015610cce57604051634787a10360e11b81526004810185905260248101829052604401610af7565b600080610cdb8387611c2c565b9150915081610cfc5760405162461bcd60e51b8152600401610af790612a71565b6001600160a01b038085166000908152600d60205260409020829055610d259086168588611c4e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d587604051610d6091815260200190565b60405180910390a2505050505050565b610d78611b41565b600755565b610d85611b41565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610daf611c84565b610db882611d29565b610a078282611d31565b6000610dcc611dee565b50600080516020612eb983398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610e245750825b90506000826001600160401b03166001148015610e405750303b155b905081158015610e4e575080155b15610e6c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e9657845460ff60401b1916600160401b1785555b600a80546001600160a01b03808a166001600160a01b0319928316179092558a5160005560208b015160015560408b015160025560608b015160035560808b01516004805491841691831691909117905560a08b01516005805491841691831691909117905560c08b01516006805491909316911617905560e0890151600755610100890151600855610120890151600955610f30611e37565b610f3933611e3f565b600b80546001600160a01b0319166001600160a01b03881617905560005b8851811015610fc657600e898281518110610f7457610f74612a13565b6020908102919091018101518254600181810185556000948552938390208251600390920201908155918101519282019290925560409091015160029091015580610fbe81612a3f565b915050610f57565b50831561100d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611020611b41565b6000805b600e548110156110cf57600e818154811061104157611041612a13565b90600052602060002090600302016000015485101580156110865750600e818154811061107057611070612a13565b9060005260206000209060030201600101548511155b156110bd5782600e828154811061109f5761109f612a13565b906000526020600020906003020160020181905550600191506110cf565b806110c781612a3f565b915050611024565b5080611179576040805160608101825285815260208101858152918101848152600e805460018101825560009190915291517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd60039093029283015591517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe82015590517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff909101555b50505050565b6006546001600160a01b0316336111ca5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b60075483108015906111de57506008548311155b61122a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206e6f742077697468696e20627579696e672072616e676521006044820152606401610af7565b336000908152600d602052604090205483111561127657336000908152600d602052604090819020549051634787a10360e11b8152610af7918591600401918252602082015260400190565b600061128184611a58565b905060006127106112928387612a9f565b61129c9190612acc565b90506000806112ab8784611c2c565b91509150816112cc5760405162461bcd60e51b8152600401610af790612a71565b336000908152600d602052604081205481906112e8908a611c2c565b91509150816113095760405162461bcd60e51b8152600401610af790612a71565b336000908152600d60205260408120829055600380549161132983612a3f565b90915550429050896000808061133e85611e50565b336000908152600c60205260408120549396509194509250908190819061136490611e50565b9250925092506000838714801561137a57508286145b801561138557508185145b905080156113e657336000908152600c602052604081206001015481906113ac908b611c03565b91509150816113cd5760405162461bcd60e51b8152600401610af790612a71565b336000908152600c6020526040902060010155506113ff565b336000908152600c602052604090208981556001018890555b5050600954336000908152600c60205260409020600101541115945061146c93505050505760405162461bcd60e51b815260206004820152601e60248201527f4461696c79204361726420427579204c696d69742045786365656465642100006044820152606401610af7565b600554611486906001600160a01b038b8116911689611c4e565b6004546114a0906001600160a01b038b8116911687611c4e565b60035460405133907fce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909906114d9908f908f908890612ae0565b60405180910390a35050505050505050505050565b6114f6611b41565b6115006000611e76565b565b61150a611b41565b600855565b611517611b41565b600055565b611524611b41565b600955565b3061153a606083016040840161260e565b6001600160a01b0316146115905760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642064657374696e6174696f6e207265636569766572000000006044820152606401610af7565b6000898960008181106115a5576115a5612a13565b90506020020160208101906115ba919061260e565b600b549091508235906001600160a01b038084169116148015906116a2576115ed6001600160a01b038416333085611b9c565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303816000875af1158015611640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116649190612b09565b6116a25760405162461bcd60e51b815260206004820152600f60248201526e105c1c1c9bdd985b0819985a5b1959608a1b6044820152606401610af7565b6000600a60009054906101000a90046001600160a01b03166001600160a01b031663cef95229348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b81526004016116f699989796959493929190612c04565b60006040518083038185885af1158015611714573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261173d9190810190612d27565b905060005b81518110156117ab5761179960405180604001604052806012815260200171616d6f756e74734f75745b25645d3a20257360701b8152508284848151811061178c5761178c612a13565b6020026020010151611ee7565b806117a381612a3f565b915050611742565b50600081600183516117bd9190612db7565b815181106117cd576117cd612a13565b60200260200101519050600081116118155760405162461bcd60e51b815260206004820152600b60248201526a14ddd85c0819985a5b195960aa1b6044820152606401610af7565b6000806127106118258285612a9f565b61182f9190612acc565b905060008061183e8584611c2c565b915091508161185f5760405162461bcd60e51b8152600401610af790612a71565b60065460055482916001600160a01b03908116916118809183911687611c4e565b336000908152600d6020526040812054819061189c9085611c03565b91509150816118bd5760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602090815260409182902084905581518f81529081018f90529081018b9052606081018990526001600160a01b038f1691907fd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be9060800160405180910390a350505050505050505050505050505050505050505050565b611944611b41565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61196e611b41565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611998611b41565b600155565b6060600e805480602002602001604051908101604052809291908181526020016000905b82821015611a1157838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906119c1565b50505050905090565b611a22611b41565b6001600160a01b038116611a4c57604051631e4fbdf760e01b815260006004820152602401610af7565b611a5581611e76565b50565b6000805b600e54811015611b0257600e8181548110611a7957611a79612a13565b9060005260206000209060030201600001548310158015611abe5750600e8181548110611aa857611aa8612a13565b9060005260206000209060030201600101548311155b15611af057600e8181548110611ad657611ad6612a13565b906000526020600020906003020160020154915050919050565b80611afa81612a3f565b915050611a5c565b5060405162461bcd60e51b8152602060048201526013602482015272416d6f756e74206f7574206f662072616e676560681b6044820152606401610af7565b33611b737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146115005760405163118cdaa760e01b8152336004820152602401610af7565b6040516001600160a01b0384811660248301528381166044830152606482018390526111799186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611f2e565b60008083830184811015611c1e576000809250925050611c25565b6001925090505b9250929050565b60008083831115611c4257506000905080611c25565b50600193919092039150565b6040516001600160a01b03838116602483015260448201839052611c7f91859182169063a9059cbb90606401611bd1565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cff600080516020612eb9833981519152546001600160a01b031690565b6001600160a01b031614155b156115005760405163703e46dd60e11b815260040160405180910390fd5b611a55611b41565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8b575060408051601f3d908101601f19168201909252611d8891810190612a58565b60015b611db357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610af7565b600080516020612eb98339815191528114611de457604051632a87526960e21b815260048101829052602401610af7565b611c7f8383611f91565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115005760405163703e46dd60e11b815260040160405180910390fd5b611500611fe7565b611e47611fe7565b611a5581612030565b60008080611e69611e646201518086612acc565b612038565b9196909550909350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611c7f838383604051602401611eff93929190612dca565b60408051601f198184030181529190526020810180516001600160e01b031663ca47c4eb60e01b1790526121ac565b6000611f436001600160a01b038416836121cd565b90508051600014158015611f68575080806020019051810190611f669190612b09565b155b15611c7f57604051635274afe760e01b81526001600160a01b0384166004820152602401610af7565b611f9a826121e4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611fdf57611c7f8282612249565b610a076122bf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661150057604051631afcd79f60e31b815260040160405180910390fd5b611a22611fe7565b60008080838162253d8c61204f8362010bd9612def565b6120599190612def565b9050600062023ab161206c836004612e17565b6120769190612e47565b905060046120878262023ab1612e17565b612092906003612def565b61209c9190612e47565b6120a69083612e75565b9150600062164b096120b9846001612def565b6120c590610fa0612e17565b6120cf9190612e47565b905060046120df826105b5612e17565b6120e99190612e47565b6120f39084612e75565b6120fe90601f612def565b9250600061098f612110856050612e17565b61211a9190612e47565b90506000605061212c8361098f612e17565b6121369190612e47565b6121409086612e75565b905061214d600b83612e47565b945061215a85600c612e17565b612165836002612def565b61216f9190612e75565b9150848361217e603187612e75565b612189906064612e17565b6121939190612def565b61219d9190612def565b9a919950975095505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606121db838360006122de565b90505b92915050565b806001600160a01b03163b60000361221a57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610af7565b600080516020612eb983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122669190612e9c565b600060405180830381855af49150503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506122b685838361237d565b95945050505050565b34156115005760405163b398979f60e01b815260040160405180910390fd5b6060814710156123035760405163cd78605960e01b8152306004820152602401610af7565b600080856001600160a01b0316848660405161231f9190612e9c565b60006040518083038185875af1925050503d806000811461235c576040519150601f19603f3d011682016040523d82523d6000602084013e612361565b606091505b509150915061237186838361237d565b925050505b9392505050565b6060826123925761238d826123d9565b612376565b81511580156123a957506001600160a01b0384163b155b156123d257604051639996b31560e01b81526001600160a01b0385166004820152602401610af7565b5080612376565b8051156123e95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825560030290600052602060002090810190611a5591905b