[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "success", "type": "bool" } ], "name": "UodateURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "cal", "type": "uint256" } ], "name": "UpgradeNFTByAvax", "type": "event" }, { "inputs": [], "name": "XYZToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_tokenIds", "outputs": [ { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ableUpdateURI", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tierGroup", "type": "uint256" } ], "name": "aggregation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "borrow", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "borrowFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "borrowList", "outputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "borrowTime", "type": "uint256" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "borrowNFTList", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tier", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "canMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "canTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currencyToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "defaultURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "discountFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "tierGroup", "type": "uint256" } ], "name": "downgradeNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "buyTier0", "type": "bool" } ], "name": "exchangeXYZAndTier0", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "exemptMaxAmountUser", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "flatFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "fractionalize", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBorrowInfo", "outputs": [ { "components": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "borrowTime", "type": "uint256" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "internalType": "struct fNFT.BorrowInfo[]", "name": "borrowInfoList", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tier", "type": "uint256" } ], "name": "getInfo", "outputs": [ { "internalType": "uint256[]", "name": "res", "type": "uint256[]" }, { "internalType": "string[]", "name": "uriList", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "tire", "type": "uint256" } ], "name": "getLen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tier", "type": "uint256" } ], "name": "getMintUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTierInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "graceFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gracePeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "holdPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isBorrowable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTier0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTier0PerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "maxWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "max_Regular_tier", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "uint256", "name": "tie", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintNFTWithAvax", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintOption", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "priceDivisor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "redeemFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "bool", "name": "isOwner", "type": "bool" } ], "name": "redeemNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "roayltyFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "royaltyList", "outputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "mintCurrency", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyOption", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "sendAllBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAbleUpdataURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "holdTime", "type": "uint256" }, { "internalType": "uint256", "name": "graceTime", "type": "uint256" }, { "internalType": "uint256", "name": "_borrowFee", "type": "uint256" }, { "internalType": "uint256", "name": "_discount", "type": "uint256" }, { "internalType": "uint256", "name": "_redeemFee", "type": "uint256" }, { "internalType": "uint256", "name": "_graceFee", "type": "uint256" } ], "name": "setBorrowConf", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "flag", "type": "bool" } ], "name": "setBorrowable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setFlatFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "vals", "type": "uint256[]" }, { "internalType": "uint8", "name": "conf", "type": "uint8" } ], "name": "setListConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "list", "type": "address[]" }, { "internalType": "bool", "name": "flag", "type": "bool" }, { "internalType": "uint8", "name": "option", "type": "uint8" } ], "name": "setListOption", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxTier0", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxTier0PerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "option", "type": "uint8" } ], "name": "setMintOption", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "setNFTmintCurrency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "setRoyaltyFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "option", "type": "uint8" } ], "name": "setRoyaltyOption", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "setSwapFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "setTreasureWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "flag", "type": "bool" } ], "name": "setUpgradable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "setXYZtoken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "swapFeeExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "tier0transfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tierInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tier", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "updateDefaultURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "updateURI", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "upgradable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "tierGroup", "type": "uint256" } ], "name": "upgradeNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userInfo", "outputs": [ { "internalType": "uint256", "name": "tier0", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "whiteList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052601580546001600160a01b031990811673b31f66aa3c1e785363f0875a1b74e27b85fd66c7908117909255640ba43b740060215560438054821690921790915560448054821673d9e59061c7249adde2cbda06cf03ad8ce86320e61790556045805490911673726573a7774317dd108accb2720ac9848581f01d1790556402540be4006046556047805460ff19908116909155606460485567016345785d8a0000604955604a80546202010062ffffff19909116179055639502f900604b55604d8054909116905560026055819055603c605955600a605a819055605b819055605c819055605d55605e55348015620000fc57600080fd5b506040805180820182526004808252631993919560e21b6020808401828152855180870190965292855284015281519192916200013c9160009162000375565b5080516200015290600190602084019062000375565b5050506000620001676200037160201b60201c565b600780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506101f460168190556017556101c260185560de601990815560b4601a55605f601b556055601c55604b601d556041601e556032601f556021546020556046546064916200020391906200041b565b6200020f919062000449565b602255604654606490620002259060326200041b565b62000231919062000449565b602355604654620002449060016200041b565b602455604654620002579060026200041b565b6025556046546200026a9060036200041b565b6026556046546200027d9060046200041b565b602755604654620002909060056200041b565b602855604654620002a39060066200041b565b602955604654620002b69060076200041b565b602a55604654620002c99060086200041b565b602b556019602c556008602d556007602e819055602f819055603055600660318190556032819055603355600560348190556035556004603655600060378190553081526051602090815260408083208054600160ff199182168117909255600a7f348af2a918a292b1880f5b496291a3bc0b556c00e759e744db9445861889d36655604e9093528184208054841682179055338452922080549091169091179055620004a9565b3390565b82805462000383906200046c565b90600052602060002090601f016020900481019282620003a75760008555620003f2565b82601f10620003c257805160ff1916838001178555620003f2565b82800160010185558215620003f2579182015b82811115620003f2578251825591602001919060010190620003d5565b506200040092915062000404565b5090565b5b8082111562000400576000815560010162000405565b60008160001904831182151516156200044457634e487b7160e01b600052601160045260246000fd5b500290565b6000826200046757634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806200048157607f821691505b60208210811415620004a357634e487b7160e01b600052602260045260246000fd5b50919050565b615d8480620004b96000396000f3fe6080604052600436106103c95760003560e01c806301ffc9a7146103d5578063064cdefa1461040a57806306fdde031461043a578063081812fc1461045c578063095ea7b3146104895780630ca45150146104ab578063150b7a02146104cb57806318632850146105045780631959a002146105245780631e5ec9e81461056257806322e1dea91461058257806323b872dd146105a257806323fa495a146105c257806324813ec3146105e2578063248e85f114610602578063248ff82c14610622578063263fa1ad1461064257806326a49e371461066257806331d41c69146106825780633284427714610695578063332e4a34146106b557806334e19907146106d557806336a002db146106f5578063372c12b11461070b578063380e95b01461073b5780633e4086e51461075b5780633ee390c21461077b57806342842e0e1461079157806343e467cb146107b157806345d7b97a146107c7578063465eda8e146107e15780634cd8582b146108425780635351314c1461086f57806354cf2aeb14610882578063557ed1ba1461089857806357ab4ee3146108ab57806357d12275146108db5780635dc9028c146108fb5780635df005521461091157806361f066a0146109315780636352211e1461094457806363bb1b791461096457806366b0ce23146109775780636a91e7bc146109a35780636b2fa374146109d157806370a08231146109f1578063715018a614610a11578063765b5f1c14610a265780638166bd2e14610a3c57806385cc440d14610a5c5780638d4c47bb14610a6f5780638da5cb5b14610a8f578063920ab09f14610aa457806395d89b4114610b0f578063965fa21e14610b2457806396e613f814610b3a5780639bc76d7914610b4d578063a06db7dc14610b67578063a22cb46514610b7d578063a267c2c414610b9d578063aa46a40014610bca578063b722e53314610be1578063b88d4fde14610bf4578063c0bbfed214610c14578063c5ebeaec14610c34578063c87b56dd14610c47578063ca690fe314610c67578063cc9d751914610c87578063d4e5df5714610cb4578063d690a8c314610cd4578063d9eb594714610cea578063daeedd7414610d00578063de48c35614610d20578063e1a7f11514610d3a578063e626648a14610d5c578063e6f7833e14610d72578063e72415d714610d92578063e985e9c514610db2578063f2fde38b14610dd2578063f4d26fec14610df2578063f54956ce14610e0c578063f5967a2f14610e2c578063f5f7b96214610e42578063f6c3258314610e62578063f9578c5e14610e82578063f9ec796c14610e9557600080fd5b366103d057005b600080fd5b3480156103e157600080fd5b506103f56103f036600461501b565b610eb5565b60405190151581526020015b60405180910390f35b34801561041657600080fd5b506103f5610425366004615054565b60516020526000908152604090205460ff1681565b34801561044657600080fd5b5061044f610f07565b60405161040191906150c7565b34801561046857600080fd5b5061047c6104773660046150da565b610f99565b60405161040191906150f3565b34801561049557600080fd5b506104a96104a4366004615107565b611026565b005b3480156104b757600080fd5b506104a96104c636600461514a565b611137565b3480156104d757600080fd5b506104eb6104e6366004615204565b611174565b6040516001600160e01b03199091168152602001610401565b34801561051057600080fd5b506104a961051f3660046152bc565b611185565b34801561053057600080fd5b5061055461053f366004615054565b604f6020526000908152604090206001015481565b604051908152602001610401565b34801561056e57600080fd5b5061055461057d3660046150da565b611322565b34801561058e57600080fd5b506103f561059d366004615363565b611343565b3480156105ae57600080fd5b506104a96105bd366004615385565b61142b565b3480156105ce57600080fd5b506104a96105dd3660046150da565b611441565b3480156105ee57600080fd5b5061044f6105fd3660046150da565b611470565b34801561060e57600080fd5b5061055461061d366004615107565b611510565b34801561062e57600080fd5b506104a961063d366004615054565b611566565b34801561064e57600080fd5b5060455461047c906001600160a01b031681565b34801561066e57600080fd5b5061055461067d3660046150da565b6115b2565b6103f56106903660046153c1565b6115c9565b3480156106a157600080fd5b506104a96106b036600461514a565b61176a565b3480156106c157600080fd5b506103f56106d036600461541b565b6117a7565b3480156106e157600080fd5b506104a96106f03660046150da565b611930565b34801561070157600080fd5b50610554604b5481565b34801561071757600080fd5b506103f5610726366004615054565b604e6020526000908152604090205460ff1681565b34801561074757600080fd5b506104a961075636600461544e565b61195f565b34801561076757600080fd5b506104a96107763660046150da565b61199f565b34801561078757600080fd5b50610554605b5481565b34801561079d57600080fd5b506104a96107ac366004615385565b6119ce565b3480156107bd57600080fd5b5061055460215481565b3480156107d357600080fd5b50605f546103f59060ff1681565b3480156107ed57600080fd5b506108226107fc3660046150da565b605260205260009081526040902080546001909101546001600160a01b03918216911682565b604080516001600160a01b03938416815292909116602083015201610401565b34801561084e57600080fd5b5061055461085d3660046150da565b604c6020526000908152604090205481565b6104a961087d36600461546b565b6119e4565b34801561088e57600080fd5b5061055460485481565b3480156108a457600080fd5b5042610554565b3480156108b757600080fd5b506103f56108c6366004615054565b60546020526000908152604090205460ff1681565b3480156108e757600080fd5b506104a96108f6366004615054565b611dc9565b34801561090757600080fd5b5061055460555481565b34801561091d57600080fd5b506104a961092c366004615107565b611e15565b6104a961093f36600461541b565b611e66565b34801561095057600080fd5b5061047c61095f3660046150da565b6120d0565b6104a9610972366004615363565b612147565b34801561098357600080fd5b506053546109919060ff1681565b60405160ff9091168152602001610401565b3480156109af57600080fd5b506109c36109be366004615107565b6122c7565b60405161040192919061549b565b3480156109dd57600080fd5b5060435461047c906001600160a01b031681565b3480156109fd57600080fd5b50610554610a0c366004615054565b6123f0565b348015610a1d57600080fd5b506104a9612477565b348015610a3257600080fd5b50610554605c5481565b348015610a4857600080fd5b50610554610a573660046150da565b6124d9565b6104a9610a6a366004615363565b6124e9565b348015610a7b57600080fd5b506104a9610a8a366004615533565b6126af565b348015610a9b57600080fd5b5061047c612826565b348015610ab057600080fd5b50610aea610abf3660046150da565b6057602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610401565b348015610b1b57600080fd5b5061044f612835565b348015610b3057600080fd5b50610554605a5481565b6104a9610b4836600461546b565b612844565b348015610b5957600080fd5b50604d546109919060ff1681565b348015610b7357600080fd5b50610554605e5481565b348015610b8957600080fd5b506104a9610b983660046155ec565b612d43565b348015610ba957600080fd5b50610554610bb83660046150da565b60506020526000908152604090205481565b348015610bd657600080fd5b50600a546105549081565b6104a9610bef3660046150da565b612e04565b348015610c0057600080fd5b506104a9610c0f366004615204565b612f26565b348015610c2057600080fd5b506104a9610c2f3660046150da565b612f3d565b6104a9610c423660046150da565b612f6c565b348015610c5357600080fd5b5061044f610c623660046150da565b613133565b348015610c7357600080fd5b506104a9610c8236600461514a565b6132a2565b348015610c9357600080fd5b50610554610ca23660046150da565b60009081526050602052604090205490565b348015610cc057600080fd5b506104a9610ccf366004615054565b6132df565b348015610ce057600080fd5b5061055460465481565b348015610cf657600080fd5b5061055460495481565b348015610d0c57600080fd5b506104a9610d1b3660046153c1565b6133e5565b348015610d2c57600080fd5b506056546103f59060ff1681565b348015610d4657600080fd5b50610d4f613457565b6040516104019190615618565b348015610d6857600080fd5b5061055460595481565b348015610d7e57600080fd5b506104a9610d8d36600461544e565b6135cf565b348015610d9e57600080fd5b506104a9610dad36600461567a565b61360f565b348015610dbe57600080fd5b506103f5610dcd3660046156bd565b613672565b348015610dde57600080fd5b506104a9610ded366004615054565b6136a0565b348015610dfe57600080fd5b506047546103f59060ff1681565b348015610e1857600080fd5b506104a9610e273660046150da565b613779565b348015610e3857600080fd5b50610554605d5481565b348015610e4e57600080fd5b506104a9610e5d366004615054565b6137ad565b348015610e6e57600080fd5b5061044f610e7d3660046150da565b6137f9565b6104a9610e90366004615363565b61394e565b348015610ea157600080fd5b50610554610eb03660046150da565b613abe565b60006001600160e01b031982166380ac58cd60e01b1480610ee657506001600160e01b03198216635b5e139f60e01b145b80610f0157506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060008054610f16906156f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610f42906156f0565b8015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b5050505050905090565b6000610fa482613ace565b61100a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000611031826120d0565b9050806001600160a01b0316836001600160a01b0316141561109f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401611001565b336001600160a01b03821614806110bb57506110bb8133613672565b6111285760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b6064820152608401611001565b6111328383613aeb565b505050565b6007546001600160a01b031633146111615760405162461bcd60e51b815260040161100190615725565b605f805460ff1916911515919091179055565b630a85bd0160e11b5b949350505050565b6007546001600160a01b031633146111af5760405162461bcd60e51b815260040161100190615725565b604a5460ff8281169116141561122d578151600a146111e05760405162461bcd60e51b81526004016110019061575a565b60005b8251811015611132578281815181106111fe576111fe615781565b6020026020010151601682600b811061121957611219615781565b015580611225816157ad565b9150506111e3565b604a5460ff8281166101009092041614156112b0578151600a146112635760405162461bcd60e51b81526004016110019061575a565b60005b82518110156111325782818151811061128157611281615781565b6020026020010151602d82600b811061129c5761129c615781565b0155806112a8816157ad565b915050611266565b8151600b146112d15760405162461bcd60e51b81526004016110019061575a565b60005b8251811015611132578281815181106112ef576112ef615781565b6020026020010151602282600b811061130a5761130a615781565b015580611316816157ad565b9150506112d4565b5050565b6058818154811061133257600080fd5b600091825260209091200154905081565b6000600a831080156113825750601683600b811061136357611363615781565b01546000848152604c602052604090205461137f9084906157c8565b11155b80156113d9575060215461139790600a6157e0565b82601685600b81106113ab576113ab615781565b01546021546113ba9190615815565b6113c491906157e0565b6113cc613b59565b6113d691906157c8565b11155b156113e657506001610f01565b82600a14801561141557506021546113ff90600a6157e0565b82611408613b59565b61141291906157c8565b11155b1561142257506001610f01565b50600092915050565b611436838383613bc2565b611132838383613e14565b6007546001600160a01b0316331461146b5760405162461bcd60e51b815260040161100190615725565b604955565b603881600b811061148057600080fd5b01805490915061148f906156f0565b80601f01602080910402602001604051908101604052809291908181526020018280546114bb906156f0565b80156115085780601f106114dd57610100808354040283529160200191611508565b820191906000526020600020905b8154815290600101906020018083116114eb57829003601f168201915b505050505081565b600081600a141561153d57506001600160a01b0382166000908152604f6020526040902060010154610f01565b506001600160a01b03919091166000908152604f60209081526040808320938352929052205490565b6007546001600160a01b031633146115905760405162461bcd60e51b815260040161100190615725565b604380546001600160a01b0319166001600160a01b0392909216919091179055565b602281600b81106115c257600080fd5b0154905081565b60565460009060ff1615156001146116105760405162461bcd60e51b815260206004820152600a6024820152696e6f742075706461746560b01b6044820152606401611001565b60495434146116315760405162461bcd60e51b815260040161100190615829565b3361163a612826565b6001600160a01b03161480156116535750604d5460ff16155b8061167d5750336000908152604e602052604090205460ff16801561167d5750604d5460ff166001145b8061168d5750604d5460ff166002145b156117035761169c8383613e45565b604051600181523390600080516020615d2f8339815191529060200160405180910390a26044546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156116f9573d6000803e3d6000fd5b5060019050610f01565b604051600081523390600080516020615d2f8339815191529060200160405180910390a26044546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611760573d6000803e3d6000fd5b5060009392505050565b6007546001600160a01b031633146117945760405162461bcd60e51b815260040161100190615725565b6047805460ff1916911515919091179055565b6000828152605060209081526040808320546001600160a01b0387168452605190925282205460ff161515600114156117e4576001915050611929565b6001600160a01b03851660009081526051602052604090205460ff1615801561180d575080600a145b80156118415750604b546001600160a01b0386166000908152604f602052604090206001015461183e9085906157c8565b11155b15611850576001915050611929565b80600a1415611863576000915050611929565b6001600160a01b0385166000818152604f60209081526040808320858452825280832054938352605190915290205460ff161580156118a25750600a82105b80156118cb5750602d82600b81106118bc576118bc615781565b01546118c885836157c8565b11155b801561191257506118da613ed0565b601683600b81106118ed576118ed615781565b01546021546118fc9190615815565b61190588613f3c565b61190f91906157c8565b11155b1561192257600192505050611929565b6000925050505b9392505050565b6007546001600160a01b0316331461195a5760405162461bcd60e51b815260040161100190615725565b604855565b6007546001600160a01b031633146119895760405162461bcd60e51b815260040161100190615725565b604d805460ff191660ff92909216919091179055565b6007546001600160a01b031633146119c95760405162461bcd60e51b815260040161100190615725565b605555565b6119d9838383613bc2565b611132838383613fe2565b6049543414611a055760405162461bcd60e51b815260040161100190615829565b8015611bc6573360009081526054602052604081205460ff1615611a2a575081611a47565b606460485484611a3a91906157e0565b611a449190615815565b90505b60008111611a675760405162461bcd60e51b81526004016110019061584f565b306000908152604f6020526040902060010154811115611abe57611a8c600a82611343565b611aa85760405162461bcd60e51b815260040161100190615872565b306000908152604f602052604090206001018190555b6045546001600160a01b03166323b872dd336045546040805163313ce56760e01b8152905130926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3d9190615896565b611b4890600a61598f565b611b5290886157e0565b6040518463ffffffff1660e01b8152600401611b709392919061599e565b6020604051808303816000875af1158015611b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb391906159c2565b50611bc030335b83613ffd565b50611d90565b3360009081526054602052604081205460ff1615611c7157604560009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c559190615896565b611c6090600a61598f565b611c6a90846157e0565b9050611d0f565b6048546045546040805163313ce56760e01b81529051606493926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce39190615896565b611cee90600a61598f565b611cf890866157e0565b611d0291906157e0565b611d0c9190615815565b90505b611d1a333085613ffd565b6045546001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401611d4a9291906159df565b6020604051808303816000875af1158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d91906159c2565b50505b6044546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611132573d6000803e3d6000fd5b6007546001600160a01b03163314611df35760405162461bcd60e51b815260040161100190615725565b604580546001600160a01b0319166001600160a01b0392909216919091179055565b336001600160a01b0383161415611e5b5760405162461bcd60e51b815260206004820152600a602482015269496e76616c696420746f60b01b6044820152606401611001565b61131e338383613ffd565b600a811115611e735750600a5b600081602284600b8110611e8957611e89615781565b0154611e9591906157e0565b6015546043549192506001600160a01b0391821691161415611f0057604954604654611ec983670de0b6b3a76400006157e0565b611ed39190615815565b611edd91906157c8565b3414611efb5760405162461bcd60e51b815260040161100190615829565b612026565b6049543414611f215760405162461bcd60e51b815260040161100190615829565b6043546001600160a01b03166323b872dd336046546043546040805163313ce56760e01b815290513093926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa49190615896565b611faf90600a61598f565b611fb990876157e0565b611fc39190615815565b6040518463ffffffff1660e01b8152600401611fe19392919061599e565b6020604051808303816000875af1158015612000573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202491906159c2565b505b60005b8281101561208f57600061203d868661419a565b600090815260526020526040902080546001600160a01b031990811633178255601554600190920180549091166001600160a01b03929092169190911790555080612087816157ad565b915050612029565b506044546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156120c9573d6000803e3d6000fd5b5050505050565b6000818152600260205260408120546001600160a01b031680610f015760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401611001565b60495434146121685760405162461bcd60e51b815260040161100190615829565b60475460ff1661218a5760405162461bcd60e51b8152600401611001906159f8565b600082815260506020526040902054600a811080156121a95750600a82105b80156121b457508082105b6121d05760405162461bcd60e51b815260040161100190615a1f565b6000601682600b81106121e5576121e5615781565b01546021546121f49190615815565b90506000601684600b811061220b5761220b615781565b015460215461221a9190615815565b905061222733308761142b565b6000612233338661419a565b905061223f8284615a45565b306000908152604f602052604090206001015410156122a157612267600a61059d8486615a45565b6122835760405162461bcd60e51b815260040161100190615872565b61228d8284615a45565b306000908152604f60205260409020600101555b6122b530336122b08587615a45565b613ffd565b6122bf818761451f565b505050505050565b6001600160a01b0382166000908152604f60209081526040808320848452825291829020805483518184028101840190945280845260609384939092919083018282801561233457602002820191906000526020600020905b815481526020019060010190808311612320575b5050505050915081516001600160401b0381111561235457612354615167565b60405190808252806020026020018201604052801561238757816020015b60608152602001906001900390816123725790505b50905060005b82518110156123e8576123b88382815181106123ab576123ab615781565b6020026020010151613133565b8282815181106123ca576123ca615781565b602002602001018190525080806123e0906157ad565b91505061238d565b509250929050565b60006001600160a01b03821661245b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401611001565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146124a15760405162461bcd60e51b815260040161100190615725565b6007546040516000916001600160a01b031690600080516020615cef833981519152908390a3600780546001600160a01b0319169055565b601681600b81106115c257600080fd5b604954341461250a5760405162461bcd60e51b815260040161100190615829565b601681600b811061251d5761251d615781565b015460215461252c9190615815565b82101561254b5760405162461bcd60e51b81526004016110019061584f565b600a811061258a5760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b6044820152606401611001565b6000601682600b811061259f5761259f615781565b01546021546125ae9190615815565b6125b89084615815565b9050600a8111156125c75750600a5b6125f83330601685600b81106125df576125df615781565b01546021546125ee9190615815565b6122b090856157e0565b60005b8181101561266f576000612610335b8561419a565b90508061261d575061265d565b3360009182526052602052604090912080546001600160a01b03199081166001600160a01b03938416178255604354600190920180549290931691161790555b80612667816157ad565b9150506125fb565b506044546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156126a9573d6000803e3d6000fd5b50505050565b6007546001600160a01b031633146126d95760405162461bcd60e51b815260040161100190615725565b8060ff166001141561274c5760005b83518110156126a957826054600086848151811061270857612708615781565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580612744816157ad565b9150506126e8565b8060ff16600214156127bf5760005b83518110156126a95782604e600086848151811061277b5761277b615781565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806127b7816157ad565b91505061275b565b60005b83518110156126a95782605160008684815181106127e2576127e2615781565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061281e816157ad565b9150506127c2565b6007546001600160a01b031690565b606060018054610f16906156f0565b60495434146128655760405162461bcd60e51b815260040161100190615829565b600181151514801561288f575061287a612826565b6001600160a01b0316336001600160a01b0316145b80612898575080155b6128a157600080fd5b6000805b6058548110156129605783605882815481106128c3576128c3615781565b9060005260206000200154141561294e57605880546128e490600190615a45565b815481106128f4576128f4615781565b90600052602060002001546058828154811061291257612912615781565b600091825260209091200155605880548061292f5761292f615a5c565b6001900381819060005260206000200160009055905560019150612960565b80612958816157ad565b9150506128a5565b508061299d5760405162461bcd60e51b815260206004820152600c60248201526b1b9bc8189bdc9c9bddc81a5960a21b6044820152606401611001565b605e54605d546129ad91906157c8565b6000848152605760205260409020600101546129c99042615a45565b111580156129ed57506000838152605760205260409020546001600160a01b031633145b80612a435750605e54605d54612a0391906157c8565b600084815260576020526040902060010154612a1f9042615a45565b118015612a4357506000838152605760205260409020546001600160a01b03163314155b612a7e5760405162461bcd60e51b815260206004820152600c60248201526b34b73b30b634b2103ab9b2b960a11b6044820152606401611001565b612a87836145aa565b60018215151415612b23576044546040516323b872dd60e01b815230916323b872dd91612ac69184916001600160a01b0390911690889060040161599e565b600060405180830381600087803b158015612ae057600080fd5b505af1158015612af4573d6000803e3d6000fd5b505050600093845250506057602052506040812080546001600160a01b03191681556001810182905560020155565b6000605e54605d54612b3591906157c8565b600085815260576020526040902060010154612b519042615a45565b11158015612b7557506000848152605760205260409020546001600160a01b031633145b15612c2057605d54600085815260576020526040902060010154612b999042615a45565b11612bcd57605a54605954612bae91906157e0565b605954612bbc9060646157e0565b612bc691906157c8565b9050612c3c565b605e54605d54612bdd91906157c8565b600085815260576020526040902060010154612bf99042615a45565b11612c1b57605954605b54605a54612c1191906157c8565b612bae91906157e0565b612c3c565b605c54612c2e906064615a45565b612c399060646157e0565b90505b600084815260576020908152604080832080546001600160a01b0319168155600181018490556002018390556050909152812054601690600b8110612c8357612c83615781565b0154602154612c929190615815565b9050612cb03330612710612ca686866157e0565b6122b09190615815565b6040516323b872dd60e01b815230906323b872dd90612cd790839033908a9060040161599e565b600060405180830381600087803b158015612cf157600080fd5b505af1158015612d05573d6000803e3d6000fd5b50506044546040516001600160a01b0390911692504780156108fc029250906000818181858888f193505050501580156122bf573d6000803e3d6000fd5b6001600160a01b038216331415612d985760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401611001565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6049543414612e255760405162461bcd60e51b815260040161100190615829565b60008181526050602052604081205490601682600b8110612e4857612e48615781565b0154602154612e579190615815565b9050612e65335b308561142b565b600083815260526020908152604080832080546001600160a01b03199081168255600191820180549091169055308452604f9092529091200154811115612ee357612eb1600a82611343565b612ecd5760405162461bcd60e51b815260040161100190615872565b306000908152604f602052604090206001018190555b612eed3033611bba565b6044546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156126a9573d6000803e3d6000fd5b612f31848484613bc2565b6126a984848484614881565b6007546001600160a01b03163314612f675760405162461bcd60e51b815260040161100190615725565b604b55565b6049543414612f8d5760405162461bcd60e51b815260040161100190615829565b605f5460ff16612fcc5760405162461bcd60e51b815260206004820152600a6024820152696e6f2073657474696e6760b01b6044820152606401611001565b612fd4612826565b6001600160a01b0316336001600160a01b0316141561302b5760405162461bcd60e51b81526020600482015260136024820152726f776e65722063616e6e6f7420626f72726f7760681b6044820152606401611001565b33613035826120d0565b6001600160a01b0316146130775760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606401611001565b60008181526050602052604081205490601682600b811061309a5761309a615781565b01546021546130a99190615815565b90506130b433612e5e565b6130c93033606460595485612ca691906157e0565b600083815260576020526040812080546001600160a01b031916331781554260018083019190915560029091018590556058805491820181559091527f657000d47e971dcfb21375bcfa3496f47a2a2f0f12c8aeb78a008ace6ae55ca501839055612eed836145aa565b606061313e82613ace565b6131a45760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b6064820152608401611001565b600082815260066020526040812080546131bd906156f0565b80601f01602080910402602001604051908101604052809291908181526020018280546131e9906156f0565b80156132365780601f1061320b57610100808354040283529160200191613236565b820191906000526020600020905b81548152906001019060200180831161321957829003601f168201915b50505050509050600061325460408051602081019091526000815290565b9050805160001415613267575092915050565b815115613299578082604051602001613281929190615a8e565b60405160208183030381529060405292505050919050565b61117d846148b3565b6007546001600160a01b031633146132cc5760405162461bcd60e51b815260040161100190615725565b6056805460ff1916911515919091179055565b6007546001600160a01b031633146133095760405162461bcd60e51b815260040161100190615725565b6044546040516370a0823160e01b81526001600160a01b038084169263a9059cbb9291169083906370a08231906133449030906004016150f3565b602060405180830381865afa158015613361573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133859190615abd565b6040518363ffffffff1660e01b81526004016133a29291906159df565b6020604051808303816000875af11580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e91906159c2565b6007546001600160a01b0316331461340f5760405162461bcd60e51b815260040161100190615725565b600a821061342f5760405162461bcd60e51b815260040161100190615a1f565b80603883600b811061344357613443615781565b019080519060200190611132929190614f72565b6058546060906001600160401b0381111561347457613474615167565b6040519080825280602002602001820160405280156134d257816020015b6134bf604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816134925790505b50905060005b6058548110156135cb57306001600160a01b0316613528605760006058858154811061350657613506615781565b90600052602060002001548152602001908152602001600020600201546120d0565b6001600160a01b03161461353b576135b9565b605760006058838154811061355257613552615781565b600091825260208083209091015483528281019390935260409182019020815160608101835281546001600160a01b03168152600182015493810193909352600201549082015282518390839081106135ad576135ad615781565b60200260200101819052505b806135c3816157ad565b9150506134d8565b5090565b6007546001600160a01b031633146135f95760405162461bcd60e51b815260040161100190615725565b6053805460ff191660ff92909216919091179055565b6007546001600160a01b031633146136395760405162461bcd60e51b815260040161100190615725565b61364686620151806157e0565b605d5561365685620151806157e0565b605e55605993909355605c91909155605b91909155605a555050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6007546001600160a01b031633146136ca5760405162461bcd60e51b815260040161100190615725565b6001600160a01b03811661372f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611001565b6007546040516001600160a01b03808416921690600080516020615cef83398151915290600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031633146137a35760405162461bcd60e51b815260040161100190615725565b6021819055602055565b6007546001600160a01b031633146137d75760405162461bcd60e51b815260040161100190615725565b604480546001600160a01b0319166001600160a01b0392909216919091179055565b306000908152604f6020908152604080832084845290915290208054606091901580159061389357508054819061383290600190615a45565b8154811061384257613842615781565b90600052602060002001546057600083600185805490506138639190615a45565b8154811061387357613873615781565b906000526020600020015481526020019081526020016000206002015414155b156138d157805460009082906138ab90600190615a45565b815481106138bb576138bb615781565b9060005260206000200154905061117d81613133565b6000603884600b81106138e6576138e6615781565b01613915613905600b87600a811061390057613900615781565b015490565b6139109060016157c8565b61498a565b604051602001613926929190615ad6565b6040516020818303038152906040529050806040516020016132819190615b7d565b50919050565b60475460ff166139705760405162461bcd60e51b8152600401611001906159f8565b60008281526050602052604081205490602282600b811061399357613993615781565b0154602284600b81106139a8576139a8615781565b01546139b49190615a45565b9050336001600160a01b03167f35da91e5b418a59e54085b10b42be33b3938527f506ad3df2a0f8747d49ef3d43460465484670de0b6b3a76400006139f991906157e0565b613a039190615815565b6040805192835260208301919091520160405180910390a2604954604654613a3383670de0b6b3a76400006157e0565b613a3d9190615815565b613a4791906157c8565b3414613a655760405162461bcd60e51b815260040161100190615829565b600a82108015613a755750600a83105b8015613a8057508183115b613a9c5760405162461bcd60e51b815260040161100190615a1f565b613aa733308661142b565b6000613ab23361260a565b90506120c9818661451f565b602d81600b81106115c257600080fd5b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613b20826120d0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080805b600a8111613948576000818152604c602052604090205480601683600b8110613b8957613b89615781565b0154602154613b989190615815565b613ba291906157e0565b613bac90846157c8565b9250508080613bba906157ad565b915050613b5e565b6001600160a01b038084166000908152604f60208181526040808420868552605083528185205480865290835281852095881685529282528084209284529190529020613c11848460016117a7565b613c525760405162461bcd60e51b8152602060048201526012602482015271657863656564206d617820616d6f756e743160701b6044820152606401611001565b6000805b8354811015613d0f57838181548110613c7157613c71615781565b9060005260206000200154851415613cfd5783548490613c9390600190615a45565b81548110613ca357613ca3615781565b9060005260206000200154848281548110613cc057613cc0615781565b906000526020600020018190555083805480613cde57613cde615a5c565b6001900381819060005260206000200160009055905560019150613d0f565b80613d07816157ad565b915050613c56565b5080613d535760405162461bcd60e51b8152602060048201526013602482015272199c9bdb481a185cc81b9bc81d1bdad95b9259606a1b6044820152606401611001565b8154600181018355600083815260209020018490556001600160a01b038616301415613da6576000848152605060209081526040808320548352604c9091528120805491613da0836157ad565b91905055505b6001600160a01b038516301415613de4576000848152605060209081526040808320548352604c9091528120805491613dde83615ba6565b91905055505b6001600160a01b0386163014801590613e0657506001600160a01b0385163014155b156122bf576122bf846145aa565b613e1e3382614a87565b613e3a5760405162461bcd60e51b815260040161100190615bbd565b611132838383614b49565b613e4e82613ace565b613eb15760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401611001565b6000828152600660209081526040909120825161113292840190614f72565b600080805b600a811161394857601681600b8110613ef057613ef0615781565b0154602154602d83600b8110613f0857613f08615781565b0154613f1491906157e0565b613f1e9190615815565b613f2890836157c8565b915080613f34816157ad565b915050613ed5565b600080805b600a811015613fbb576001600160a01b0384166000908152604f6020908152604080832084845290915290208054601683600b8110613f8257613f82615781565b0154602154613f919190615815565b613f9b91906157e0565b613fa590846157c8565b9250508080613fb3906157ad565b915050613f41565b506001600160a01b0383166000908152604f602052604090206001015461192990826157c8565b61113283838360405180602001604052806000815250612f26565b6001600160a01b0383166000908152604f602052604090206001015481111561405f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696365696e742062616c616e636560601b6044820152606401611001565b61406b826000836117a7565b6140ac5760405162461bcd60e51b815260206004820152601260248201527132bc31b2b2b21036b0bc1030b6b7bab73a1960711b6044820152606401611001565b6001600160a01b0383166000908152604f6020526040812060010180548392906140d7908490615a45565b90915550506001600160a01b0382166000908152604f6020526040812060010180548392906141079084906157c8565b90915550506001600160a01b03831630141561415157600080516020615ccf833981519152546000908152604c60205260408120805483929061414b9084906157c8565b90915550505b6001600160a01b03821630141561113257600080516020615ccf833981519152546000908152604c602052604081208054839290614190908490615a45565b9091555050505050565b6000600b82106141da5760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642074696560a81b6044820152606401611001565b336141e3612826565b6001600160a01b03161480156141fc5750604d5460ff16155b806142265750336000908152604e602052604090205460ff1680156142265750604d5460ff166001145b806142365750604d5460ff166002145b156144e657600082600a14156142a657614251836001611343565b61426d5760405162461bcd60e51b815260040161100190615872565b306000908152604f6020526040812060010180549161428b836157ad565b919050555061429c30856001613ffd565b6000915050610f01565b306000908152604f60209081526040808320868452909152902080541580159061433c5750805481906142db90600190615a45565b815481106142eb576142eb615781565b906000526020600020015460576000836001858054905061430c9190615a45565b8154811061431c5761431c615781565b906000526020600020015481526020019081526020016000206002015414155b15614373578054819061435190600190615a45565b8154811061436157614361615781565b9060005260206000200154915061447c565b61437e846001611343565b61439a5760405162461bcd60e51b815260040161100190615872565b6143a8600a80546001019055565b6143c8600b85600a81106143be576143be615781565b0180546001019055565b600a5491506143d73083614cd7565b60008281526050602090815260408220869055825460018101845583835290822001839055603885600b811061440f5761440f615781565b01614429613910600b88600a811061390057613900615781565b60405160200161443a929190615ad6565b604051602081830303815290604052905060008160405160200161445e9190615b7d565b60405160208183030381529060405290506144798482613e45565b50505b60405163095ea7b360e01b8152309063095ea7b3906144a190889086906004016159df565b600060405180830381600087803b1580156144bb57600080fd5b505af11580156144cf573d6000803e3d6000fd5b505050506144de30868461142b565b509050610f01565b60405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21027b83a34b7b760911b6044820152606401611001565b81614528575050565b6000828152605260205260408082208054336001600160a01b03199182161782558484528284206001818101805491909401805484166001600160a01b0392831617905581548316909155825490911690915560445491519116914780156108fc02929091818181858888f19350505050158015611132573d6000803e3d6000fd5b600081815260526020908152604080832080546001909101546050909352908320546015546001600160a01b03928316949383169392168314156145fb576015546001600160a01b031691506145ff565b8291505b60535460ff1660011415614737576001600160a01b0382166323b872dd33306046546064876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146859190615896565b61469090600a61598f565b605554602289600b81106146a6576146a6615781565b01546146b291906157e0565b6146bc91906157e0565b6146c69190615815565b6146d09190615815565b6040518463ffffffff1660e01b81526004016146ee9392919061599e565b6020604051808303816000875af115801561470d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473191906159c2565b506120c9565b60535460ff16600214156120c9576001600160a01b03841633141561475d575050505050565b6001600160a01b0382166323b872dd33866046546064876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147d59190615896565b6147e090600a61598f565b605554602289600b81106147f6576147f6615781565b015461480291906157e0565b61480c91906157e0565b6148169190615815565b6148209190615815565b6040518463ffffffff1660e01b815260040161483e9392919061599e565b6020604051808303816000875af115801561485d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bf91906159c2565b61488b3383614a87565b6148a75760405162461bcd60e51b815260040161100190615bbd565b6126a984848484614cf1565b60606148be82613ace565b6149225760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401611001565b600061493960408051602081019091526000815290565b905060008151116149595760405180602001604052806000815250611929565b806149638461498a565b604051602001614974929190615a8e565b6040516020818303038152906040529392505050565b6060816149ae5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156149d857806149c2816157ad565b91506149d19050600a83615815565b91506149b2565b6000816001600160401b038111156149f2576149f2615167565b6040519080825280601f01601f191660200182016040528015614a1c576020820181803683370190505b5090505b841561117d57614a31600183615a45565b9150614a3e600a86615c0e565b614a499060306157c8565b60f81b818381518110614a5e57614a5e615781565b60200101906001600160f81b031916908160001a905350614a80600a86615815565b9450614a20565b6000614a9282613ace565b614af35760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401611001565b6000614afe836120d0565b9050806001600160a01b0316846001600160a01b03161480614b395750836001600160a01b0316614b2e84610f99565b6001600160a01b0316145b8061117d575061117d8185613672565b826001600160a01b0316614b5c826120d0565b6001600160a01b031614614bc45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401611001565b6001600160a01b038216614c265760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401611001565b614c31600082613aeb565b6001600160a01b0383166000908152600360205260408120805460019290614c5a908490615a45565b90915550506001600160a01b0382166000908152600360205260408120805460019290614c889084906157c8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b038681169182179092559151849391871691600080516020615d0f83398151915291a4505050565b61131e828260405180602001604052806000815250614d24565b614cfc848484614b49565b614d0884848484614d57565b6126a95760405162461bcd60e51b815260040161100190615c22565b614d2e8383614e52565b614d3b6000848484614d57565b6111325760405162461bcd60e51b815260040161100190615c22565b60006001600160a01b0384163b15614e4a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614d9b903390899088908890600401615c74565b6020604051808303816000875af1925050508015614dd6575060408051601f3d908101601f19168201909252614dd391810190615cb1565b60015b614e30573d808015614e04576040519150601f19603f3d011682016040523d82523d6000602084013e614e09565b606091505b508051614e285760405162461bcd60e51b815260040161100190615c22565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061117d565b50600161117d565b6001600160a01b038216614ea85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611001565b614eb181613ace565b15614efd5760405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606401611001565b6001600160a01b0382166000908152600360205260408120805460019290614f269084906157c8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386169081179091559051839290600080516020615d0f833981519152908290a45050565b828054614f7e906156f0565b90600052602060002090601f016020900481019282614fa05760008555614fe6565b82601f10614fb957805160ff1916838001178555614fe6565b82800160010185558215614fe6579182015b82811115614fe6578251825591602001919060010190614fcb565b506135cb9291505b808211156135cb5760008155600101614fee565b6001600160e01b03198116811461501857600080fd5b50565b60006020828403121561502d57600080fd5b813561192981615002565b80356001600160a01b038116811461504f57600080fd5b919050565b60006020828403121561506657600080fd5b61192982615038565b60005b8381101561508a578181015183820152602001615072565b838111156126a95750506000910152565b600081518084526150b381602086016020860161506f565b601f01601f19169290920160200192915050565b602081526000611929602083018461509b565b6000602082840312156150ec57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561511a57600080fd5b61512383615038565b946020939093013593505050565b801515811461501857600080fd5b803561504f81615131565b60006020828403121561515c57600080fd5b813561192981615131565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156151a5576151a5615167565b604052919050565b60006001600160401b038311156151c6576151c6615167565b6151d9601f8401601f191660200161517d565b90508281528383830111156151ed57600080fd5b828260208301376000602084830101529392505050565b6000806000806080858703121561521a57600080fd5b61522385615038565b935061523160208601615038565b92506040850135915060608501356001600160401b0381111561525357600080fd5b8501601f8101871361526457600080fd5b615273878235602084016151ad565b91505092959194509250565b60006001600160401b0382111561529857615298615167565b5060051b60200190565b60ff8116811461501857600080fd5b803561504f816152a2565b600080604083850312156152cf57600080fd5b82356001600160401b038111156152e557600080fd5b8301601f810185136152f657600080fd5b8035602061530b6153068361527f565b61517d565b82815260059290921b8301810191818101908884111561532a57600080fd5b938201935b838510156153485784358252938201939082019061532f565b955061535790508682016152b1565b93505050509250929050565b6000806040838503121561537657600080fd5b50508035926020909101359150565b60008060006060848603121561539a57600080fd5b6153a384615038565b92506153b160208501615038565b9150604084013590509250925092565b600080604083850312156153d457600080fd5b8235915060208301356001600160401b038111156153f157600080fd5b8301601f8101851361540257600080fd5b615411858235602084016151ad565b9150509250929050565b60008060006060848603121561543057600080fd5b61543984615038565b95602085013595506040909401359392505050565b60006020828403121561546057600080fd5b8135611929816152a2565b6000806040838503121561547e57600080fd5b82359150602083013561549081615131565b809150509250929050565b604080825283519082018190526000906020906060840190828701845b828110156154d4578151845292840192908401906001016154b8565b50505083810382850152845180825282820190600581901b8301840187850160005b8381101561552457601f1986840301855261551283835161509b565b948701949250908601906001016154f6565b50909998505050505050505050565b60008060006060848603121561554857600080fd5b83356001600160401b0381111561555e57600080fd5b8401601f8101861361556f57600080fd5b8035602061557f6153068361527f565b82815260059290921b8301810191818101908984111561559e57600080fd5b938201935b838510156155c3576155b485615038565b825293820193908201906155a3565b96506155d2905087820161513f565b94505050506155e3604085016152b1565b90509250925092565b600080604083850312156155ff57600080fd5b61560883615038565b9150602083013561549081615131565b602080825282518282018190526000919060409081850190868401855b8281101561566d57815180516001600160a01b0316855286810151878601528501518585015260609093019290850190600101615635565b5091979650505050505050565b60008060008060008060c0878903121561569357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156156d057600080fd5b6156d983615038565b91506156e760208401615038565b90509250929050565b600181811c9082168061570457607f821691505b6020821081141561394857634e487b7160e01b600052602260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600d908201526c1a5b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157c1576157c1615797565b5060010190565b600082198211156157db576157db615797565b500190565b60008160001904831182151516156157fa576157fa615797565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615824576158246157ff565b500490565b6020808252600c908201526b6e6f742065712076616c756560a01b604082015260600190565b6020808252600990820152681d1bdbc81cdb585b1b60ba1b604082015260600190565b6020808252600a90820152691b1a5b5a5d081b5a5b9d60b21b604082015260600190565b6000602082840312156158a857600080fd5b8151611929816152a2565b600181815b808511156123e85781600019048211156158d4576158d4615797565b808516156158e157918102915b93841c93908002906158b8565b6000826158fd57506001610f01565b8161590a57506000610f01565b8160018114615920576002811461592a57615946565b6001915050610f01565b60ff84111561593b5761593b615797565b50506001821b610f01565b5060208310610133831016604e8410600b8410161715615969575081810a610f01565b61597383836158b3565b806000190482111561598757615987615797565b029392505050565b600061192960ff8416836158ee565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156159d457600080fd5b815161192981615131565b6001600160a01b03929092168252602082015260400190565b6020808252600d908201526c3737903832b936b4b9b9b4b7b760991b604082015260600190565b6020808252600c908201526b34b73b30b634b2103a34b2b960a11b604082015260600190565b600082821015615a5757615a57615797565b500390565b634e487b7160e01b600052603160045260246000fd5b60008151615a8481856020860161506f565b9290920192915050565b60008351615aa081846020880161506f565b835190830190615ab481836020880161506f565b01949350505050565b600060208284031215615acf57600080fd5b5051919050565b600080845481600182811c915080831680615af257607f831692505b6020808410821415615b1257634e487b7160e01b86526022600452602486fd5b818015615b265760018114615b3757615b64565b60ff19861689528489019650615b64565b60008b81526020902060005b86811015615b5c5781548b820152908501908301615b43565b505084890196505b505050505050615b748185615a72565b95945050505050565b60008251615b8f81846020870161506f565b64173539b7b760d91b920191825250600501919050565b600081615bb557615bb5615797565b506000190190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082615c1d57615c1d6157ff565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615ca79083018461509b565b9695505050505050565b600060208284031215615cc357600080fd5b81516119298161500256fe348af2a918a292b1880f5b496291a3bc0b556c00e759e744db9445861889d3668be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef56fec203058d9a869b913308c1ef948fb8e2e66fddcb5eed5d9a86c0bf0d0557a2646970667358221220e82ec831685fcaeb053a6af29e55177ebb225998a5bb5ef219bb743c2ddbd11364736f6c634300080c0033