ocean-subgraph/abis/ERC20TemplateEnterprise.json

1352 lines
100 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20TemplateEnterprise",
"sourceName": "contracts/templates/ERC20TemplateEnterprise.sol",
"abi": [
{
"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": "consumeFeeAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "consumeFeeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "consumeFeeAmount",
"type": "uint256"
}
],
"name": "ConsumeMarketFees",
"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": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "owner",
"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": "consumer",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "payer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "serviceId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "publishMarketAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "consumeFeeMarketAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "OrderStarted",
"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": "PublishMarketFees",
"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"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "BASE_COMMUNITY_FEE_PERCENTAGE",
"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": [
{
"components": [
{
"internalType": "address",
"name": "consumer",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "serviceId",
"type": "uint256"
},
{
"internalType": "address",
"name": "consumeFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "consumeFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "consumeFeeAmount",
"type": "uint256"
}
],
"internalType": "struct ERC20TemplateEnterprise.OrderParams",
"name": "_orderParams",
"type": "tuple"
},
{
"internalType": "address",
"name": "dispenserContract",
"type": "address"
}
],
"name": "buyFromDispenserAndOrder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "consumer",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "serviceId",
"type": "uint256"
},
{
"internalType": "address",
"name": "consumeFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "consumeFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "consumeFeeAmount",
"type": "uint256"
}
],
"internalType": "struct ERC20TemplateEnterprise.OrderParams",
"name": "_orderParams",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "exchangeContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "maxBaseTokenAmount",
"type": "uint256"
}
],
"internalType": "struct ERC20TemplateEnterprise.FreParams",
"name": "_freParams",
"type": "tuple"
}
],
"name": "buyFromFreAndOrder",
"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"
}
],
"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": [],
"name": "getERC721Address",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"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": [],
"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": [],
"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": "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": [],
"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": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "serviceId",
"type": "uint256"
},
{
"internalType": "address",
"name": "consumeFeeAddress",
"type": "address"
},
{
"internalType": "address",
"name": "consumeFeeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "consumeFeeAmount",
"type": "uint256"
}
],
"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": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"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"
}
],
"bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614692806200017f6000396000f3fe6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613b18565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b6040516102979190614365565b34801561031e57600080fd5b5061033261032d366004613ddd565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613b8b565b61093d565b34801561038d57600080fd5b5061026761039c366004613b18565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613b18565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004614053565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613ddd565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b0390811693169190614277565b3480156104de57600080fd5b506102676104ed366004613ddd565b610c89565b3480156104fe57600080fd5b5061026761050d36600461418c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613b18565b610e5b565b34801561055357600080fd5b50610267610562366004613b8b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613b18565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613ddd565b611059565b3480156105dd57600080fd5b506103536105ec366004613b18565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613d00565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613b18565b61132c565b34801561067457600080fd5b50610332610683366004613ddd565b6113d7565b34801561069457600080fd5b506103326106a3366004613ddd565b611470565b3480156106b457600080fd5b506103326106c3366004613b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613b18565b61147d565b34801561070d57600080fd5b5061026761071c366004613fe1565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613eba565b611683565b34801561076257600080fd5b50610267610771366004614080565b6117bd565b34801561078257600080fd5b50610267610791366004613c89565b611c43565b3480156107a257600080fd5b506103536107b1366004613b52565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461418c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613e70565b611f63565b34801561088157600080fd5b50610267610890366004613e09565b61209f565b6060600780546108a4906145a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108d0906145a1565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190614107565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb906143ba565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190614107565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb906143ba565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c84908690614444565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612e86565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612e99565b610a973382612f78565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190613b35565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e496130c6565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190614107565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81613175565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612f78565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190614107565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb906143ba565b30836003815181106111f0576111f061460d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161429b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613fc8565b905060008260048151811061129a5761129a61460d565b602002602001015111156112b1576112b184613197565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661460d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a4906145a1565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614107565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613197565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614107565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613291565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190614107565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb906143ba565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906116369084908790879060040161432f565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a764000061445c565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d614521565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614495565b61339f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613bcc565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906141a5565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f290339030908690600401614277565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613fab565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613fab565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd9836145dc565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613b35565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190614107565b6020015115156001146120055760405162461bcd60e51b81526004016109cb906143ba565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613197565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e908490614444565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f541180156125625750600e546001600160a01b031615155b80156125785750600d546001600160a01b031615155b156127d157600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd916125b29133913091600401614277565b602060405180830381600087803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126049190613fab565b61265c5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461266a90606461389e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061269690856138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190613fab565b61277a5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906127bf90856138aa565b60405190815260200160405180910390a35b6000831180156127e957506001600160a01b03841615155b80156127fd57506001600160a01b03851615155b15612a20576040516323b872dd60e01b81526001600160a01b038516906323b872dd9061283290339030908890600401614277565b602060405180830381600087803b15801561284c57600080fd5b505af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128849190613fab565b6128d05760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b6128db83606461389e565b91506001600160a01b03841663a9059cbb866128f786866138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613fab565b6129d55760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d1612a0e86866138aa565b60405190815260200160405180910390a35b600081118015612a305750600082115b8015612a495750600e546001600160a01b038581169116145b8015612a5d57506001600160a01b03841615155b15612be557600a546001600160a01b038086169163a9059cbb9116612a828486612e86565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b009190613fab565b612b585760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a3612e73565b600081118015612bff5750600e546001600160a01b031615155b15612d3157600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613fab565b612ce75760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b600082118015612d4957506001600160a01b03841615155b15612e7357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613fab565b612e2e5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b612e7c87610d5b565b5050505050505050565b6000612e928284614444565b9392505050565b6001600160a01b038216612eef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612f019190614444565b90915550506001600160a01b03821660009081526020819052604081208054839290612f2e908490614444565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612fd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b0382166000908152602081905260409020548181101561304c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b038316600090815260208190526040812083830390556002805484929061307b90849061447e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b60065481101561312c57600060056000600684815481106130ec576130ec61460d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080613124816145dc565b9150506130c9565b50613139600660006138b6565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156132015760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561330b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106133b5576133b561460d565b602002602001015190506000856001815181106133d4576133d461460d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156134565760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166134d25760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106134e5576134e561460d565b6020026020010151600014156135495760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b8460008151811061355c5761355c61460d565b60200260200101516009819055508760008151811061357d5761357d61460d565b60200260200101516007908051906020019061359a9291906138d4565b50876001815181106135ae576135ae61460d565b6020026020010151600890805190602001906135cb9291906138d4565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106135fc576135fc61460d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516136669088906000906136595761365961460d565b6020026020010151613197565b60006001600160a01b0316876001815181106136845761368461460d565b60200260200101516001600160a01b03161461372e576136bd876001815181106136b0576136b061460d565b6020026020010151613175565b866001815181106136d0576136d061460d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051613725929190918252602082015260400190565b60405180910390a35b866002815181106137415761374161460d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106137825761378261460d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106137c3576137c361460d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161380691906141db565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612e92828461445c565b6000612e92828461447e565b5080546000825590600052602060002090810190610a979190613958565b8280546138e0906145a1565b90600052602060002090601f0160209004810192826139025760008555613948565b82601f1061391b57805160ff1916838001178555613948565b82800160010185558215613948579182015b8281111561394857825182559160200191906001019061392d565b50613954929150613958565b5090565b5b808211156139545760008155600101613959565b600067ffffffffffffffff83111561398757613987614623565b61399a601f8401601f19166020016143ef565b90508281528383830111156139ae57600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126139d757600080fd5b50813567ffffffffffffffff8111156139ef57600080fd5b6020830191508360208260051b8501011115613a0a57600080fd5b9250929050565b600082601f830112613a2257600080fd5b81356020613a37613a3283614420565b6143ef565b80838252828201915082860187848660051b8901011115613a5757600080fd5b60005b85811015613a7657813584529284019290840190600101613a5a565b5090979650505050505050565b600060c08284031215613a9557600080fd5b60405160c0810181811067ffffffffffffffff82111715613ab857613ab8614623565b6040529050808235613ac981614639565b8082525060208301356020820152604083013560408201526060830135613aef81614639565b60608201526080830135613b0281614639565b608082015260a092830135920191909152919050565b600060208284031215613b2a57600080fd5b8135612e9281614639565b600060208284031215613b4757600080fd5b8151612e9281614639565b60008060408385031215613b6557600080fd5b8235613b7081614639565b91506020830135613b8081614639565b809150509250929050565b600080600060608486031215613ba057600080fd5b8335613bab81614639565b92506020840135613bbb81614639565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613bef57600080fd5b8c51613bfa81614639565b60208e0151909c50613c0b81614639565b60408e015160608f0151919c509a50613c2381614639565b8099505060808d0151975060a08d0151965060c08d0151613c438161464e565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613c758161464e565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613ca457600080fd5b8735613caf81614639565b96506020880135613cbf81614639565b95506040880135945060608801359350608088013560ff81168114613ce357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613d1557600080fd5b8335613d2081614639565b925060208481013567ffffffffffffffff80821115613d3e57600080fd5b818701915087601f830112613d5257600080fd5b8135613d60613a3282614420565b8082825285820191508585018b878560051b8801011115613d8057600080fd5b600095505b83861015613dac578035613d9881614639565b835260019590950194918601918601613d85565b50965050506040870135925080831115613dc557600080fd5b5050613dd386828701613a11565b9150509250925092565b60008060408385031215613df057600080fd5b8235613dfb81614639565b946020939093013593505050565b60008060008060008060c08789031215613e2257600080fd5b8635613e2d81614639565b955060208701359450604087013593506060870135613e4b81614639565b92506080870135613e5b81614639565b8092505060a087013590509295509295509295565b60008060008060808587031215613e8657600080fd5b8435613e9181614639565b935060208501359250604085013591506060850135613eaf8161464e565b939692955090935050565b60008060008060008060008060008060a08b8d031215613ed957600080fd5b8a3567ffffffffffffffff80821115613ef157600080fd5b613efd8e838f016139c5565b909c509a5060208d0135915080821115613f1657600080fd5b613f228e838f016139c5565b909a50985060408d0135915080821115613f3b57600080fd5b613f478e838f016139c5565b909850965060608d0135915080821115613f6057600080fd5b613f6c8e838f016139c5565b909650945060808d0135915080821115613f8557600080fd5b50613f928d828e016139c5565b915080935050809150509295989b9194979a5092959850565b600060208284031215613fbd57600080fd5b8151612e928161464e565b600060208284031215613fda57600080fd5b5051919050565b60008060208385031215613ff457600080fd5b823567ffffffffffffffff8082111561400c57600080fd5b818501915085601f83011261402057600080fd5b81358181111561402f57600080fd5b86602082850101111561404157600080fd5b60209290920196919550909350505050565b60008060e0838503121561406657600080fd5b6140708484613a83565b915060c0830135613b8081614639565b60008082840361012081121561409557600080fd5b61409f8585613a83565b9250606060bf19820112156140b357600080fd5b506040516060810181811067ffffffffffffffff821117156140d7576140d7614623565b60405260c08401356140e881614639565b815260e084013560208201526101009093013560408401525092909150565b60006080828403121561411957600080fd5b6040516080810181811067ffffffffffffffff8211171561413c5761413c614623565b604052825161414a8161464e565b8152602083015161415a8161464e565b6020820152604083015161416d8161464e565b604082015260608301516141808161464e565b60608201529392505050565b60006020828403121561419e57600080fd5b5035919050565b600080600080608085870312156141bb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c9150808316806141f757607f831692505b602080841082141561421757634e487b7160e01b86526022600452602486fd5b81801561422b576001811461423c57614269565b60ff19861689528489019650614269565b60008a81526020902060005b868110156142615781548b820152908501908301614248565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156142e95785518516835294830194918301916001016142cb565b5050858103604087015286518082529082019350915080860160005b8381101561432157815185529382019390820190600101614305565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b8181101561439257858101830151858201604001528201614376565b818111156143a4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561441857614418614623565b604052919050565b600067ffffffffffffffff82111561443a5761443a614623565b5060051b60200190565b60008219821115614457576144576145f7565b500190565b60008261447957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614490576144906145f7565b500390565b60006144a3613a3284614420565b808482526020808301925084368760051b870111156144c157600080fd5b60005b8781101561451557813567ffffffffffffffff8111156144e357600080fd5b870136601f8201126144f457600080fd5b61450236823586840161396d565b86525093820193908201906001016144c4565b50919695505050505050565b600061452f613a3284614420565b808482526020808301925084368760051b8701111561454d57600080fd5b60005b8781101561451557813567ffffffffffffffff81111561456f57600080fd5b870136601f82011261458057600080fd5b61458e36823586840161396d565b8652509382019390820190600101614550565b600181811c908216806145b557607f821691505b602082108114156145d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145f0576145f06145f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212203fefaefebd60ab2e4bb6f9429e228753bf3ba50cd41f42191f8fac1472e7d4b664736f6c63430008070033",
"deployedBytecode": "0x6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613b18565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b6040516102979190614365565b34801561031e57600080fd5b5061033261032d366004613ddd565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613b8b565b61093d565b34801561038d57600080fd5b5061026761039c366004613b18565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613b18565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004614053565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613ddd565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b0390811693169190614277565b3480156104de57600080fd5b506102676104ed366004613ddd565b610c89565b3480156104fe57600080fd5b5061026761050d36600461418c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613b18565b610e5b565b34801561055357600080fd5b50610267610562366004613b8b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613b18565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613ddd565b611059565b3480156105dd57600080fd5b506103536105ec366004613b18565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613d00565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613b18565b61132c565b34801561067457600080fd5b50610332610683366004613ddd565b6113d7565b34801561069457600080fd5b506103326106a3366004613ddd565b611470565b3480156106b457600080fd5b506103326106c3366004613b18565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613b18565b61147d565b34801561070d57600080fd5b5061026761071c366004613fe1565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613eba565b611683565b34801561076257600080fd5b50610267610771366004614080565b6117bd565b34801561078257600080fd5b50610267610791366004613c89565b611c43565b3480156107a257600080fd5b506103536107b1366004613b52565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461418c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613e70565b611f63565b34801561088157600080fd5b50610267610890366004613e09565b61209f565b6060600780546108a4906145a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108d0906145a1565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190614107565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb906143ba565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190614107565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb906143ba565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c84908690614444565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612e86565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612e99565b610a973382612f78565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190613b35565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e496130c6565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190614107565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81613175565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612f78565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190614107565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb906143ba565b30836003815181106111f0576111f061460d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161429b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613fc8565b905060008260048151811061129a5761129a61460d565b602002602001015111156112b1576112b184613197565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661460d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a4906145a1565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190614107565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613197565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614107565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb906143ba565b610a9781613291565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190614107565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb906143ba565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906116369084908790879060040161432f565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a764000061445c565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d614521565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614495565b61339f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613bcc565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195991906141a5565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f290339030908690600401614277565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613fab565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613fab565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd9836145dc565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f249190613b35565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190614107565b6020015115156001146120055760405162461bcd60e51b81526004016109cb906143ba565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613197565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e908490614444565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a46000600f541180156125625750600e546001600160a01b031615155b80156125785750600d546001600160a01b031615155b156127d157600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd916125b29133913091600401614277565b602060405180830381600087803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126049190613fab565b61265c5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461266a90606461389e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb929091169061269690856138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156126dc57600080fd5b505af11580156126f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127149190613fab565b61277a5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906127bf90856138aa565b60405190815260200160405180910390a35b6000831180156127e957506001600160a01b03841615155b80156127fd57506001600160a01b03851615155b15612a20576040516323b872dd60e01b81526001600160a01b038516906323b872dd9061283290339030908890600401614277565b602060405180830381600087803b15801561284c57600080fd5b505af1158015612860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128849190613fab565b6128d05760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b6128db83606461389e565b91506001600160a01b03841663a9059cbb866128f786866138aa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561293d57600080fd5b505af1158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613fab565b6129d55760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b6001600160a01b038085169086167f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d1612a0e86866138aa565b60405190815260200160405180910390a35b600081118015612a305750600082115b8015612a495750600e546001600160a01b038581169116145b8015612a5d57506001600160a01b03841615155b15612be557600a546001600160a01b038086169163a9059cbb9116612a828486612e86565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015612ac857600080fd5b505af1158015612adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b009190613fab565b612b585760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b600a546040518281526001600160a01b038681169216907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a3600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a3612e73565b600081118015612bff5750600e546001600160a01b031615155b15612d3157600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8c9190613fab565b612ce75760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b600082118015612d4957506001600160a01b03841615155b15612e7357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613fab565b612e2e5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b600a546040518381526001600160a01b038681169216907f504f65f39bc14c176feeffb7a6f6f46cf702ca4dcc8e6197b5a4c741dd94f3d19060200160405180910390a35b612e7c87610d5b565b5050505050505050565b6000612e928284614444565b9392505050565b6001600160a01b038216612eef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612f019190614444565b90915550506001600160a01b03821660009081526020819052604081208054839290612f2e908490614444565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612fd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b0382166000908152602081905260409020548181101561304c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b038316600090815260208190526040812083830390556002805484929061307b90849061447e565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b60065481101561312c57600060056000600684815481106130ec576130ec61460d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080613124816145dc565b9150506130c9565b50613139600660006138b6565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156132015760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561330b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106133b5576133b561460d565b602002602001015190506000856001815181106133d4576133d461460d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156134565760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166134d25760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106134e5576134e561460d565b6020026020010151600014156135495760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b8460008151811061355c5761355c61460d565b60200260200101516009819055508760008151811061357d5761357d61460d565b60200260200101516007908051906020019061359a9291906138d4565b50876001815181106135ae576135ae61460d565b6020026020010151600890805190602001906135cb9291906138d4565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106135fc576135fc61460d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516136669088906000906136595761365961460d565b6020026020010151613197565b60006001600160a01b0316876001815181106136845761368461460d565b60200260200101516001600160a01b03161461372e576136bd876001815181106136b0576136b061460d565b6020026020010151613175565b866001815181106136d0576136d061460d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc4243604051613725929190918252602082015260400190565b60405180910390a35b866002815181106137415761374161460d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106137825761378261460d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106137c3576137c361460d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600760405161380691906141db565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612e92828461445c565b6000612e92828461447e565b5080546000825590600052602060002090810190610a979190613958565b8280546138e0906145a1565b90600052602060002090601f0160209004810192826139025760008555613948565b82601f1061391b57805160ff1916838001178555613948565b82800160010185558215613948579182015b8281111561394857825182559160200191906001019061392d565b50613954929150613958565b5090565b5b808211156139545760008155600101613959565b600067ffffffffffffffff83111561398757613987614623565b61399a601f8401601f19166020016143ef565b90508281528383830111156139ae57600080fd5b828260208301376000602084830101529392505050565b60008083601f8401126139d757600080fd5b50813567ffffffffffffffff8111156139ef57600080fd5b6020830191508360208260051b8501011115613a0a57600080fd5b9250929050565b600082601f830112613a2257600080fd5b81356020613a37613a3283614420565b6143ef565b80838252828201915082860187848660051b8901011115613a5757600080fd5b60005b85811015613a7657813584529284019290840190600101613a5a565b5090979650505050505050565b600060c08284031215613a9557600080fd5b60405160c0810181811067ffffffffffffffff82111715613ab857613ab8614623565b6040529050808235613ac981614639565b8082525060208301356020820152604083013560408201526060830135613aef81614639565b60608201526080830135613b0281614639565b608082015260a092830135920191909152919050565b600060208284031215613b2a57600080fd5b8135612e9281614639565b600060208284031215613b4757600080fd5b8151612e9281614639565b60008060408385031215613b6557600080fd5b8235613b7081614639565b91506020830135613b8081614639565b809150509250929050565b600080600060608486031215613ba057600080fd5b8335613bab81614639565b92506020840135613bbb81614639565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613bef57600080fd5b8c51613bfa81614639565b60208e0151909c50613c0b81614639565b60408e015160608f0151919c509a50613c2381614639565b8099505060808d0151975060a08d0151965060c08d0151613c438161464e565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613c758161464e565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613ca457600080fd5b8735613caf81614639565b96506020880135613cbf81614639565b95506040880135945060608801359350608088013560ff81168114613ce357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613d1557600080fd5b8335613d2081614639565b925060208481013567ffffffffffffffff80821115613d3e57600080fd5b818701915087601f830112613d5257600080fd5b8135613d60613a3282614420565b8082825285820191508585018b878560051b8801011115613d8057600080fd5b600095505b83861015613dac578035613d9881614639565b835260019590950194918601918601613d85565b50965050506040870135925080831115613dc557600080fd5b5050613dd386828701613a11565b9150509250925092565b60008060408385031215613df057600080fd5b8235613dfb81614639565b946020939093013593505050565b60008060008060008060c08789031215613e2257600080fd5b8635613e2d81614639565b955060208701359450604087013593506060870135613e4b81614639565b92506080870135613e5b81614639565b8092505060a087013590509295509295509295565b60008060008060808587031215613e8657600080fd5b8435613e9181614639565b935060208501359250604085013591506060850135613eaf8161464e565b939692955090935050565b60008060008060008060008060008060a08b8d031215613ed957600080fd5b8a3567ffffffffffffffff80821115613ef157600080fd5b613efd8e838f016139c5565b909c509a5060208d0135915080821115613f1657600080fd5b613f228e838f016139c5565b909a50985060408d0135915080821115613f3b57600080fd5b613f478e838f016139c5565b909850965060608d0135915080821115613f6057600080fd5b613f6c8e838f016139c5565b909650945060808d0135915080821115613f8557600080fd5b50613f928d828e016139c5565b915080935050809150509295989b9194979a5092959850565b600060208284031215613fbd57600080fd5b8151612e928161464e565b600060208284031215613fda57600080fd5b5051919050565b60008060208385031215613ff457600080fd5b823567ffffffffffffffff8082111561400c57600080fd5b818501915085601f83011261402057600080fd5b81358181111561402f57600080fd5b86602082850101111561404157600080fd5b60209290920196919550909350505050565b60008060e0838503121561406657600080fd5b6140708484613a83565b915060c0830135613b8081614639565b60008082840361012081121561409557600080fd5b61409f8585613a83565b9250606060bf19820112156140b357600080fd5b506040516060810181811067ffffffffffffffff821117156140d7576140d7614623565b60405260c08401356140e881614639565b815260e084013560208201526101009093013560408401525092909150565b60006080828403121561411957600080fd5b6040516080810181811067ffffffffffffffff8211171561413c5761413c614623565b604052825161414a8161464e565b8152602083015161415a8161464e565b6020820152604083015161416d8161464e565b604082015260608301516141808161464e565b60608201529392505050565b60006020828403121561419e57600080fd5b5035919050565b600080600080608085870312156141bb57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c9150808316806141f757607f831692505b602080841082141561421757634e487b7160e01b86526022600452602486fd5b81801561422b576001811461423c57614269565b60ff19861689528489019650614269565b60008a81526020902060005b868110156142615781548b820152908501908301614248565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156142e95785518516835294830194918301916001016142cb565b5050858103604087015286518082529082019350915080860160005b8381101561432157815185529382019390820190600101614305565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b8181101561439257858101830151858201604001528201614376565b818111156143a4576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561441857614418614623565b604052919050565b600067ffffffffffffffff82111561443a5761443a614623565b5060051b60200190565b60008219821115614457576144576145f7565b500190565b60008261447957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614490576144906145f7565b500390565b60006144a3613a3284614420565b808482526020808301925084368760051b870111156144c157600080fd5b60005b8781101561451557813567ffffffffffffffff8111156144e357600080fd5b870136601f8201126144f457600080fd5b61450236823586840161396d565b86525093820193908201906001016144c4565b50919695505050505050565b600061452f613a3284614420565b808482526020808301925084368760051b8701111561454d57600080fd5b60005b8781101561451557813567ffffffffffffffff81111561456f57600080fd5b870136601f82011261458057600080fd5b61458e36823586840161396d565b8652509382019390820190600101614550565b600181811c908216806145b557607f821691505b602082108114156145d657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156145f0576145f06145f7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212203fefaefebd60ab2e4bb6f9429e228753bf3ba50cd41f42191f8fac1472e7d4b664736f6c63430008070033",
"linkReferences": {},
"deployedLinkReferences": {}
}