Loading
[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "AddedMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "AddedPaymentManager", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "CleanedPermissions", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "consumeMarketFeeAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "consumeMarketFeeToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "consumeMarketFeeAmount", "type": "uint256" } ], "name": "ConsumeMarketFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "currentMinter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newMinter", "type": "address" } ], "name": "MinterApproved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "currentMinter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newMinter", "type": "address" } ], "name": "MinterProposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "dispenserContract", "type": "address" } ], "name": "NewDispenser", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "exchangeId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "exchangeContract", "type": "address" }, { "indexed": true, "internalType": "address", "name": "baseToken", "type": "address" } ], "name": "NewFixedRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newPaymentCollector", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "NewPaymentCollector", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "poolAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "ssContract", "type": "address" }, { "indexed": false, "internalType": "address", "name": "baseTokenAddress", "type": "address" } ], "name": "NewPool", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "providerAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "consumerAddress", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "orderTxId", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "providerData", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "providerSignature", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "consumerData", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "consumerSignature", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "OrderExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "orderTxId", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "number", "type": "uint256" } ], "name": "OrderReused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "consumer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "serviceIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "publishMarketAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "OrderStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "providerFeeAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "providerFeeToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "providerFeeAmount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "providerData", "type": "bytes" }, { "indexed": false, "internalType": "uint8", "name": "v", "type": "uint8" }, { "indexed": false, "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "s", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "validUntil", "type": "uint256" } ], "name": "ProviderFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "PublishMarketFeeAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "PublishMarketFeeToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "PublishMarketFeeAmount", "type": "uint256" } ], "name": "PublishMarketFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": false, "internalType": "address", "name": "PublishMarketFeeAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "PublishMarketFeeToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "PublishMarketFeeAmount", "type": "uint256" } ], "name": "PublishMarketFeeChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "RemovedMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "RemovedPaymentManager", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "datatokenAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "publisherAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "vestingEndBlock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalVestingAmount", "type": "uint256" } ], "name": "VestingCreated", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "BASE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_paymentManager", "type": "address" } ], "name": "addPaymentManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "authERC20", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cleanFrom721", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cleanPermissions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_dispenser", "type": "address" }, { "internalType": "uint256", "name": "maxTokens", "type": "uint256" }, { "internalType": "uint256", "name": "maxBalance", "type": "uint256" }, { "internalType": "bool", "name": "withMint", "type": "bool" }, { "internalType": "address", "name": "allowedSwapper", "type": "address" } ], "name": "createDispenser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fixedPriceAddress", "type": "address" }, { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "uints", "type": "uint256[]" } ], "name": "createFixedRate", "outputs": [ { "internalType": "bytes32", "name": "exchangeId", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "ssParams", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "swapFees", "type": "uint256[]" }, { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "name": "deployPool", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getDispensers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC721Address", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFixedRates", "outputs": [ { "components": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "bytes32", "name": "id", "type": "bytes32" } ], "internalType": "struct ERC20Template.fixedRate[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getId", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getPaymentCollector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getPermissions", "outputs": [ { "components": [ { "internalType": "bool", "name": "minter", "type": "bool" }, { "internalType": "bool", "name": "paymentManager", "type": "bool" } ], "internalType": "struct ERC20Roles.RolesERC20", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPools", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPublishingMarketFee", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "strings_", "type": "string[]" }, { "internalType": "address[]", "name": "addresses_", "type": "address[]" }, { "internalType": "address[]", "name": "factoryAddresses_", "type": "address[]" }, { "internalType": "uint256[]", "name": "uints_", "type": "uint256[]" }, { "internalType": "bytes[]", "name": "bytes_", "type": "bytes[]" } ], "name": "initialize", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "isERC20Deployer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isInitialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "orderTxId", "type": "bytes32" }, { "internalType": "bytes", "name": "providerData", "type": "bytes" }, { "internalType": "bytes", "name": "providerSignature", "type": "bytes" }, { "internalType": "bytes", "name": "consumerData", "type": "bytes" }, { "internalType": "bytes", "name": "consumerSignature", "type": "bytes" }, { "internalType": "address", "name": "consumerAddress", "type": "address" } ], "name": "orderExecuted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "permissions", "outputs": [ { "internalType": "bool", "name": "minter", "type": "bool" }, { "internalType": "bool", "name": "paymentManager", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_paymentManager", "type": "address" } ], "name": "removePaymentManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "orderTxId", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "providerFeeAddress", "type": "address" }, { "internalType": "address", "name": "providerFeeToken", "type": "address" }, { "internalType": "uint256", "name": "providerFeeAmount", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" }, { "internalType": "uint256", "name": "validUntil", "type": "uint256" }, { "internalType": "bytes", "name": "providerData", "type": "bytes" } ], "internalType": "struct ERC20Template.providerFee", "name": "_providerFee", "type": "tuple" } ], "name": "reuseOrder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_value", "type": "bytes" } ], "name": "setData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newPaymentCollector", "type": "address" } ], "name": "setPaymentCollector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_publishMarketFeeAddress", "type": "address" }, { "internalType": "address", "name": "_publishMarketFeeToken", "type": "address" }, { "internalType": "uint256", "name": "_publishMarketFeeAmount", "type": "uint256" } ], "name": "setPublishingMarketFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "consumer", "type": "address" }, { "internalType": "uint256", "name": "serviceIndex", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "providerFeeAddress", "type": "address" }, { "internalType": "address", "name": "providerFeeToken", "type": "address" }, { "internalType": "uint256", "name": "providerFeeAmount", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" }, { "internalType": "uint256", "name": "validUntil", "type": "uint256" }, { "internalType": "bytes", "name": "providerData", "type": "bytes" } ], "internalType": "struct ERC20Template.providerFee", "name": "_providerFee", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "consumeMarketFeeAddress", "type": "address" }, { "internalType": "address", "name": "consumeMarketFeeToken", "type": "address" }, { "internalType": "uint256", "name": "consumeMarketFeeAmount", "type": "uint256" } ], "internalType": "struct ERC20Template.consumeMarketFee", "name": "_consumeMarketFee", "type": "tuple" } ], "name": "startOrder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawETH", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052600b805460ff191690553480156200001b57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006a916003916200008e565b508051620000809060049060208401906200008e565b505060016007555062000171565b8280546200009c9062000134565b90600052602060002090601f016020900481019282620000c057600085556200010b565b82601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b600181811c908216806200014957607f821691505b602082108114156200016b57634e487b7160e01b600052602260045260246000fd5b50919050565b615d3180620001816000396000f3fe6080604052600436106102c65760003560e01c80635d1ca6311161017e578063a457c2d7116100d3578063d505accf1161008f578063e487c2e81161006c578063e487c2e81461097d578063ec342ad014610992578063ef867ff4146109ae578063f887ea40146109ce57005b8063d505accf14610935578063dd62ed3e14610955578063e086e5ec1461097557005b8063a457c2d71461085c578063a9059cbb1461087c578063aa271e1a1461089c578063aa492ef9146108d5578063ab62f0e1146108f5578063b3998be01461091557005b80637ecebe001161013a5780638b96412b116101175780638b96412b146107e757806395d89b411461080757806396fb3eaf1461081c578063983b2d561461083c57005b80637ecebe001461078557806382c03da5146107b257806389208f0f146107c757005b80635d1ca631146106c4578063673a2a1f146106d857806370a08231146106ed57806379cc67901461072357806379d9d7f3146107435780637dda231e1461076357005b8063355274ea1161023457806340c10f19116101f05780634f189cb2116101cd5780634f189cb21461064f57806357a3a31b1461066457806357ad5ff6146106845780635bfe4da0146106a457005b806340c10f19146105ed57806342966c681461060d57806347ac7d551461062d57005b8063355274ea1461052e578063361fef49146105435780633644e51514610563578063392e53cd146105795780633950935114610591578063397b3743146105b157005b8063191c918a11610283578063191c918a1461045857806323b872dd1461047857806325b00243146104985780633092afd5146104b857806330adf81f146104d8578063313ce5671461050c57005b80627ffb78146102cf57806301e882081461030b57806306fdde031461035b578063095ea7b31461037d578063160a7925146103ad57806318160ddd1461043957005b366102cd57005b005b3480156102db57600080fd5b50600b5461010090046001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561031757600080fd5b50610344610326366004614cc7565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610302565b34801561036757600080fd5b506103706109ee565b6040516103029190614d10565b34801561038957600080fd5b5061039d610398366004614d43565b610a80565b6040519015158152602001610302565b3480156103b957600080fd5b5061041a6103c8366004614cc7565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b6040805182511515815260209283015115159281019290925201610302565b34801561044557600080fd5b506002545b604051908152602001610302565b34801561046457600080fd5b506102cd610473366004614d7d565b610a9a565b34801561048457600080fd5b5061039d610493366004614ddc565b610ce0565b3480156104a457600080fd5b506102cd6104b3366004614cc7565b610d06565b3480156104c457600080fd5b506102cd6104d3366004614cc7565b610e25565b3480156104e457600080fd5b5061044a7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561051857600080fd5b5060125b60405160ff9091168152602001610302565b34801561053a57600080fd5b50600a5461044a565b34801561054f57600080fd5b506102cd61055e366004614e36565b610f41565b34801561056f57600080fd5b5061044a60105481565b34801561058557600080fd5b50600b5460ff1661039d565b34801561059d57600080fd5b5061039d6105ac366004614d43565b610fa4565b3480156105bd57600080fd5b50600d54600e54600f54604080516001600160a01b03948516815293909216602084015290820152606001610302565b3480156105f957600080fd5b506102cd610608366004614d43565b610fc6565b34801561061957600080fd5b506102cd610628366004614e7c565b611093565b34801561063957600080fd5b5061064261109d565b6040516103029190614ed9565b34801561065b57600080fd5b506102cd6110fe565b34801561067057600080fd5b506102cd61067f366004614cc7565b6111d9565b34801561069057600080fd5b506102cd61069f366004614ddc565b6113a0565b3480156106b057600080fd5b506102ee6106bf366004615024565b611559565b3480156106d057600080fd5b50600161051c565b3480156106e457600080fd5b506106426119bc565b3480156106f957600080fd5b5061044a610708366004614cc7565b6001600160a01b031660009081526020819052604090205490565b34801561072f57600080fd5b506102cd61073e366004614d43565b611a1c565b34801561074f57600080fd5b506102cd61075e3660046150ab565b611a31565b34801561076f57600080fd5b50610778611e4d565b604051610302919061511e565b34801561079157600080fd5b5061044a6107a0366004614cc7565b60116020526000908152604090205481565b3480156107be57600080fd5b506102cd611ec2565b3480156107d357600080fd5b506102cd6107e23660046151be565b611f21565b3480156107f357600080fd5b5061044a61080236600461529b565b61220e565b34801561081357600080fd5b50610370612502565b34801561082857600080fd5b5061039d610837366004614cc7565b612511565b34801561084857600080fd5b506102cd610857366004614cc7565b61258f565b34801561086857600080fd5b5061039d610877366004614d43565b6126ab565b34801561088857600080fd5b5061039d610897366004614d43565b612731565b3480156108a857600080fd5b5061039d6108b7366004614cc7565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156108e157600080fd5b506102cd6108f0366004614cc7565b61273f565b34801561090157600080fd5b506102cd610910366004615306565b61285b565b34801561092157600080fd5b5061039d61093036600461538b565b612a16565b34801561094157600080fd5b506102cd61095036600461548c565b612b49565b34801561096157600080fd5b5061044a6109703660046154fa565b612d5b565b6102cd612d86565b34801561098957600080fd5b506102ee612dc6565b34801561099e57600080fd5b5061044a670de0b6b3a764000081565b3480156109ba57600080fd5b506102ee6109c9366004614e7c565b612e5f565b3480156109da57600080fd5b506012546102ee906001600160a01b031681565b6060600880546109fd90615533565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2990615533565b8015610a765780601f10610a4b57610100808354040283529160200191610a76565b820191906000526020600020905b815481529060010190602001808311610a5957829003601f168201915b5050505050905090565b600033610a8e818585612e89565b60019150505b92915050565b600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190615568565b6020015180610b915750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8691906155ec565b6001600160a01b0316145b610bb65760405162461bcd60e51b8152600401610bad90615609565b60405180910390fd5b610bbe612fae565b8115610bcd57610bcd85613008565b601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b0387169081179091556040519081527fa31ffd41531537eb31bfd827a3f5372b5f62bf4dd8579e5354b280dc58490e709060200160405180910390a1601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b50505050610cd96001600755565b5050505050565b600033610cee8582856130df565b610cf9858585613153565b60019150505b9392505050565b600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190615568565b6020015180610dfd5750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015610dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df291906155ec565b6001600160a01b0316145b610e195760405162461bcd60e51b8152600401610bad90615609565b610e22816132f7565b50565b600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa158015610e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e959190615568565b6020015180610f1c5750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1191906155ec565b6001600160a01b0316145b610f385760405162461bcd60e51b8152600401610bad90615609565b610e2281613369565b610f49612fae565b60408051838152336020820152428183015243606082015290517f526e31449ea46e2aecf9b480c8d7dfa191348ef74ffdf75b445a6ab726daa6ff9181900360800190a1610f96816133c9565b610fa06001600755565b5050565b600033610a8e818585610fb78383612d5b565b610fc19190615654565b612e89565b3360009081526005602052604090205460ff166110255760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610bad565b600a5461103b8261103560025490565b906137db565b11156110895760405162461bcd60e51b815260206004820152601f60248201527f44617461746f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610bad565b610fa082826137e7565b610e2233826138a6565b60606015805480602002602001604051908101604052809291908181526020018280548015610a7657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110d7575050505050905090565b600b546040516331a9108f60e11b8152600160048201526101009091046001600160a01b031690636352211e90602401602060405180830381865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f91906155ec565b6001600160a01b0316336001600160a01b0316146111cf5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610bad565b6111d76139d5565b565b33600090815260056020526040902054610100900460ff168061126c5750600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190615568565b602001515b806112ef5750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa1580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e491906155ec565b6001600160a01b0316145b61134f5760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610bad565b61135881613ea3565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b0316331461140d5760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610bad565b6001600160a01b0383166114745760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610bad565b6001600160a01b0382166114d95760405162461bcd60e51b815260206004820152602660248201527f496e76616c6964205f7075626c6973684d61726b6574466565546f6b656e206160448201526564647265737360d01b6064820152608401610bad565b600d80546001600160a01b038581166001600160a01b03199283168117909355600e8054918616919092168117909155600f839055604080513381526020810193909352820152606081018290527f02ab4b3fc023109c2d0da394bda239166c833f63c42b71b67ed4b836dca0ddfe9060800160405180910390a1505050565b600b5460405163160a792560e01b815233600482015260009161010090046001600160a01b03169063160a792590602401608060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb9190615568565b60200151806116525750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015611623573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164791906155ec565b6001600160a01b0316145b61166e5760405162461bcd60e51b8152600401610bad90615609565b611676612fae565b600254156116d25760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610bad565b6116f5826000815181106116e8576116e861566c565b6020026020010151613008565b601260009054906101000a90046001600160a01b03166001600160a01b031663510f34656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615682565b8460038151811061177f5761177f61566c565b602002602001015110156118155760405162461bcd60e51b815260206004820152605160248201527f455243323054656d706c6174653a2056657374696e6720706572696f6420746f60448201527f6f206c6f772e2053656520466163746f7279526f757465722e6d696e56657374606482015270696e67506572696f64496e426c6f636b7360781b608482015260a401610bad565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061184d5761184d61566c565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc635906118959084908990899089906004016156cb565b6020604051808303816000875af11580156118b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d891906155ec565b6013805460018101825560009182527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b0319166001600160a01b03841617905584519193507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b96791849186916119595761195961566c565b6020026020010151856001815181106119745761197461566c565b60200260200101516040516119a9939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a150610cff6001600755565b60606013805480602002602001604051908101604052809291908181526020018280548015610a76576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110d7575050505050905090565b611a278233836130df565b610fa082826138a6565b611a39612fae565b33600090815260208190526040902054670de0b6b3a764000090811115611aae5760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f7567682064617461746f6b656e7320746f207374617274204f604482015263393232b960e11b6064820152608401610bad565b600d5460408051338152602081018490529081018690524260608201524360808201526001600160a01b03918216918716907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000600f54118015611b295750600e546001600160a01b031615155b8015611b3f5750600d546001600160a01b031615155b15611bb457600e54600d54600f54611b67926001600160a01b03908116923392911690613ec5565b600e54600d54600f546040519081526001600160a01b0392831692909116907f4049a448ac6f0284a98d2cb9199e73605944ea5bec901a037f88c84703de82b29060200160405180910390a35b60008260400135118015611be157506000611bd56040840160208501614cc7565b6001600160a01b031614155b8015611c0357506000611bf76020840184614cc7565b6001600160a01b031614155b15611ca057611c33611c1b6040840160208501614cc7565b33611c296020860186614cc7565b8560400135613ec5565b611c436040830160208401614cc7565b6001600160a01b0316611c596020840184614cc7565b6001600160a01b03167f6d11837f46cc09b011cf4aae09fcade046c020aac088090ae4f77ff67b7079728460400135604051611c9791815260200190565b60405180910390a35b611ca9836133c9565b60125460408051637d28354d60e01b815290516000926001600160a01b031691637d28354d9160048083019260209291908290030181865afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190615682565b9050611d2e611d24612dc6565b610897848461400c565b611d7a5760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610bad565b60125460408051631a81876d60e01b81529051611def926001600160a01b031691631a81876d9160048083019260209291908290030181865afa158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de991906155ec565b82612731565b611e3b5760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f2073656e6420445420746f204f504300000000000000006044820152606401610bad565b5050611e476001600755565b50505050565b60606014805480602002602001604051908101604052809291908181526020016000905b82821015611eb9576000848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101611e71565b50505050905090565b600b5461010090046001600160a01b031633146111cf5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610bad565b336001600160a01b0382161415611f7a5760405162461bcd60e51b815260206004820152601f60248201527f50726f76696465722063616e6e6f742062652074686520636f6e73756d6572006044820152606401610bad565b60006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a33320000000081525090506000818c8c8c604051602001611fcc93929190615736565b60405160208183030381529060405280519060200120604051602001611ff3929190615750565b604051602081830303815290604052805190602001209050336001600160a01b0316612055828b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061401892505050565b6001600160a01b0316146120ab5760405162461bcd60e51b815260206004820152601f60248201527f50726f7669646572207369676e617475726520636865636b206661696c6564006044820152606401610bad565b60008288886040516020016120c1929190615772565b604051602081830303815290604052805190602001206040516020016120e8929190615750565b604051602081830303815290604052805190602001209050836001600160a01b031661214a8288888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061401892505050565b6001600160a01b0316146121a05760405162461bcd60e51b815260206004820152601f60248201527f436f6e73756d6572207369676e617475726520636865636b206661696c6564006044820152606401610bad565b836001600160a01b0316336001600160a01b03167fc9a10280e9c735c63092fa5431e6acb3ed342e08b69a083e5e676994eb7070f98f8f8f8f8f8f8f8f8f42436040516121f79b9a999897969594939291906157ab565b60405180910390a350505050505050505050505050565b600b5460405163160a792560e01b815233600482015260009161010090046001600160a01b03169063160a792590602401608060405180830381865afa15801561225c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122809190615568565b60200151806123075750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa1580156122d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fc91906155ec565b6001600160a01b0316145b6123235760405162461bcd60e51b8152600401610bad90615609565b61232b612fae565b6000826004815181106123405761234061566c565b602002602001015111156123575761235784613008565b601254604051638244937560e01b81526001600160a01b039091169063824493759061238b9087908790879060040161581d565b6020604051808303816000875af11580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ce9190615682565b9050826000815181106123e3576123e361566c565b60200260200101516001600160a01b0316836001815181106124075761240761566c565b60200260200101516001600160a01b03167fb3fac3ae95956dbac74e63ba8dac94081832395c8788e3049c900a7732f34805838760405161245b9291909182526001600160a01b0316602082015260400190565b60405180910390a3604080518082019091526001600160a01b03858116825260208201838152601480546001808201835560009290925293517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec600290950294850180546001600160a01b0319169190941617909255517fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed90920191909155600755610cff565b6060600980546109fd90615533565b600b5460405163160a792560e01b81526001600160a01b0383811660048301526000926101009004169063160a792590602401608060405180830381865afa158015612561573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125859190615568565b6020015192915050565b600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff9190615568565b60200151806126865750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267b91906155ec565b6001600160a01b0316145b6126a25760405162461bcd60e51b8152600401610bad90615609565b610e2281613008565b600033816126b98286612d5b565b9050838110156127195760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bad565b6127268286868403612e89565b506001949350505050565b600033610a8e818585613153565b600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127af9190615568565b60200151806128365750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015612807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282b91906155ec565b6001600160a01b0316145b6128525760405162461bcd60e51b8152600401610bad90615609565b610e22816140f0565b600b5460405163160a792560e01b81523360048201526101009091046001600160a01b03169063160a792590602401608060405180830381865afa1580156128a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cb9190615568565b60200151806129525750600b546040516331a9108f60e11b815260016004820152339161010090046001600160a01b031690636352211e90602401602060405180830381865afa158015612923573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294791906155ec565b6001600160a01b0316145b61296e5760405162461bcd60e51b8152600401610bad90615609565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051808303601f19018152908290528051602090910120600b546301caf8fd60e31b835290925061010090046001600160a01b031690630e57c7e8906129df9084908790879060040161585d565b600060405180830381600087803b1580156129f957600080fd5b505af1158015612a0d573d6000803e3d6000fd5b50505050505050565b600b5460009060ff1615612a865760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610bad565b612b3a612a938b8d6158d7565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250612b3592508991508a905061595e565b6141d1565b9b9a5050505050505050505050565b43841015612b8c5760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610bad565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087612bdf836159d9565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001612c5892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612cc3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612cf95750886001600160a01b0316816001600160a01b0316145b612d455760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610bad565b612d50898989612e89565b505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b612d8e612dc6565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610e22573d6000803e3d6000fd5b600c546000906001600160a01b0316612e4f57600b546040516331a9108f60e11b8152600160048201526101009091046001600160a01b031690636352211e90602401602060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4a91906155ec565b905090565b50600c546001600160a01b031690565b60068181548110612e6f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038316612eeb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bad565b6001600160a01b038216612f4c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bad565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600260075414156130015760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bad565b6002600755565b6001600160a01b03811615610e22576001600160a01b0381166000908152600560205260409020805460ff16156130815760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610bad565b805460ff1916600117815561309582614629565b6040805142815243602082015233916001600160a01b038516917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b60006130eb8484612d5b565b90506000198114611e4757818110156131465760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bad565b611e478484848403612e89565b6001600160a01b0383166131b75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bad565b6001600160a01b0382166132195760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bad565b6001600160a01b038316600090815260208190526040902054818110156132915760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bad565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611e47565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906133589042904390918252602082015260400190565b60405180910390a3610fa0826146e0565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906133589042904390918252602082015260400190565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260008161340d60e08501856159f4565b61341a6020870187614cc7565b61342a6040880160208901614cc7565b87604001358860c0013560405160200161344996959493929190615a3a565b60405160208183030381529060405280519060200120604051602001613470929190615750565b60408051601f1981840301815291905280516020909101209050600060018261349f6080870160608801615a78565b6040805160008152602081018083529390935260ff90911690820152608080870135606083015260a08088013591830191909152016020604051602081039080840390855afa1580156134f6573d6000803e3d6000fd5b5050604051601f190151915061351190506020850185614cc7565b6001600160a01b0316816001600160a01b0316146135685760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610bad565b6135786040850160208601614cc7565b6001600160a01b031661358e6020860186614cc7565b6001600160a01b03167ff8ed11cdaaf10eca2b6c941fb802cb8682afe86cac1eb93f70d0780fa062c54460408701356135ca60e08901896159f4565b6135da60808b0160608c01615a78565b8a608001358b60a001358c60c001356040516135fc9796959493929190615a93565b60405180910390a360008460400135118015613631575060006136256040860160208701614cc7565b6001600160a01b031614155b8015613653575060006136476020860186614cc7565b6001600160a01b031614155b15611e475760125460408051636c45e88160e01b815290516000926001600160a01b031691636c45e8819160048083019260209291908290030181865afa1580156136a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c69190615682565b9050600081156136f3576136f0670de0b6b3a76400006136ea60408901358561482e565b9061483a565b90505b600061370360408801358361400c565b90506137246137186040890160208a01614cc7565b33308a60400135613ec5565b6137556137346020890189614cc7565b8261374560408b0160208c01614cc7565b6001600160a01b03169190614846565b8115612a0d5760125460408051631a81876d60e01b81529051612a0d926001600160a01b031691631a81876d9160048083019260209291908290030181865afa1580156137a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ca91906155ec565b8361374560408b0160208c01614cc7565b6000610cff8284615654565b6001600160a01b03821661383d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bad565b806002600082825461384f9190615654565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166139065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bad565b6001600160a01b0382166000908152602081905260409020548181101561397a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bad565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612fa1565b505050565b6015546014546000916139e791615654565b9050600080826001600160401b03811115613a0457613a04614eec565b604051908082528060200260200182016040528015613a2d578160200160208202803683370190505b50905060005b601454811015613d1357600060148281548110613a5257613a5261566c565b60009182526020822060029091020154601480546001600160a01b039092169350829182918591634c87087d919088908110613a9057613a9061566c565b9060005260206000209060020201600101546040518263ffffffff1660e01b8152600401613ac091815260200190565b61018060405180830381865afa158015613ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b029190615ad6565b9b509b509b505050505050505050506000821115613ba857836001600160a01b031663f32f947660148781548110613b3c57613b3c61566c565b906000526020600020906002020160010154846040518363ffffffff1660e01b8152600401613b75929190918252602082015260400190565b600060405180830381600087803b158015613b8f57600080fd5b505af1158015613ba3573d6000803e3d6000fd5b505050505b8215613c3c57836001600160a01b031663c612e48a60148781548110613bd057613bd061566c565b906000526020600020906002020160010154856040518363ffffffff1660e01b8152600401613c09929190918252602082015260400190565b600060405180830381600087803b158015613c2357600080fd5b505af1158015613c37573d6000803e3d6000fd5b505050505b613c7f60148681548110613c5257613c5261566c565b600091825260208083206002909202909101546001600160a01b0316825260059052604090205460ff1690565b8015613c8d57506001811515145b15613cfc5760148581548110613ca557613ca561566c565b600091825260209091206002909102015486516001600160a01b0390911690879089908110613cd657613cd661566c565b6001600160a01b039092166020928302919091019091015286613cf8816159d9565b9750505b505050508080613d0b906159d9565b915050613a33565b5060005b601554811015613e585760158181548110613d3457613d3461566c565b60009182526020909120015460405163f9bfaa7d60e01b81523060048201526001600160a01b039091169063f9bfaa7d90602401600060405180830381600087803b158015613d8257600080fd5b505af1158015613d96573d6000803e3d6000fd5b50505050613dd860158281548110613db057613db061566c565b60009182526020808320909101546001600160a01b0316825260059052604090205460ff1690565b15613e465760158181548110613df057613df061566c565b9060005260206000200160009054906101000a90046001600160a01b0316828481518110613e2057613e2061566c565b6001600160a01b039092166020928302919091019091015282613e42816159d9565b9350505b80613e50816159d9565b915050613d17565b613e606148a9565b50600c80546001600160a01b031916905560005b82811015611e4757613e918282815181106116e8576116e861566c565b80613e9b816159d9565b915050613e74565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908616906370a0823190602401602060405180830381865afa158015613f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f339190615682565b9050613f4a6001600160a01b038616858585614958565b613f5481836137db565b6040516370a0823160e01b81526001600160a01b0385811660048301528716906370a0823190602401602060405180830381865afa158015613f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fbe9190615682565b1015610cd95760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616d6f756e7420697320746f6f206c6f770000000000006044820152606401610bad565b6000610cff8284615b93565b60008060008084516041146140335760009350505050610a94565b50505060208201516040830151604184015160ff16601b81101561405f5761405c601b82615baa565b90505b8060ff16601b1415801561407757508060ff16601c14155b156140885760009350505050610a94565b60408051600081526020810180835288905260ff831691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa1580156140db573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6001600160a01b03811615610e22576001600160a01b03811660009081526005602052604090208054610100900460ff16156141795760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610bad565b805461ff00191661010017815561418f82614629565b6040805142815243602082015233916001600160a01b038516917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016130d3565b600080846000815181106141e7576141e761566c565b60200260200101519050846001815181106142045761420461566c565b6020908102919091010151601280546001600160a01b0319166001600160a01b03928316179055811661428e5760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610bad565b6012546001600160a01b03166142fa5760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a20496e76616c696420726f757465722c207a60448201526a65726f206164647265737360a81b6064820152608401610bad565b600019600a55865187906000906143135761431361566c565b602002602001015160089080519060200190614330929190614bef565b50866001815181106143445761434461566c565b602002602001015160099080519060200190614361929190614bef565b50600b805460ff196001600160a01b03841661010002166001600160a81b031990911617600117905585516143a19087906000906116e8576116e861566c565b60006001600160a01b0316866001815181106143bf576143bf61566c565b60200260200101516001600160a01b031614614469576143f8866001815181106143eb576143eb61566c565b6020026020010151613ea3565b8560018151811061440b5761440b61566c565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051614460929190918252602082015260400190565b60405180910390a35b8560028151811061447c5761447c61566c565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550856003815181106144bd576144bd61566c565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550836001815181106144fe576144fe61566c565b602090810291909101810151600f819055600d54600e54604080513381526001600160a01b039384169581019590955291169083015260608201527f02ab4b3fc023109c2d0da394bda239166c833f63c42b71b67ed4b836dca0ddfe9060800160405180910390a160405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9061459990600890615bcf565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600b5460ff169695505050505050565b60005b60065481101561468557816001600160a01b0316600682815481106146535761465361566c565b6000918252602090912001546001600160a01b0316141561467357614685565b8061467d816159d9565b91505061462c565b600654811415610fa057600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091161790555050565b6001600160a01b0381166000908152600560205260409020805460ff1615801561471157508054610100900460ff16155b15610fa05760005b60065481101561477257826001600160a01b0316600682815481106147405761474061566c565b6000918252602090912001546001600160a01b0316141561476057614772565b8061476a816159d9565b915050614719565b6006548110156139d0576006805461478c90600190615b93565b8154811061479c5761479c61566c565b600091825260209091200154600680546001600160a01b0390921691839081106147c8576147c861566c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600680548061480757614807615c6b565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b6000610cff8284615c81565b6000610cff8284615ca0565b6040516001600160a01b0383166024820152604481018290526139d090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614990565b60005b60065481101561490f57600060056000600684815481106148cf576148cf61566c565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080614907816159d9565b9150506148ac565b5061491c60066000614c73565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6040516001600160a01b0380851660248301528316604482015260648101829052611e479085906323b872dd60e01b90608401614872565b60006149e5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a629092919063ffffffff16565b8051909150156139d05780806020019051810190614a039190615cc2565b6139d05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610bad565b6060614a718484600085614a79565b949350505050565b606082471015614ada5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610bad565b600080866001600160a01b03168587604051614af69190615cdf565b60006040518083038185875af1925050503d8060008114614b33576040519150601f19603f3d011682016040523d82523d6000602084013e614b38565b606091505b5091509150614b4987838387614b54565b979650505050505050565b60608315614bc0578251614bb9576001600160a01b0385163b614bb95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bad565b5081614a71565b614a718383815115614bd55781518083602001fd5b8060405162461bcd60e51b8152600401610bad9190614d10565b828054614bfb90615533565b90600052602060002090601f016020900481019282614c1d5760008555614c63565b82601f10614c3657805160ff1916838001178555614c63565b82800160010185558215614c63579182015b82811115614c63578251825591602001919060010190614c48565b50614c6f929150614c8d565b5090565b5080546000825590600052602060002090810190610e2291905b5b80821115614c6f5760008155600101614c8e565b6001600160a01b0381168114610e2257600080fd5b8035614cc281614ca2565b919050565b600060208284031215614cd957600080fd5b8135610cff81614ca2565b60005b83811015614cff578181015183820152602001614ce7565b83811115611e475750506000910152565b6020815260008251806020840152614d2f816040850160208701614ce4565b601f01601f19169190910160400192915050565b60008060408385031215614d5657600080fd5b8235614d6181614ca2565b946020939093013593505050565b8015158114610e2257600080fd5b600080600080600060a08688031215614d9557600080fd5b8535614da081614ca2565b945060208601359350604086013592506060860135614dbe81614d6f565b91506080860135614dce81614ca2565b809150509295509295909350565b600080600060608486031215614df157600080fd5b8335614dfc81614ca2565b92506020840135614e0c81614ca2565b929592945050506040919091013590565b60006101008284031215614e3057600080fd5b50919050565b60008060408385031215614e4957600080fd5b8235915060208301356001600160401b03811115614e6657600080fd5b614e7285828601614e1d565b9150509250929050565b600060208284031215614e8e57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015614ece5781516001600160a01b031687529582019590820190600101614ea9565b509495945050505050565b602081526000610cff6020830184614e95565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614f2a57614f2a614eec565b604052919050565b60006001600160401b03821115614f4b57614f4b614eec565b5060051b60200190565b600082601f830112614f6657600080fd5b81356020614f7b614f7683614f32565b614f02565b82815260059290921b84018101918181019086841115614f9a57600080fd5b8286015b84811015614fb55780358352918301918301614f9e565b509695505050505050565b600082601f830112614fd157600080fd5b81356020614fe1614f7683614f32565b82815260059290921b8401810191818101908684111561500057600080fd5b8286015b84811015614fb557803561501781614ca2565b8352918301918301615004565b60008060006060848603121561503957600080fd5b83356001600160401b038082111561505057600080fd5b61505c87838801614f55565b9450602086013591508082111561507257600080fd5b61507e87838801614f55565b9350604086013591508082111561509457600080fd5b506150a186828701614fc0565b9150509250925092565b60008060008084860360c08112156150c257600080fd5b85356150cd81614ca2565b94506020860135935060408601356001600160401b038111156150ef57600080fd5b6150fb88828901614e1d565b9350506060605f198201121561511057600080fd5b509295919450926060019150565b602080825282518282018190526000919060409081850190868401855b8281101561516957815180516001600160a01b0316855286015186850152928401929085019060010161513b565b5091979650505050505050565b60008083601f84011261518857600080fd5b5081356001600160401b0381111561519f57600080fd5b6020830191508360208285010111156151b757600080fd5b9250929050565b60008060008060008060008060008060c08b8d0312156151dd57600080fd5b8a35995060208b01356001600160401b03808211156151fb57600080fd5b6152078e838f01615176565b909b50995060408d013591508082111561522057600080fd5b61522c8e838f01615176565b909950975060608d013591508082111561524557600080fd5b6152518e838f01615176565b909750955060808d013591508082111561526a57600080fd5b506152778d828e01615176565b909450925061528a905060a08c01614cb7565b90509295989b9194979a5092959850565b6000806000606084860312156152b057600080fd5b83356152bb81614ca2565b925060208401356001600160401b03808211156152d757600080fd5b6152e387838801614fc0565b935060408601359150808211156152f957600080fd5b506150a186828701614f55565b6000806020838503121561531957600080fd5b82356001600160401b0381111561532f57600080fd5b61533b85828601615176565b90969095509350505050565b60008083601f84011261535957600080fd5b5081356001600160401b0381111561537057600080fd5b6020830191508360208260051b85010111156151b757600080fd5b60008060008060008060008060008060a08b8d0312156153aa57600080fd5b8a356001600160401b03808211156153c157600080fd5b6153cd8e838f01615347565b909c509a5060208d01359150808211156153e657600080fd5b6153f28e838f01615347565b909a50985060408d013591508082111561540b57600080fd5b6154178e838f01615347565b909850965060608d013591508082111561543057600080fd5b61543c8e838f01615347565b909650945060808d013591508082111561545557600080fd5b506154628d828e01615347565b915080935050809150509295989b9194979a5092959850565b803560ff81168114614cc257600080fd5b600080600080600080600060e0888a0312156154a757600080fd5b87356154b281614ca2565b965060208801356154c281614ca2565b955060408801359450606088013593506154de6080890161547b565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561550d57600080fd5b823561551881614ca2565b9150602083013561552881614ca2565b809150509250929050565b600181811c9082168061554757607f821691505b60208210811415614e3057634e487b7160e01b600052602260045260246000fd5b60006080828403121561557a57600080fd5b604051608081018181106001600160401b038211171561559c5761559c614eec565b60405282516155aa81614d6f565b815260208301516155ba81614d6f565b602082015260408301516155cd81614d6f565b604082015260608301516155e081614d6f565b60608201529392505050565b6000602082840312156155fe57600080fd5b8151610cff81614ca2565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156156675761566761563e565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561569457600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614ece578151875295820195908201906001016156af565b60008186825b60028110156156f95781516001600160a01b03168352602092830192909101906001016156d1565b50505060a0604083015261571060a083018661569b565b8281036060840152615722818661569b565b90508281036080840152614b498185614e95565b838152818360208301376000910160200190815292915050565b60008351615762818460208801614ce4565b9190910191825250602001919050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8b815260e0602082015260006157c560e083018c8e615782565b82810360408401526157d8818b8d615782565b905082810360608401526157ed81898b615782565b90508281036080840152615802818789615782565b60a0840195909552505060c001529998505050505050505050565b6001600160a01b038416815260606020820181905260009061584190830185614e95565b8281036040840152615853818561569b565b9695505050505050565b838152604060208201526000615877604083018486615782565b95945050505050565b60006001600160401b0383111561589957615899614eec565b6158ac601f8401601f1916602001614f02565b90508281528383830111156158c057600080fd5b828260208301376000602084830101529392505050565b60006158e5614f7684614f32565b80848252602080830192508560051b85013681111561590357600080fd5b855b818110156159525780356001600160401b038111156159245760008081fd5b870136601f8201126159365760008081fd5b615944368235868401615880565b865250938201938201615905565b50919695505050505050565b600061596c614f7684614f32565b80848252602080830192508560051b85013681111561598a57600080fd5b855b818110156159525780356001600160401b038111156159ab5760008081fd5b870136601f8201126159bd5760008081fd5b6159cb368235868401615880565b86525093820193820161598c565b60006000198214156159ed576159ed61563e565b5060010190565b6000808335601e19843603018112615a0b57600080fd5b8301803591506001600160401b03821115615a2557600080fd5b6020019150368190038213156151b757600080fd5b858782376bffffffffffffffffffffffff19606095861b8116969091019586529290931b909116601484015260288301526048820152606801919050565b600060208284031215615a8a57600080fd5b610cff8261547b565b87815260c060208201526000615aad60c08301888a615782565b905060ff861660408301528460608301528360808301528260a083015298975050505050505050565b6000806000806000806000806000806000806101808d8f031215615af957600080fd5b8c51615b0481614ca2565b60208e0151909c50615b1581614ca2565b60408e015160608f0151919c509a50615b2d81614ca2565b8099505060808d0151975060a08d0151965060c08d0151615b4d81614d6f565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151615b7f81614d6f565b809150509295989b509295989b509295989b565b600082821015615ba557615ba561563e565b500390565b600060ff821660ff84168060ff03821115615bc757615bc761563e565b019392505050565b600080835481600182811c915080831680615beb57607f831692505b6020808410821415615c0b57634e487b7160e01b86526022600452602486fd5b818015615c1f5760018114615c3057615c5d565b60ff19861689528489019650615c5d565b60008a81526020902060005b86811015615c555781548b820152908501908301615c3c565b505084890196505b509498975050505050505050565b634e487b7160e01b600052603160045260246000fd5b6000816000190483118215151615615c9b57615c9b61563e565b500290565b600082615cbd57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615cd457600080fd5b8151610cff81614d6f565b60008251615cf1818460208701614ce4565b919091019291505056fea2646970667358221220d59feaca1bfe4b268a78729f72d260112244f0511de97fa2021396e6b9c0631464736f6c634300080c0033