diff --git a/artifacts/ERC721Factory.sol/ERC721Factory.dbg.json b/artifacts/ERC721Factory.sol/ERC721Factory.dbg.json new file mode 100644 index 000000000..1f66db5f7 --- /dev/null +++ b/artifacts/ERC721Factory.sol/ERC721Factory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/ERC721Factory.sol/ERC721Factory.json b/artifacts/ERC721Factory.sol/ERC721Factory.json new file mode 100644 index 000000000..017bf464e --- /dev/null +++ b/artifacts/ERC721Factory.sol/ERC721Factory.json @@ -0,0 +1,1164 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721Factory", + "sourceName": "contracts/ERC721Factory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_template721", + "type": "address" + }, + { + "internalType": "address", + "name": "_template", + "type": "address" + }, + { + "internalType": "address", + "name": "_collector", + "type": "address" + }, + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "DispenserCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "InstanceDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newTokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "tokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "NFTCreated", + "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": 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": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_templateAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "nftTemplateCount", + "type": "uint256" + } + ], + "name": "Template20Added", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_templateAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "nftTemplateCount", + "type": "uint256" + } + ], + "name": "Template721Added", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newTokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "cap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "creator", + "type": "address" + } + ], + "name": "TokenCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_templateAddress", + "type": "address" + } + ], + "name": "add721TokenTemplate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_templateAddress", + "type": "address" + } + ], + "name": "addTokenTemplate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "internalType": "struct ERC721Factory.NftCreateData", + "name": "_NftCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "strings", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytess", + "type": "bytes[]" + } + ], + "internalType": "struct ERC721Factory.ErcCreateData", + "name": "_ErcCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "dispenserAddress", + "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" + } + ], + "internalType": "struct ERC721Factory.DispenserData", + "name": "_DispenserData", + "type": "tuple" + } + ], + "name": "createNftErcWithDispenser", + "outputs": [ + { + "internalType": "address", + "name": "erc721Address", + "type": "address" + }, + { + "internalType": "address", + "name": "erc20Address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "internalType": "struct ERC721Factory.NftCreateData", + "name": "_NftCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "strings", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytess", + "type": "bytes[]" + } + ], + "internalType": "struct ERC721Factory.ErcCreateData", + "name": "_ErcCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "fixedPriceAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + } + ], + "internalType": "struct ERC721Factory.FixedData", + "name": "_FixedData", + "type": "tuple" + } + ], + "name": "createNftErcWithFixedRate", + "outputs": [ + { + "internalType": "address", + "name": "erc721Address", + "type": "address" + }, + { + "internalType": "address", + "name": "erc20Address", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "internalType": "struct ERC721Factory.NftCreateData", + "name": "_NftCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "strings", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytess", + "type": "bytes[]" + } + ], + "internalType": "struct ERC721Factory.ErcCreateData", + "name": "_ErcCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ssParams", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapFees", + "type": "uint256[]" + } + ], + "internalType": "struct ERC721Factory.PoolData", + "name": "_PoolData", + "type": "tuple" + } + ], + "name": "createNftErcWithPool", + "outputs": [ + { + "internalType": "address", + "name": "erc721Address", + "type": "address" + }, + { + "internalType": "address", + "name": "erc20Address", + "type": "address" + }, + { + "internalType": "address", + "name": "poolAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "internalType": "struct ERC721Factory.NftCreateData", + "name": "_NftCreateData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "templateIndex", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "strings", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytess", + "type": "bytes[]" + } + ], + "internalType": "struct ERC721Factory.ErcCreateData", + "name": "_ErcCreateData", + "type": "tuple" + } + ], + "name": "createNftWithErc", + "outputs": [ + { + "internalType": "address", + "name": "erc721Address", + "type": "address" + }, + { + "internalType": "address", + "name": "erc20Address", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_templateIndex", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "strings", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytess", + "type": "bytes[]" + } + ], + "name": "createToken", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_templateIndex", + "type": "uint256" + }, + { + "internalType": "address", + "name": "additionalERC20Deployer", + "type": "address" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "deployERC721Contract", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "disable721TokenTemplate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "disableTokenTemplate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "erc20List", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "erc721List", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentNFTCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentNFTTemplateCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentTemplateCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentTokenCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getNFTTemplate", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + } + ], + "internalType": "struct ERC721Factory.Template", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getTokenTemplate", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + } + ], + "internalType": "struct ERC721Factory.Template", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "nftTemplateList", + "outputs": [ + { + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "reactivate721TokenTemplate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "reactivateTokenTemplate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceIndex", + "type": "uint256" + }, + { + "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": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "internalType": "struct ERC721Factory.tokenOrder[]", + "name": "orders", + "type": "tuple[]" + } + ], + "name": "startMultipleTokenOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templateCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "templateList", + "outputs": [ + { + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526000600a553480156200001657600080fd5b50604051620039c8380380620039c88339810160408190526200003991620005ab565b6200004433620001be565b600180556001600160a01b038316158015906200006957506001600160a01b03821615155b80156200007e57506001600160a01b03841615155b620001065760405162461bcd60e51b815260206004820152604760248201527f4552433732314454466163746f72793a20496e76616c69642074656d706c617460448201527f6520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f72206064820152666164647265737360c81b608482015260a4015b60405180910390fd5b6001600160a01b0381166200016e5760405162461bcd60e51b815260206004820152602760248201527f4552433732314454466163746f72793a20496e76616c696420726f75746572206044820152666164647265737360c81b6064820152608401620000fd565b62000179846200020e565b506200018583620003d1565b50600c80546001600160a01b039283166001600160a01b03199182161790915560028054939092169216919091179055506200062f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080546001600160a01b031633146200025a5760405162461bcd60e51b81526020600482018190526024820152600080516020620039a88339815191526044820152606401620000fd565b6001600160a01b038216620002d85760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f5745440000000000000000006064820152608401620000fd565b813b620003285760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e545241435400000000006044820152606401620000fd565b6001600560008282546200033d919062000608565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a350506005545b919050565b600080546001600160a01b031633146200041d5760405162461bcd60e51b81526020600482018190526024820152600080516020620039a88339815191526044820152606401620000fd565b6001600160a01b0382166200049b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c61746520616460448201527f6472657373283029204e4f5420414c4c4f5745440000000000000000000000006064820152608401620000fd565b813b620004eb5760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e54524143540000000000006044820152606401620000fd565b6001600b600082825462000500919062000608565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b54919050565b80516001600160a01b0381168114620003cc57600080fd5b60008060008060808587031215620005c257600080fd5b620005cd8562000593565b9350620005dd6020860162000593565b9250620005ed6040860162000593565b9150620005fd6060860162000593565b905092959194509250565b600082198211156200062a57634e487b7160e01b600052601160045260246000fd5b500190565b613369806200063f6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063c6cf868a11610097578063e5fc01f011610071578063e5fc01f0146104ff578063f2fde38b14610507578063f887ea401461051a578063fd024d6a1461052d57600080fd5b8063c6cf868a14610487578063ca4abc691461048f578063e3491099146104cc57600080fd5b806395c60305116100d357806395c6030514610420578063a33ef2a614610428578063b9cd22641461043b578063bbf8d71f1461047457600080fd5b80638da5cb5b146103c75780638f6051af146103d857806394051699146103eb57600080fd5b80635de329fd116101665780637b20bccf116101405780637b20bccf1461033a578063809d81051461034d57806382c442041461036057806389898869146103b457600080fd5b80635de329fd146102f6578063715018a61461030957806372f670f01461031157600080fd5b806326705c3c116101a257806326705c3c1461024f5780633315efd114610266578063557fcfb0146102c35780635c705982146102ee57600080fd5b8063042ab9b3146101c95780630ffda88714610207578063226e76151461021c575b600080fd5b6101dc6101d73660046124e0565b610540565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b61021a6102153660046124e0565b6105c7565b005b61023f61022a366004612519565b60096020526000908152604090205460ff1681565b60405190151581526020016101fe565b610258600b5481565b6040519081526020016101fe565b6101dc6102743660046124e0565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102d66102d1366004612799565b61060c565b6040516001600160a01b0390911681526020016101fe565b600354610258565b61021a610304366004612877565b6106ad565b61021a610b97565b6102d661031f366004612519565b6008602052600090815260409020546001600160a01b031681565b610258610348366004612519565b610bcd565b61021a61035b3660046124e0565b610d60565b61039561036e3660046124e0565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101fe565b6102d66103c23660046129e7565b610dd2565b6000546001600160a01b03166102d6565b6102586103e6366004612519565b6110a3565b6103956103f93660046124e0565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610258565b61021a6104363660046124e0565b61123e565b61044e610449366004612abc565b6112b6565b604080516001600160a01b039485168152939092166020840152908201526060016101fe565b61021a6104823660046124e0565b611516565b600a54610258565b6104a261049d366004612abc565b6115d2565b604080516001600160a01b03948516815292841660208401529216918101919091526060016101fe565b6104df6104da366004612b43565b6117a0565b604080516001600160a01b039384168152929091166020830152016101fe565b600554610258565b61021a610515366004612519565b611928565b600c546102d6906001600160a01b031681565b6104df61053b366004612ba6565b6119c3565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b54831180159061059c57508215155b6105c15760405162461bcd60e51b81526004016105b890612c1a565b60405180910390fd5b92915050565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016105b890612c63565b6000908152600760205260409020805460ff60a01b19169055565b3360008181526008602052604081205490916001600160a01b03909116146106955760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105b8565b6106a3868686868633611bfa565b9695505050505050565b600260015414156106d05760405162461bcd60e51b81526004016105b890612c98565b60026001558051603210156107275760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105b8565b60005b8151811015610b8f57600080600084848151811061074a5761074a612ccf565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190612ce5565b9250925092506000811180156107d557506001600160a01b03821615155b80156107e957506001600160a01b03831615155b15610835576108036001600160a01b038316333084611edf565b61083585858151811061081857610818612ccf565b6020908102919091010151516001600160a01b0384169083611f50565b600085858151811061084957610849612ccf565b602002602001015160a00151118015610892575060006001600160a01b031685858151811061087a5761087a612ccf565b6020026020010151608001516001600160a01b031614155b80156108ce575060006001600160a01b03168585815181106108b6576108b6612ccf565b6020026020010151606001516001600160a01b031614155b156109a25761092d33308787815181106108ea576108ea612ccf565b602002602001015160a0015188888151811061090857610908612ccf565b6020026020010151608001516001600160a01b0316611edf909392919063ffffffff16565b6109a285858151811061094257610942612ccf565b60200260200101516000015186868151811061096057610960612ccf565b602002602001015160a0015187878151811061097e5761097e612ccf565b6020026020010151608001516001600160a01b0316611f509092919063ffffffff16565b6109e73330670de0b6b3a76400008888815181106109c2576109c2612ccf565b6020026020010151600001516001600160a01b0316611edf909392919063ffffffff16565b8484815181106109f9576109f9612ccf565b6020026020010151600001516001600160a01b0316639b4f44b6868681518110610a2557610a25612ccf565b602002602001015160200151878781518110610a4357610a43612ccf565b602002602001015160400151888881518110610a6157610a61612ccf565b602002602001015160600151898981518110610a7f57610a7f612ccf565b6020026020010151608001518a8a81518110610a9d57610a9d612ccf565b602002602001015160a001518b8b81518110610abb57610abb612ccf565b602002602001015160c001518c8c81518110610ad957610ad9612ccf565b602002602001015160e001518d8d81518110610af757610af7612ccf565b602002602001015161010001518e8e81518110610b1657610b16612ccf565b602002602001015161012001516040518a63ffffffff1660e01b8152600401610b4799989796959493929190612d80565b600060405180830381600087803b158015610b6157600080fd5b505af1158015610b75573d6000803e3d6000fd5b505050505050508080610b8790612dfc565b91505061072a565b505060018055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105b890612c63565b610bcb6000612002565b565b600080546001600160a01b03163314610bf85760405162461bcd60e51b81526004016105b890612c63565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105b8565b813b610cb95760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105b8565b6001600b6000828254610ccc9190612e17565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b81526004016105b890612c63565b6005548111158015610d9b57508015155b610db75760405162461bcd60e51b81526004016105b890612e2f565b6000908152600660205260409020805460ff60a01b19169055565b60006005548411158015610de557508315155b610e015760405162461bcd60e51b81526004016105b890612e2f565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052610e9d5760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105b8565b8051610ea890612052565b91506001600160a01b038216610f28576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105b8565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d790610f7e9033908c908c9030908c908c90600401612e7b565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190612eef565b61102a5760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105b8565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b896040516110779493929190612f0c565b60405180910390a36001600360008282546110929190612e17565b909155509298975050505050505050565b600080546001600160a01b031633146110ce5760405162461bcd60e51b81526004016105b890612c63565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105b8565b813b6111985760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105b8565b6001600560008282546111ab9190612e17565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146112685760405162461bcd60e51b81526004016105b890612c63565b600554811115801561127957508015155b6112955760405162461bcd60e51b81526004016105b890612e2f565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156112de5760405162461bcd60e51b81526004016105b890612c98565b60026001556113b36112f08780612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611332925050506020890189612f54565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061137960608c018c612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610dd292505050565b925061146a85356113c76020880188612fa1565b6113d091612fea565b6113dd6040890189612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061141c9250505060608a018a612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061145b9250505060808b018b612fa1565b61146491612fea565b88611bfa565b91506001600160a01b038216638b96412b6114886020870187612519565b6114956020880188612fa1565b6114a260408a018a612fa1565b6040518663ffffffff1660e01b81526004016114c2959493929190613076565b6020604051808303816000875af11580156114e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150591906130ba565b600180559296919550919350915050565b6000546001600160a01b031633146115405760405162461bcd60e51b81526004016105b890612c63565b600b54811115801561155157508015155b6115b15760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105b8565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156115fa5760405162461bcd60e51b81526004016105b890612c98565b600260015561166d33306116116020880188612fa1565b600481811061162257611622612ccf565b602002919091013590506116368880612fa1565b600181811061164757611647612ccf565b905060200201602081019061165c9190612519565b6001600160a01b0316929190611edf565b61167a6112f08780612f54565b925061168e85356113c76020880188612fa1565b600c54909250611709906001600160a01b03166116ae6020870187612fa1565b60048181106116bf576116bf612ccf565b602002919091013590506116d38780612fa1565b60018181106116e4576116e4612ccf565b90506020020160208101906116f99190612519565b6001600160a01b03169190611f50565b6001600160a01b038216635bfe4da06117256020870187612fa1565b6117326040890189612fa1565b61173c8a80612fa1565b6040518763ffffffff1660e01b815260040161175d969594939291906130d3565b6020604051808303816000875af115801561177c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611505919061311c565b600080600260015414156117c65760405162461bcd60e51b81526004016105b890612c98565b60026001556118626117d88580612f54565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181a925050506020870187612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408b013593509150611379905060608a018a612f54565b915061191983356118766020860186612fa1565b61187f91612fea565b61188c6040870187612fa1565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506118cb925050506060880188612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061190a925050506080890189612fa1565b61191391612fea565b87611bfa565b60018055919491935090915050565b6000546001600160a01b031633146119525760405162461bcd60e51b81526004016105b890612c63565b6001600160a01b0381166119b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b8565b6119c081612002565b50565b600080600260015414156119e95760405162461bcd60e51b81526004016105b890612c98565b6002600155611a846119fb8680612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a3d925050506020880188612f54565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061137960608b018b612f54565b9150611b2c8435611a986020870187612fa1565b611aa191612fea565b611aae6040880188612fa1565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611aed925050506060890189612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061190a9250505060808a018a612fa1565b90506001600160a01b03811663191c918a611b4a6020860186612519565b60208601356040870135611b646080890160608a01613139565b611b7460a08a0160808b01612519565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611bd457600080fd5b505af1158015611be8573d6000803e3d6000fd5b50506001805550919590945092505050565b600083600081518110611c0f57611c0f612ccf565b602002602001015160001415611c755760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105b8565b600b548711158015611c8657508615155b611ca25760405162461bcd60e51b81526004016105b890612c1a565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052611d3b5760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105b8565b8051611d4690612052565b6001600160a01b0381166000818152600960205260409020805460ff19166001179055909250611dde5760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105b8565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b9089600081518110611e2a57611e2a612ccf565b60200260200101518a600181518110611e4557611e45612ccf565b602002602001015189600081518110611e6057611e60612ccf565b602002602001015188604051611e799493929190613156565b60405180910390a36001600a6000828254611e949190612e17565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b038416608082015260608101859052611ed383826120e2565b50509695505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611f4a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261228f565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc591906130ba565b611fcf9190612e17565b6040516001600160a01b038516602482015260448101829052909150611f4a90859063095ea7b360e01b90606401611f13565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b604080516003808252608082019092528391600091906020820160608036833701905050905082608001518160008151811061212057612120612ccf565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061215157612151612ccf565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061218257612182612ccf565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b81526004016121e695949392919061325b565b6020604051808303816000875af1158015612205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122299190612eef565b611f4a5760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105b8565b60006122e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123669092919063ffffffff16565b80519091501561236157808060200190518101906123029190612eef565b6123615760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b8565b505050565b6060612375848460008561237f565b90505b9392505050565b6060824710156123e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b8565b843b61242e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b8565b600080866001600160a01b0316858760405161244a9190613304565b60006040518083038185875af1925050503d8060008114612487576040519150601f19603f3d011682016040523d82523d6000602084013e61248c565b606091505b509150915061249c8282866124a7565b979650505050505050565b606083156124b6575081612378565b8251156124c65782518084602001fd5b8160405162461bcd60e51b81526004016105b89190613320565b6000602082840312156124f257600080fd5b5035919050565b6001600160a01b03811681146119c057600080fd5b8035610d5b816124f9565b60006020828403121561252b57600080fd5b8135612378816124f9565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171561256f5761256f612536565b60405290565b604051601f8201601f191681016001600160401b038111828210171561259d5761259d612536565b604052919050565b60006001600160401b038211156125be576125be612536565b5060051b60200190565b600082601f8301126125d957600080fd5b81356001600160401b038111156125f2576125f2612536565b612605601f8201601f1916602001612575565b81815284602083860101111561261a57600080fd5b816020850160208301376000918101602001919091529392505050565b600061264a612645846125a5565b612575565b8381529050602080820190600585901b84018681111561266957600080fd5b845b818110156126a45780356001600160401b0381111561268a5760008081fd5b612696898289016125c8565b85525092820192820161266b565b505050509392505050565b600082601f8301126126c057600080fd5b813560206126d0612645836125a5565b82815260059290921b840181019181810190868411156126ef57600080fd5b8286015b84811015612713578035612706816124f9565b83529183019183016126f3565b509695505050505050565b600082601f83011261272f57600080fd5b8135602061273f612645836125a5565b82815260059290921b8401810191818101908684111561275e57600080fd5b8286015b848110156127135780358352918301918301612762565b600082601f83011261278a57600080fd5b61237883833560208501612637565b600080600080600060a086880312156127b157600080fd5b8535945060208601356001600160401b03808211156127cf57600080fd5b818801915088601f8301126127e357600080fd5b6127f289833560208501612637565b9550604088013591508082111561280857600080fd5b61281489838a016126af565b9450606088013591508082111561282a57600080fd5b61283689838a0161271e565b9350608088013591508082111561284c57600080fd5b5061285988828901612779565b9150509295509295909350565b803560ff81168114610d5b57600080fd5b6000602080838503121561288a57600080fd5b82356001600160401b03808211156128a157600080fd5b818501915085601f8301126128b557600080fd5b81356128c3612645826125a5565b81815260059190911b830184019084810190888311156128e257600080fd5b8585015b838110156129da578035858111156128fe5760008081fd5b8601610140818c03601f19018113156129175760008081fd5b61291f61254c565b61292a8a840161250e565b8152604061293981850161250e565b8b830152606080850135828401526080915061295682860161250e565b9083015260a061296785820161250e565b8284015260c0915081850135818401525060e0612985818601612866565b8284015261010091508185013581840152506101208085013582840152838501359350898411156129b857600091508182fd5b6129c68f8d868801016125c8565b9083015250855250509186019186016128e6565b5098975050505050505050565b600080600080600060a086880312156129ff57600080fd5b85356001600160401b0380821115612a1657600080fd5b612a2289838a016125c8565b96506020880135915080821115612a3857600080fd5b612a4489838a016125c8565b95506040880135945060608801359150612a5d826124f9565b90925060808701359080821115612a7357600080fd5b50612859888289016125c8565b600060808284031215612a9257600080fd5b50919050565b600060a08284031215612a9257600080fd5b600060608284031215612a9257600080fd5b600080600060608486031215612ad157600080fd5b83356001600160401b0380821115612ae857600080fd5b612af487838801612a80565b94506020860135915080821115612b0a57600080fd5b612b1687838801612a98565b93506040860135915080821115612b2c57600080fd5b50612b3986828701612aaa565b9150509250925092565b60008060408385031215612b5657600080fd5b82356001600160401b0380821115612b6d57600080fd5b612b7986838701612a80565b93506020850135915080821115612b8f57600080fd5b50612b9c85828601612a98565b9150509250929050565b600080600060e08486031215612bbb57600080fd5b83356001600160401b0380821115612bd257600080fd5b612bde87838801612a80565b94506020860135915080821115612bf457600080fd5b50612c0186828701612a98565b925050612c118560408601612a98565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215612cfa57600080fd5b8351612d05816124f9565b6020850151909350612d16816124f9565b80925050604084015190509250925092565b60005b83811015612d43578181015183820152602001612d2b565b83811115611f4a5750506000910152565b60008151808452612d6c816020860160208601612d28565b601f01601f19169290920160200192915050565b600061012060018060a01b03808d1684528b6020850152808b166040850152808a1660608501525087608084015260ff871660a08401528560c08401528460e084015280610100840152612dd681840185612d54565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415612e1057612e10612de6565b5060010190565b60008219821115612e2a57612e2a612de6565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c06020840152612e9d60c0840189612d54565b8381036040850152612eaf8189612d54565b90508187166060850152818616608085015283810360a0850152612ed38186612d54565b9a9950505050505050505050565b80151581146119c057600080fd5b600060208284031215612f0157600080fd5b815161237881612ee1565b608081526000612f1f6080830187612d54565b6001600160a01b03861660208401528281036040840152612f408186612d54565b9050828103606084015261249c8185612d54565b6000808335601e19843603018112612f6b57600080fd5b8301803591506001600160401b03821115612f8557600080fd5b602001915036819003821315612f9a57600080fd5b9250929050565b6000808335601e19843603018112612fb857600080fd5b8301803591506001600160401b03821115612fd257600080fd5b6020019150600581901b3603821315612f9a57600080fd5b6000612378368484612637565b8183526000602080850194508260005b8581101561303557813561301a816124f9565b6001600160a01b031687529582019590820190600101613007565b509495945050505050565b81835260006001600160fb1b0383111561305957600080fd5b8260051b8083602087013760009401602001938452509192915050565b6001600160a01b038616815260606020820181905260009061309b9083018688612ff7565b82810360408401526130ae818587613040565b98975050505050505050565b6000602082840312156130cc57600080fd5b5051919050565b6060815260006130e760608301888a613040565b82810360208401526130fa818789613040565b9050828103604084015261310f818587612ff7565b9998505050505050505050565b60006020828403121561312e57600080fd5b8151612378816124f9565b60006020828403121561314b57600080fd5b813561237881612ee1565b6080815260006131696080830187612d54565b828103602084015261317b8187612d54565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b838110156130355781516001600160a01b0316875295820195908201906001016131b1565b600081518084526020808501945080840160005b83811015613035578151875295820195908201906001016131ea565b600081518084526020808501808196508360051b8101915082860160005b8581101561324e57828403895261323c848351612d54565b98850198935090840190600101613224565b5091979650505050505050565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b838110156132b25760bf198887030185526132a0868351612d54565b95509382019390820190600101613284565b5050858403818701525050506132c8818861319d565b905082810360408401526132dc818761319d565b905082810360608401526132f081866131d6565b905082810360808401526130ae8185613206565b60008251613316818460208701612d28565b9190910192915050565b6020815260006123786020830184612d5456fea2646970667358221220bcb5079a8dfc5ac89d9c8b15c3e22a453d4e07b4f9e047affc6d9f1866d96f7264736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638da5cb5b116100f9578063c6cf868a11610097578063e5fc01f011610071578063e5fc01f0146104ff578063f2fde38b14610507578063f887ea401461051a578063fd024d6a1461052d57600080fd5b8063c6cf868a14610487578063ca4abc691461048f578063e3491099146104cc57600080fd5b806395c60305116100d357806395c6030514610420578063a33ef2a614610428578063b9cd22641461043b578063bbf8d71f1461047457600080fd5b80638da5cb5b146103c75780638f6051af146103d857806394051699146103eb57600080fd5b80635de329fd116101665780637b20bccf116101405780637b20bccf1461033a578063809d81051461034d57806382c442041461036057806389898869146103b457600080fd5b80635de329fd146102f6578063715018a61461030957806372f670f01461031157600080fd5b806326705c3c116101a257806326705c3c1461024f5780633315efd114610266578063557fcfb0146102c35780635c705982146102ee57600080fd5b8063042ab9b3146101c95780630ffda88714610207578063226e76151461021c575b600080fd5b6101dc6101d73660046124e0565b610540565b6040805182516001600160a01b03168152602092830151151592810192909252015b60405180910390f35b61021a6102153660046124e0565b6105c7565b005b61023f61022a366004612519565b60096020526000908152604090205460ff1681565b60405190151581526020016101fe565b610258600b5481565b6040519081526020016101fe565b6101dc6102743660046124e0565b6040805180820190915260008082526020820152506000908152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff1615159082015290565b6102d66102d1366004612799565b61060c565b6040516001600160a01b0390911681526020016101fe565b600354610258565b61021a610304366004612877565b6106ad565b61021a610b97565b6102d661031f366004612519565b6008602052600090815260409020546001600160a01b031681565b610258610348366004612519565b610bcd565b61021a61035b3660046124e0565b610d60565b61039561036e3660046124e0565b6006602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b0390931683529015156020830152016101fe565b6102d66103c23660046129e7565b610dd2565b6000546001600160a01b03166102d6565b6102586103e6366004612519565b6110a3565b6103956103f93660046124e0565b6007602052600090815260409020546001600160a01b03811690600160a01b900460ff1682565b600b54610258565b61021a6104363660046124e0565b61123e565b61044e610449366004612abc565b6112b6565b604080516001600160a01b039485168152939092166020840152908201526060016101fe565b61021a6104823660046124e0565b611516565b600a54610258565b6104a261049d366004612abc565b6115d2565b604080516001600160a01b03948516815292841660208401529216918101919091526060016101fe565b6104df6104da366004612b43565b6117a0565b604080516001600160a01b039384168152929091166020830152016101fe565b600554610258565b61021a610515366004612519565b611928565b600c546102d6906001600160a01b031681565b6104df61053b366004612ba6565b6119c3565b60408051808201909152600080825260208201526000828152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff16151590820152600b54831180159061059c57508215155b6105c15760405162461bcd60e51b81526004016105b890612c1a565b60405180910390fd5b92915050565b6000546001600160a01b031633146105f15760405162461bcd60e51b81526004016105b890612c63565b6000908152600760205260409020805460ff60a01b19169055565b3360008181526008602052604081205490916001600160a01b03909116146106955760405162461bcd60e51b815260206004820152603660248201527f455243373231466163746f72793a204f4e4c592045524337323120494e5354416044820152754e43452046524f4d20455243373231464143544f525960501b60648201526084016105b8565b6106a3868686868633611bfa565b9695505050505050565b600260015414156106d05760405162461bcd60e51b81526004016105b890612c98565b60026001558051603210156107275760405162461bcd60e51b815260206004820152601e60248201527f455243373231466163746f72793a20546f6f204d616e79204f7264657273000060448201526064016105b8565b60005b8151811015610b8f57600080600084848151811061074a5761074a612ccf565b6020026020010151600001516001600160a01b031663397b37436040518163ffffffff1660e01b8152600401606060405180830381865afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b79190612ce5565b9250925092506000811180156107d557506001600160a01b03821615155b80156107e957506001600160a01b03831615155b15610835576108036001600160a01b038316333084611edf565b61083585858151811061081857610818612ccf565b6020908102919091010151516001600160a01b0384169083611f50565b600085858151811061084957610849612ccf565b602002602001015160a00151118015610892575060006001600160a01b031685858151811061087a5761087a612ccf565b6020026020010151608001516001600160a01b031614155b80156108ce575060006001600160a01b03168585815181106108b6576108b6612ccf565b6020026020010151606001516001600160a01b031614155b156109a25761092d33308787815181106108ea576108ea612ccf565b602002602001015160a0015188888151811061090857610908612ccf565b6020026020010151608001516001600160a01b0316611edf909392919063ffffffff16565b6109a285858151811061094257610942612ccf565b60200260200101516000015186868151811061096057610960612ccf565b602002602001015160a0015187878151811061097e5761097e612ccf565b6020026020010151608001516001600160a01b0316611f509092919063ffffffff16565b6109e73330670de0b6b3a76400008888815181106109c2576109c2612ccf565b6020026020010151600001516001600160a01b0316611edf909392919063ffffffff16565b8484815181106109f9576109f9612ccf565b6020026020010151600001516001600160a01b0316639b4f44b6868681518110610a2557610a25612ccf565b602002602001015160200151878781518110610a4357610a43612ccf565b602002602001015160400151888881518110610a6157610a61612ccf565b602002602001015160600151898981518110610a7f57610a7f612ccf565b6020026020010151608001518a8a81518110610a9d57610a9d612ccf565b602002602001015160a001518b8b81518110610abb57610abb612ccf565b602002602001015160c001518c8c81518110610ad957610ad9612ccf565b602002602001015160e001518d8d81518110610af757610af7612ccf565b602002602001015161010001518e8e81518110610b1657610b16612ccf565b602002602001015161012001516040518a63ffffffff1660e01b8152600401610b4799989796959493929190612d80565b600060405180830381600087803b158015610b6157600080fd5b505af1158015610b75573d6000803e3d6000fd5b505050505050508080610b8790612dfc565b91505061072a565b505060018055565b6000546001600160a01b03163314610bc15760405162461bcd60e51b81526004016105b890612c63565b610bcb6000612002565b565b600080546001600160a01b03163314610bf85760405162461bcd60e51b81526004016105b890612c63565b6001600160a01b038216610c6b5760405162461bcd60e51b815260206004820152603460248201527f4552433230466163746f72793a204552433732312074656d706c617465206164604482015273191c995cdcca0c0a481393d50810531313d5d15160621b60648201526084016105b8565b813b610cb95760405162461bcd60e51b815260206004820152601a60248201527f4552433230466163746f72793a204e4f5420434f4e545241435400000000000060448201526064016105b8565b6001600b6000828254610ccc9190612e17565b90915550506040805180820182526001600160a01b0380851680835260016020808501918252600b8054600090815260079092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fdcd16da87b60cea6dbd55a83f73b8a4bf9a54655db58ae0f35b82a2373fc150d91a35050600b545b919050565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b81526004016105b890612c63565b6005548111158015610d9b57508015155b610db75760405162461bcd60e51b81526004016105b890612e2f565b6000908152600660205260409020805460ff60a01b19169055565b60006005548411158015610de557508315155b610e015760405162461bcd60e51b81526004016105b890612e2f565b6000848152600660209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052610e9d5760405162461bcd60e51b815260206004820152602e60248201527f4552433732314454466163746f72793a20455243373231546f6b656e2054656d60448201526d1c1b185d1948191a5cd8589b195960921b60648201526084016105b8565b8051610ea890612052565b91506001600160a01b038216610f28576040805162461bcd60e51b81526020600482015260248101919091527f4552433732314454466163746f72793a204661696c656420746f20706572666f60448201527f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e60648201526084016105b8565b6001600160a01b0382166000818152600860205260409081902080546001600160a01b03191683179055516370c166d760e01b81528391906370c166d790610f7e9033908c908c9030908c908c90600401612e7b565b6020604051808303816000875af1158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190612eef565b61102a5760405162461bcd60e51b815260206004820152603460248201527f4552433732314454466163746f72793a20556e61626c6520746f20696e697469604482015273616c697a6520746f6b656e20696e7374616e636560601b60648201526084016105b8565b81600001516001600160a01b0316836001600160a01b03167f46f5e3cee761854fc3892024ae7aa2c832007dff583603ce093f177ebd9c4c968a338b896040516110779493929190612f0c565b60405180910390a36001600360008282546110929190612e17565b909155509298975050505050505050565b600080546001600160a01b031633146110ce5760405162461bcd60e51b81526004016105b890612c63565b6001600160a01b03821661114a5760405162461bcd60e51b815260206004820152603760248201527f4552433732314454466163746f72793a204552433732312074656d706c61746560448201527f2061646472657373283029204e4f5420414c4c4f57454400000000000000000060648201526084016105b8565b813b6111985760405162461bcd60e51b815260206004820152601b60248201527f455243373231466163746f72793a204e4f5420434f4e5452414354000000000060448201526064016105b8565b6001600560008282546111ab9190612e17565b90915550506040805180820182526001600160a01b038085168083526001602080850191825260058054600090815260069092528682208651815494511515600160a01b026001600160a81b03199095169616959095179290921790935554935192939290917fc0167b92c8eb4a2bad2c05e0134f076fba5d3cd54671a3e8edf13d2e61443bd991a35050600554919050565b6000546001600160a01b031633146112685760405162461bcd60e51b81526004016105b890612c63565b600554811115801561127957508015155b6112955760405162461bcd60e51b81526004016105b890612e2f565b6000908152600660205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156112de5760405162461bcd60e51b81526004016105b890612c98565b60026001556113b36112f08780612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611332925050506020890189612f54565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408901353061137960608c018c612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610dd292505050565b925061146a85356113c76020880188612fa1565b6113d091612fea565b6113dd6040890189612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061141c9250505060608a018a612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061145b9250505060808b018b612fa1565b61146491612fea565b88611bfa565b91506001600160a01b038216638b96412b6114886020870187612519565b6114956020880188612fa1565b6114a260408a018a612fa1565b6040518663ffffffff1660e01b81526004016114c2959493929190613076565b6020604051808303816000875af11580156114e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150591906130ba565b600180559296919550919350915050565b6000546001600160a01b031633146115405760405162461bcd60e51b81526004016105b890612c63565b600b54811115801561155157508015155b6115b15760405162461bcd60e51b815260206004820152602b60248201527f45524332304454466163746f72793a2054656d706c61746520696e646578206460448201526a1bd95cdb9d08195e1a5cdd60aa1b60648201526084016105b8565b6000908152600760205260409020805460ff60a01b1916600160a01b179055565b6000806000600260015414156115fa5760405162461bcd60e51b81526004016105b890612c98565b600260015561166d33306116116020880188612fa1565b600481811061162257611622612ccf565b602002919091013590506116368880612fa1565b600181811061164757611647612ccf565b905060200201602081019061165c9190612519565b6001600160a01b0316929190611edf565b61167a6112f08780612f54565b925061168e85356113c76020880188612fa1565b600c54909250611709906001600160a01b03166116ae6020870187612fa1565b60048181106116bf576116bf612ccf565b602002919091013590506116d38780612fa1565b60018181106116e4576116e4612ccf565b90506020020160208101906116f99190612519565b6001600160a01b03169190611f50565b6001600160a01b038216635bfe4da06117256020870187612fa1565b6117326040890189612fa1565b61173c8a80612fa1565b6040518763ffffffff1660e01b815260040161175d969594939291906130d3565b6020604051808303816000875af115801561177c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611505919061311c565b600080600260015414156117c65760405162461bcd60e51b81526004016105b890612c98565b60026001556118626117d88580612f54565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061181a925050506020870187612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408b013593509150611379905060608a018a612f54565b915061191983356118766020860186612fa1565b61187f91612fea565b61188c6040870187612fa1565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506118cb925050506060880188612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061190a925050506080890189612fa1565b61191391612fea565b87611bfa565b60018055919491935090915050565b6000546001600160a01b031633146119525760405162461bcd60e51b81526004016105b890612c63565b6001600160a01b0381166119b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b8565b6119c081612002565b50565b600080600260015414156119e95760405162461bcd60e51b81526004016105b890612c98565b6002600155611a846119fb8680612f54565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a3d925050506020880188612f54565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408801353061137960608b018b612f54565b9150611b2c8435611a986020870187612fa1565b611aa191612fea565b611aae6040880188612fa1565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611aed925050506060890189612fa1565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061190a9250505060808a018a612fa1565b90506001600160a01b03811663191c918a611b4a6020860186612519565b60208601356040870135611b646080890160608a01613139565b611b7460a08a0160808b01612519565b60405160e087901b6001600160e01b03191681526001600160a01b0395861660048201526024810194909452604484019290925215156064830152909116608482015260a401600060405180830381600087803b158015611bd457600080fd5b505af1158015611be8573d6000803e3d6000fd5b50506001805550919590945092505050565b600083600081518110611c0f57611c0f612ccf565b602002602001015160001415611c755760405162461bcd60e51b815260206004820152602560248201527f4552433230466163746f72793a207a65726f20636170206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016105b8565b600b548711158015611c8657508615155b611ca25760405162461bcd60e51b81526004016105b890612c1a565b6000878152600760209081526040918290208251808401909352546001600160a01b0381168352600160a01b900460ff161515908201819052611d3b5760405162461bcd60e51b815260206004820152602b60248201527f4552433230466163746f72793a20455243373231546f6b656e2054656d706c6160448201526a1d1948191a5cd8589b195960aa1b60648201526084016105b8565b8051611d4690612052565b6001600160a01b0381166000818152600960205260409020805460ff19166001179055909250611dde5760405162461bcd60e51b815260206004820152603e60248201527f455243373231466163746f72793a204661696c656420746f20706572666f726d60448201527f206d696e696d616c206465706c6f79206f662061206e657720746f6b656e000060648201526084016105b8565b80600001516001600160a01b0316826001600160a01b03167f567699dbf7c5f63a51a42fd451f5e065bca0dfc723adf2cc498bbb7cfb780b9089600081518110611e2a57611e2a612ccf565b60200260200101518a600181518110611e4557611e45612ccf565b602002602001015189600081518110611e6057611e60612ccf565b602002602001015188604051611e799493929190613156565b60405180910390a36001600a6000828254611e949190612e17565b90915550506040805160a081018252888152602081018890529081018690526001600160a01b038416608082015260608101859052611ed383826120e2565b50509695505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611f4a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261228f565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc591906130ba565b611fcf9190612e17565b6040516001600160a01b038516602482015260448101829052909150611f4a90859063095ea7b360e01b90606401611f13565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b604080516003808252608082019092528391600091906020820160608036833701905050905082608001518160008151811061212057612120612ccf565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061215157612151612ccf565b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061218257612182612ccf565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663b3998be08460000151856020015184876040015188606001516040518663ffffffff1660e01b81526004016121e695949392919061325b565b6020604051808303816000875af1158015612205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122299190612eef565b611f4a5760405162461bcd60e51b815260206004820152603160248201527f4552433230466163746f72793a20556e61626c6520746f20696e697469616c696044820152707a6520746f6b656e20696e7374616e636560781b60648201526084016105b8565b60006122e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123669092919063ffffffff16565b80519091501561236157808060200190518101906123029190612eef565b6123615760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b8565b505050565b6060612375848460008561237f565b90505b9392505050565b6060824710156123e05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b8565b843b61242e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b8565b600080866001600160a01b0316858760405161244a9190613304565b60006040518083038185875af1925050503d8060008114612487576040519150601f19603f3d011682016040523d82523d6000602084013e61248c565b606091505b509150915061249c8282866124a7565b979650505050505050565b606083156124b6575081612378565b8251156124c65782518084602001fd5b8160405162461bcd60e51b81526004016105b89190613320565b6000602082840312156124f257600080fd5b5035919050565b6001600160a01b03811681146119c057600080fd5b8035610d5b816124f9565b60006020828403121561252b57600080fd5b8135612378816124f9565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b038111828210171561256f5761256f612536565b60405290565b604051601f8201601f191681016001600160401b038111828210171561259d5761259d612536565b604052919050565b60006001600160401b038211156125be576125be612536565b5060051b60200190565b600082601f8301126125d957600080fd5b81356001600160401b038111156125f2576125f2612536565b612605601f8201601f1916602001612575565b81815284602083860101111561261a57600080fd5b816020850160208301376000918101602001919091529392505050565b600061264a612645846125a5565b612575565b8381529050602080820190600585901b84018681111561266957600080fd5b845b818110156126a45780356001600160401b0381111561268a5760008081fd5b612696898289016125c8565b85525092820192820161266b565b505050509392505050565b600082601f8301126126c057600080fd5b813560206126d0612645836125a5565b82815260059290921b840181019181810190868411156126ef57600080fd5b8286015b84811015612713578035612706816124f9565b83529183019183016126f3565b509695505050505050565b600082601f83011261272f57600080fd5b8135602061273f612645836125a5565b82815260059290921b8401810191818101908684111561275e57600080fd5b8286015b848110156127135780358352918301918301612762565b600082601f83011261278a57600080fd5b61237883833560208501612637565b600080600080600060a086880312156127b157600080fd5b8535945060208601356001600160401b03808211156127cf57600080fd5b818801915088601f8301126127e357600080fd5b6127f289833560208501612637565b9550604088013591508082111561280857600080fd5b61281489838a016126af565b9450606088013591508082111561282a57600080fd5b61283689838a0161271e565b9350608088013591508082111561284c57600080fd5b5061285988828901612779565b9150509295509295909350565b803560ff81168114610d5b57600080fd5b6000602080838503121561288a57600080fd5b82356001600160401b03808211156128a157600080fd5b818501915085601f8301126128b557600080fd5b81356128c3612645826125a5565b81815260059190911b830184019084810190888311156128e257600080fd5b8585015b838110156129da578035858111156128fe5760008081fd5b8601610140818c03601f19018113156129175760008081fd5b61291f61254c565b61292a8a840161250e565b8152604061293981850161250e565b8b830152606080850135828401526080915061295682860161250e565b9083015260a061296785820161250e565b8284015260c0915081850135818401525060e0612985818601612866565b8284015261010091508185013581840152506101208085013582840152838501359350898411156129b857600091508182fd5b6129c68f8d868801016125c8565b9083015250855250509186019186016128e6565b5098975050505050505050565b600080600080600060a086880312156129ff57600080fd5b85356001600160401b0380821115612a1657600080fd5b612a2289838a016125c8565b96506020880135915080821115612a3857600080fd5b612a4489838a016125c8565b95506040880135945060608801359150612a5d826124f9565b90925060808701359080821115612a7357600080fd5b50612859888289016125c8565b600060808284031215612a9257600080fd5b50919050565b600060a08284031215612a9257600080fd5b600060608284031215612a9257600080fd5b600080600060608486031215612ad157600080fd5b83356001600160401b0380821115612ae857600080fd5b612af487838801612a80565b94506020860135915080821115612b0a57600080fd5b612b1687838801612a98565b93506040860135915080821115612b2c57600080fd5b50612b3986828701612aaa565b9150509250925092565b60008060408385031215612b5657600080fd5b82356001600160401b0380821115612b6d57600080fd5b612b7986838701612a80565b93506020850135915080821115612b8f57600080fd5b50612b9c85828601612a98565b9150509250929050565b600080600060e08486031215612bbb57600080fd5b83356001600160401b0380821115612bd257600080fd5b612bde87838801612a80565b94506020860135915080821115612bf457600080fd5b50612c0186828701612a98565b925050612c118560408601612a98565b90509250925092565b60208082526029908201527f4552433230466163746f72793a2054656d706c61746520696e64657820646f656040820152681cdb9d08195e1a5cdd60ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215612cfa57600080fd5b8351612d05816124f9565b6020850151909350612d16816124f9565b80925050604084015190509250925092565b60005b83811015612d43578181015183820152602001612d2b565b83811115611f4a5750506000910152565b60008151808452612d6c816020860160208601612d28565b601f01601f19169290920160200192915050565b600061012060018060a01b03808d1684528b6020850152808b166040850152808a1660608501525087608084015260ff871660a08401528560c08401528460e084015280610100840152612dd681840185612d54565b9c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415612e1057612e10612de6565b5060010190565b60008219821115612e2a57612e2a612de6565b500190565b6020808252602c908201527f4552433732314454466163746f72793a2054656d706c61746520696e6465782060408201526b191bd95cdb9d08195e1a5cdd60a21b606082015260800190565b600060018060a01b03808916835260c06020840152612e9d60c0840189612d54565b8381036040850152612eaf8189612d54565b90508187166060850152818616608085015283810360a0850152612ed38186612d54565b9a9950505050505050505050565b80151581146119c057600080fd5b600060208284031215612f0157600080fd5b815161237881612ee1565b608081526000612f1f6080830187612d54565b6001600160a01b03861660208401528281036040840152612f408186612d54565b9050828103606084015261249c8185612d54565b6000808335601e19843603018112612f6b57600080fd5b8301803591506001600160401b03821115612f8557600080fd5b602001915036819003821315612f9a57600080fd5b9250929050565b6000808335601e19843603018112612fb857600080fd5b8301803591506001600160401b03821115612fd257600080fd5b6020019150600581901b3603821315612f9a57600080fd5b6000612378368484612637565b8183526000602080850194508260005b8581101561303557813561301a816124f9565b6001600160a01b031687529582019590820190600101613007565b509495945050505050565b81835260006001600160fb1b0383111561305957600080fd5b8260051b8083602087013760009401602001938452509192915050565b6001600160a01b038616815260606020820181905260009061309b9083018688612ff7565b82810360408401526130ae818587613040565b98975050505050505050565b6000602082840312156130cc57600080fd5b5051919050565b6060815260006130e760608301888a613040565b82810360208401526130fa818789613040565b9050828103604084015261310f818587612ff7565b9998505050505050505050565b60006020828403121561312e57600080fd5b8151612378816124f9565b60006020828403121561314b57600080fd5b813561237881612ee1565b6080815260006131696080830187612d54565b828103602084015261317b8187612d54565b604084019590955250506001600160a01b039190911660609091015292915050565b600081518084526020808501945080840160005b838110156130355781516001600160a01b0316875295820195908201906001016131b1565b600081518084526020808501945080840160005b83811015613035578151875295820195908201906001016131ea565b600081518084526020808501808196508360051b8101915082860160005b8581101561324e57828403895261323c848351612d54565b98850198935090840190600101613224565b5091979650505050505050565b600060a0820160a0835280885180835260c08501915060c08160051b86010192506020808b0160005b838110156132b25760bf198887030185526132a0868351612d54565b95509382019390820190600101613284565b5050858403818701525050506132c8818861319d565b905082810360408401526132dc818761319d565b905082810360608401526132f081866131d6565b905082810360808401526130ae8185613206565b60008251613316818460208701612d28565b9190910192915050565b6020815260006123786020830184612d5456fea2646970667358221220bcb5079a8dfc5ac89d9c8b15c3e22a453d4e07b4f9e047affc6d9f1866d96f7264736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/addresses/address.json b/artifacts/addresses/address.json new file mode 100644 index 000000000..dacd36c11 --- /dev/null +++ b/artifacts/addresses/address.json @@ -0,0 +1,21 @@ +{ + "rinkeby": { + "chainId": 4, + "Ocean": "0x5e8DCB2AfA23844bcc311B00Ad1A0C30025aADE9", + "OPFCommunityFeeCollector": "0x600ED0935FDA70F2d0b7Cf740723a8b89FCD68A1", + "startBlock": 9928186, + "poolTemplate": "0xdF0a5F729ad9aa090B1Bcf5F9188639DB0237101", + "Router": "0xBfe244735B6f578e471a0A70E86ffFE6c2E6f7a3", + "FixedPrice": "0xd7C8B30cd1d7e8364Cc4B4c2C58D1712551c1C79", + "Staking": "0x1EFd65ee89ab925b8189d728E56C44732b304E9B", + "ERC20Template": { + "1": "0x4b4771b7f4F274D58a5E1afe637bB0333129040A", + "2": "0x88E3285C839C3E84Ed94efd5CBB83428126ceb72" + }, + "ERC721Template": { + "1": "0xb853d0a5e34c6780349cDd66b1768Dd5772570A7" + }, + "Dispenser": "0x0867d17a99459291D399aD58bD4d436dD3F8B387", + "ERC721Factory": "0xeF6A78E22170817EB97E67e176d41358761F7dEd" + } +} \ No newline at end of file diff --git a/artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.dbg.json b/artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.dbg.json new file mode 100644 index 000000000..50ebac313 --- /dev/null +++ b/artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json b/artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json new file mode 100644 index 000000000..367d7f2a3 --- /dev/null +++ b/artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json @@ -0,0 +1,116 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OPFCommunityFeeCollector", + "sourceName": "contracts/communityFee/OPFCommunityFeeCollector.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "newCollector", + "type": "address" + }, + { + "internalType": "address", + "name": "OPFOwnerAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "newCollector", + "type": "address" + } + ], + "name": "changeCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "withdrawToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610a9b380380610a9b83398101604081905261002f9161023a565b6100383361010a565b6001600160a01b0382161580159061005857506001600160a01b03811615155b6100df5760405162461bcd60e51b815260206004820152604760248201527f4f5046436f6d6d756e697479466565436f6c6c6563746f723a20636f6c6c656360448201527f746f722061646472657373206f72206f776e657220697320696e76616c6964206064820152666164647265737360c81b608482015260a4015b60405180910390fd5b600180546001600160a01b0319166001600160a01b0384161790556101038161015a565b5050610274565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146101b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100d6565b6001600160a01b0381166102195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100d6565b6102228161010a565b50565b6001600160a01b038116811461022257600080fd5b6000806040838503121561024d57600080fd5b825161025881610225565b602084015190925061026981610225565b809150509250929050565b610818806102836000396000f3fe6080604052600436106100555760003560e01c8063715018a6146100575780637781127e1461006c578063894760691461008c5780638da5cb5b146100ac578063e086e5ec146100d8578063f2fde38b146100e0575b005b34801561006357600080fd5b50610055610100565b34801561007857600080fd5b506100556100873660046106d6565b61013f565b34801561009857600080fd5b506100556100a73660046106d6565b6101fd565b3480156100b857600080fd5b50600054604080516001600160a01b039092168252519081900360200190f35b610055610301565b3480156100ec57600080fd5b506100556100fb3660046106d6565b61033a565b6000546001600160a01b031633146101335760405162461bcd60e51b815260040161012a906106f3565b60405180910390fd5b61013d60006103ce565b565b6000546001600160a01b031633146101695760405162461bcd60e51b815260040161012a906106f3565b6001600160a01b0381166101db5760405162461bcd60e51b815260206004820152603360248201527f4f5046436f6d6d756e697479466565436f6c6c6563746f723a20696e76616c696044820152726420636f6c6c6563746f72206164647265737360681b606482015260840161012a565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166102795760405162461bcd60e51b815260206004820152603860248201527f4f5046436f6d6d756e697479466565436f6c6c6563746f723a20696e76616c6960448201527f6420746f6b656e20636f6e747261637420616464726573730000000000000000606482015260840161012a565b6001546040516370a0823160e01b81523060048201526102fe916001600160a01b0390811691908416906370a0823190602401602060405180830381865afa1580156102c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ed9190610728565b6001600160a01b038416919061041e565b50565b6001546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156102fe573d6000803e3d6000fd5b6000546001600160a01b031633146103645760405162461bcd60e51b815260040161012a906106f3565b6001600160a01b0381166103c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161012a565b6102fe815b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610470908490610475565b505050565b60006104ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166105479092919063ffffffff16565b80519091501561047057808060200190518101906104e89190610741565b6104705760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161012a565b60606105568484600085610560565b90505b9392505050565b6060824710156105c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161012a565b843b61060f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012a565b600080866001600160a01b0316858760405161062b9190610793565b60006040518083038185875af1925050503d8060008114610668576040519150601f19603f3d011682016040523d82523d6000602084013e61066d565b606091505b509150915061067d828286610688565b979650505050505050565b60608315610697575081610559565b8251156106a75782518084602001fd5b8160405162461bcd60e51b815260040161012a91906107af565b6001600160a01b03811681146102fe57600080fd5b6000602082840312156106e857600080fd5b8135610559816106c1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561073a57600080fd5b5051919050565b60006020828403121561075357600080fd5b8151801515811461055957600080fd5b60005b8381101561077e578181015183820152602001610766565b8381111561078d576000848401525b50505050565b600082516107a5818460208701610763565b9190910192915050565b60208152600082518060208401526107ce816040850160208701610763565b601f01601f1916919091016040019291505056fea2646970667358221220347b67b014d4f74d6e63111ae00b3fa9f472c30cdc911ca79369390b015f72ac64736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c8063715018a6146100575780637781127e1461006c578063894760691461008c5780638da5cb5b146100ac578063e086e5ec146100d8578063f2fde38b146100e0575b005b34801561006357600080fd5b50610055610100565b34801561007857600080fd5b506100556100873660046106d6565b61013f565b34801561009857600080fd5b506100556100a73660046106d6565b6101fd565b3480156100b857600080fd5b50600054604080516001600160a01b039092168252519081900360200190f35b610055610301565b3480156100ec57600080fd5b506100556100fb3660046106d6565b61033a565b6000546001600160a01b031633146101335760405162461bcd60e51b815260040161012a906106f3565b60405180910390fd5b61013d60006103ce565b565b6000546001600160a01b031633146101695760405162461bcd60e51b815260040161012a906106f3565b6001600160a01b0381166101db5760405162461bcd60e51b815260206004820152603360248201527f4f5046436f6d6d756e697479466565436f6c6c6563746f723a20696e76616c696044820152726420636f6c6c6563746f72206164647265737360681b606482015260840161012a565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166102795760405162461bcd60e51b815260206004820152603860248201527f4f5046436f6d6d756e697479466565436f6c6c6563746f723a20696e76616c6960448201527f6420746f6b656e20636f6e747261637420616464726573730000000000000000606482015260840161012a565b6001546040516370a0823160e01b81523060048201526102fe916001600160a01b0390811691908416906370a0823190602401602060405180830381865afa1580156102c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ed9190610728565b6001600160a01b038416919061041e565b50565b6001546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156102fe573d6000803e3d6000fd5b6000546001600160a01b031633146103645760405162461bcd60e51b815260040161012a906106f3565b6001600160a01b0381166103c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161012a565b6102fe815b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610470908490610475565b505050565b60006104ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166105479092919063ffffffff16565b80519091501561047057808060200190518101906104e89190610741565b6104705760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161012a565b60606105568484600085610560565b90505b9392505050565b6060824710156105c15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161012a565b843b61060f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012a565b600080866001600160a01b0316858760405161062b9190610793565b60006040518083038185875af1925050503d8060008114610668576040519150601f19603f3d011682016040523d82523d6000602084013e61066d565b606091505b509150915061067d828286610688565b979650505050505050565b60608315610697575081610559565b8251156106a75782518084602001fd5b8160405162461bcd60e51b815260040161012a91906107af565b6001600160a01b03811681146102fe57600080fd5b6000602082840312156106e857600080fd5b8135610559816106c1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561073a57600080fd5b5051919050565b60006020828403121561075357600080fd5b8151801515811461055957600080fd5b60005b8381101561077e578181015183820152602001610766565b8381111561078d576000848401525b50505050565b600082516107a5818460208701610763565b9190910192915050565b60208152600082518060208401526107ce816040850160208701610763565b601f01601f1916919091016040019291505056fea2646970667358221220347b67b014d4f74d6e63111ae00b3fa9f472c30cdc911ca79369390b015f72ac64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/pools/FactoryRouter.sol/FactoryRouter.dbg.json b/artifacts/pools/FactoryRouter.sol/FactoryRouter.dbg.json new file mode 100644 index 000000000..50ebac313 --- /dev/null +++ b/artifacts/pools/FactoryRouter.sol/FactoryRouter.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/pools/FactoryRouter.sol/FactoryRouter.json b/artifacts/pools/FactoryRouter.sol/FactoryRouter.json new file mode 100644 index 000000000..f26831450 --- /dev/null +++ b/artifacts/pools/FactoryRouter.sol/FactoryRouter.json @@ -0,0 +1,1086 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FactoryRouter", + "sourceName": "contracts/pools/FactoryRouter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_routerOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "_oceanToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_bpoolTemplate", + "type": "address" + }, + { + "internalType": "address", + "name": "_opfCollector", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_preCreatedPools", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newBPoolAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "registeredBy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "basetokenAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "bpoolTemplateAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "ssAddress", + "type": "address" + } + ], + "name": "BPoolCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "DispenserContractAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "DispenserContractRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "FactoryContractChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "FixedRateContractAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "FixedRateContractRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "instance", + "type": "address" + } + ], + "name": "InstanceDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isOcean", + "type": "bool" + } + ], + "name": "NewPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newFee", + "type": "uint256" + } + ], + "name": "OPFFeeChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "PoolTemplateAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "PoolTemplateRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRouter", + "type": "address" + } + ], + "name": "RouterChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "SSContractAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "SSContractRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenRemoved", + "type": "event" + }, + { + "inputs": [], + "name": "BONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BPOW_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXIT_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INIT_POOL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_IN_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_OUT_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_TOTAL_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + } + ], + "name": "addDispenserContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + } + ], + "name": "addFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_fixedRate", + "type": "address" + } + ], + "name": "addFixedRateContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oceanTokenAddress", + "type": "address" + } + ], + "name": "addOceanToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "poolTemplate", + "type": "address" + } + ], + "name": "addPoolTemplate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ssContract", + "type": "address" + } + ], + "name": "addSSContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "exchangeIds", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "source", + "type": "address" + }, + { + "internalType": "enum FactoryRouter.operationType", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountsIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountsOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapMarketFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "marketFeeAddress", + "type": "address" + } + ], + "internalType": "struct FactoryRouter.Operations[]", + "name": "_operations", + "type": "tuple[]" + } + ], + "name": "buyDTBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_routerOwner", + "type": "address" + } + ], + "name": "changeRouterOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + }, + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "deployDispenser", + "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": "deployFixedRate", + "outputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[2]", + "name": "tokens", + "type": "address[2]" + }, + { + "internalType": "uint256[]", + "name": "ssParams", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapFees", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + } + ], + "name": "deployPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "dispenser", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "fixedPrice", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fixedRate", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "baseToken", + "type": "address" + } + ], + "name": "getOPFFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "poolTemplate", + "type": "address" + } + ], + "name": "isPoolTemplate", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "oceanTokens", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opfCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + } + ], + "name": "removeDispenserContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_fixedRate", + "type": "address" + } + ], + "name": "removeFixedRateContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oceanTokenAddress", + "type": "address" + } + ], + "name": "removeOceanToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "poolTemplate", + "type": "address" + } + ], + "name": "removePoolTemplate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ssContract", + "type": "address" + } + ], + "name": "removeSSContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "routerOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "ssContracts", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "swapOceanFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newSwapOceanFee", + "type": "uint256" + } + ], + "name": "updateOPFFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405266038d7ea4c680006005553480156200001c57600080fd5b506040516200369a3803806200369a8339810160408190526200003f91620003bc565b8282826001600160a01b038316620000b45760405162461bcd60e51b815260206004820152602d60248201527f42466163746f72793a20696e76616c69642062706f6f6c2074656d706c61746560448201526c207a65726f206164647265737360981b60648201526084015b60405180910390fd5b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601660248201527f42466163746f72793a207a65726f2061646472657373000000000000000000006044820152606401620000ab565b600080546001600160a01b0319166001600160a01b03841617905562000153836001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b805115620002025760005b8151811015620002005760006001600160a01b0316336001600160a01b0316838381518110620001925762000192620004dc565b602090810291909101810151604080516000808252938101849052908101929092526001600160a01b0316907fbb6121447d29a04cc37bfd93cdf6a9dd08229f2d941116c1528f04698c4e790e9060600160405180910390a480620001f781620004f2565b9150506200015e565b505b5050506001600160a01b038516620002695760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c696420726f75746572206f776044820152623732b960e91b6064820152608401620000ab565b6001600160a01b038216620002cd5760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c6964206f7066436f6c6c65636044820152623a37b960e91b6064820152608401620000ab565b6001600160a01b038416620003385760405162461bcd60e51b815260206004820152602a60248201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604482015269656e206164647265737360b01b6064820152608401620000ab565b50600280546001600160a01b03199081166001600160a01b039687161790915560008054909116918516919091178155919092168152600660205260409020805460ff19166001179055506200051c565b80516001600160a01b0381168114620003a157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215620003d557600080fd5b620003e08662000389565b94506020620003f181880162000389565b9450620004016040880162000389565b9350620004116060880162000389565b60808801519093506001600160401b03808211156200042f57600080fd5b818901915089601f8301126200044457600080fd5b815181811115620004595762000459620003a6565b8060051b604051601f19603f83011681018181108582111715620004815762000481620003a6565b60405291825284820192508381018501918c831115620004a057600080fd5b938501935b82851015620004c957620004b98562000389565b84529385019392850192620004a5565b8096505050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200051557634e487b7160e01b600052601160045260246000fd5b5060010190565b61316e806200052c6000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c8063b19aaac611610151578063d86850cc116100c3578063e525f99c11610087578063e525f99c14610511578063ec09302114610524578063ecdda5881461052c578063ee3bc6351461053f578063ee661f6714610552578063f8154aee1461057557600080fd5b8063d86850cc146104bf578063de9a95a7146104e2578063e183fb3f146104f5578063e193faad146104fe578063e4a28a521461028e57600080fd5b8063c07c00fe11610115578063c07c00fe14610452578063c1c436a51461047e578063c36596a6146102d7578063c45a015514610491578063c6580d12146104a4578063d629a00a146104ac57600080fd5b8063b19aaac614610427578063b7b800a41461041f578063ba019dab1461043a578063bc063e1a14610442578063bc694ea21461044a57600080fd5b8063802d1422116101ea578063992e2a92116101ae578063992e2a92146103bb5780639cdfa6ad146103c35780639f2c010a146103d65780639f587d4d146103e9578063a28f78f11461040c578063b0e0d1361461041f57600080fd5b8063802d14221461035a57806382449375146103855780638552730a14610398578063867378c5146103ab5780639381cd2b146103b357600080fd5b8063218b53821161023c578063218b5382146102d757806329ce1ec5146102e657806347e14094146102f95780636c9fb6121461030c57806376c7a3c71461031f57806379463a0e1461032757600080fd5b80630318ad661461027957806309a3bbe41461028e57806316592614146102a957806316d9cb3d146102bc578063189d00ca146102cf575b600080fd5b61028c610287366004612844565b610588565b005b61029661062e565b6040519081526020015b60405180910390f35b61028c6102b7366004612844565b610644565b61028c6102ca366004612844565b6106de565b61029661077b565b610296670de0b6b3a764000081565b61028c6102f4366004612844565b610792565b61028c610307366004612844565b6108bd565b61028c61031a366004612844565b610957565b6102966109f4565b61034a610335366004612844565b60066020526000908152604090205460ff1681565b60405190151581526020016102a0565b60045461036d906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b6102966103933660046128ad565b610a09565b60025461036d906001600160a01b031681565b610296610b8e565b610296610ba5565b610296610bb8565b61028c6103d1366004612844565b610bd6565b61028c6103e4366004612844565b610c70565b61034a6103f7366004612844565b60086020526000908152604090205460ff1681565b60005461036d906001600160a01b031681565b610296600281565b61028c610435366004612844565b610d0a565b610296600181565b610296610d98565b610296610dab565b61034a610460366004612844565b6001600160a01b031660009081526001602052604090205460ff1690565b61028c61048c366004612930565b610dca565b60035461036d906001600160a01b031681565b610296600081565b61028c6104ba366004612949565b610e31565b61034a6104cd366004612844565b60096020526000908152604090205460ff1681565b61028c6104f0366004612844565b610fb4565b61029660055481565b61028c61050c366004612844565b611051565b61028c61051f366004612844565b6110d9565b6102966111a5565b61028c61053a3660046129b9565b6111b8565b61036d61054d366004612a2f565b611cc4565b61034a610560366004612844565b60076020526000908152604090205460ff1681565b610296610583366004612844565b6120bc565b6002546001600160a01b031633146105bb5760405162461bcd60e51b81526004016105b290612adf565b60405180910390fd5b6001600160a01b0381166105e15760405162461bcd60e51b81526004016105b290612b0f565b6001600160a01b038116600081815260066020526040808220805460ff191660011790555133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e791a350565b610641670de0b6b3a76400006032612b6f565b81565b6002546001600160a01b0316331461066e5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166106945760405162461bcd60e51b81526004016105b290612b8e565b6001600160a01b038116600081815260096020526040808220805460ff191690555133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b391a350565b6002546001600160a01b031633146107085760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b03811661072e5760405162461bcd60e51b81526004016105b290612bd7565b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b391a350565b6106416402540be400670de0b6b3a7640000612c20565b6002546001600160a01b031633146107bc5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166108225760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016105b2565b6003546001600160a01b0316156108715760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016105b2565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b6002546001600160a01b031633146108e75760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b03811661090d5760405162461bcd60e51b81526004016105b290612c42565b6001600160a01b038116600081815260076020526040808220805460ff191690555133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea48791a350565b6002546001600160a01b031633146109815760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166109a75760405162461bcd60e51b81526004016105b290612c42565b6001600160a01b038116600081815260076020526040808220805460ff191660011790555133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e54491a350565b610641620f4240670de0b6b3a7640000612c20565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190612c9c565b610a925760405162461bcd60e51b81526004016105b290612cb7565b6001600160a01b03861660009081526008602052604090205460ff16610b0d5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016105b2565b60405163012c327560e01b81526001600160a01b0387169063012c327590610b419033908990899089908990600401612d02565b6020604051808303816000875af1158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b849190612d91565b9695505050505050565b61064164e8d4a51000670de0b6b3a7640000612c20565b610641670de0b6b3a76400006064612b6f565b610bcb6003670de0b6b3a7640000612c20565b610641906001612daa565b6002546001600160a01b03163314610c005760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b038116610c265760405162461bcd60e51b81526004016105b290612b0f565b6001600160a01b038116600081815260066020526040808220805460ff191690555133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca9046091a350565b6002546001600160a01b03163314610c9a5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b038116610cc05760405162461bcd60e51b81526004016105b290612bd7565b6001600160a01b038116600081815260086020526040808220805460ff191690555133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b91a350565b6002546001600160a01b03163314610d345760405162461bcd60e51b81526004016105b290612adf565b610d5f816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6040516001600160a01b0382169033907fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac90600090a350565b610641600a670de0b6b3a7640000612c20565b6001610dc0670de0b6b3a76400006002612b6f565b6106419190612dc2565b6002546001600160a01b03163314610df45760405162461bcd60e51b81526004016105b290612adf565b600581905560405181815233907faacba7241fc949e401522d9591e2686bc54ecd5c340c571e85c45fdb57dc87389060200160405180910390a250565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa158015610e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9d9190612c9c565b610eb95760405162461bcd60e51b81526004016105b290612cb7565b6001600160a01b03861660009081526009602052604090205460ff16610f335760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016105b2565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b158015610f9457600080fd5b505af1158015610fa8573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166110045760405162461bcd60e51b81526004016105b290612b8e565b6001600160a01b038116600081815260096020526040808220805460ff191660011790555133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c91a350565b6002546001600160a01b0316331461107b5760405162461bcd60e51b81526004016105b290612adf565b6110a0816001600160a01b03166000908152600160205260409020805460ff19169055565b6040516001600160a01b0382169033907fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb290600090a350565b6002546001600160a01b031633146111035760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166111595760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016105b2565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6106416002670de0b6b3a7640000612c20565b60328111156112145760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016105b2565b60005b81811015611cbf576000604051806060016040528085858581811061123e5761123e612dd9565b9050610140020160600160208101906112579190612844565b6001600160a01b0316815260200185858581811061127757611277612dd9565b9050610140020160a00160208101906112909190612844565b6001600160a01b031681526020018585858181106112b0576112b0612dd9565b905061014002016101200160208101906112ca9190612844565b6001600160a01b03166001600160a01b031681525090506000604051806080016040528086868681811061130057611300612dd9565b9050610140020160800135815260200186868681811061132257611322612dd9565b9050610140020160c00135815260200186868681811061134457611344612dd9565b9050610140020160e00135815260200186868681811061136657611366612dd9565b90506101400201610100013581525090506000600381111561138a5761138a612def565b85858581811061139c5761139c612dd9565b9050610140020160400160208101906113b59190612e05565b60038111156113c6576113c6612def565b14156115955761142a33308787878181106113e3576113e3612dd9565b905061014002016080013588888881811061140057611400612dd9565b9050610140020160600160208101906114199190612844565b6001600160a01b03169291906120f2565b6114b085858581811061143f5761143f612dd9565b9050610140020160200160208101906114589190612844565b86868681811061146a5761146a612dd9565b905061014002016080013587878781811061148757611487612dd9565b9050610140020160600160208101906114a09190612844565b6001600160a01b03169190612163565b60008585858181106114c4576114c4612dd9565b9050610140020160200160208101906114dd9190612844565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b815260040161150a929190612e26565b60408051808303816000875af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190612e8b565b50905061158f338288888881811061156657611566612dd9565b9050610140020160a001602081019061157f9190612844565b6001600160a01b03169190612215565b50611caa565b60018585858181106115a9576115a9612dd9565b9050610140020160400160208101906115c29190612e05565b60038111156115d3576115d3612def565b141561184e5760008585858181106115ed576115ed612dd9565b9050610140020160200160208101906116069190612844565b6001600160a01b031663caa0114887878781811061162657611626612dd9565b90506101400201606001602081019061163f9190612844565b88888881811061165157611651612dd9565b9050610140020160a001602081019061166a9190612844565b89898981811061167c5761167c612dd9565b9050610140020160c001358a8a8a81811061169957611699612dd9565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190612d91565b905061173e33308389898981811061140057611400612dd9565b61177f86868681811061175357611753612dd9565b90506101400201602001602081019061176c9190612844565b8288888881811061148757611487612dd9565b85858581811061179157611791612dd9565b9050610140020160200160208101906117aa9190612844565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b81526004016117d7929190612e26565b60408051808303816000875af11580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190612e8b565b505061158f3387878781811061183157611831612dd9565b9050610140020160c0013588888881811061156657611566612dd9565b600285858581811061186257611862612dd9565b90506101400201604001602081019061187b9190612e05565b600381111561188c5761188c612def565b1415611bc15760008585858181106118a6576118a6612dd9565b9050610140020160200160208101906118bf9190612844565b6001600160a01b0316634c87087d8787878181106118df576118df612dd9565b90506101400201600001356040518263ffffffff1660e01b815260040161190891815260200190565b61018060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190612eaf565b50505050505050505050915050600086868681811061196b5761196b612dd9565b9050610140020160200160208101906119849190612844565b6001600160a01b031663c99733a78888888181106119a4576119a4612dd9565b90506101400201600001358989898181106119c1576119c1612dd9565b9050610140020160c001356040518363ffffffff1660e01b81526004016119f2929190918252602082015260400190565b608060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190612f63565b5050509050611a503330838a8a8a81811061140057611400612dd9565b611a91878787818110611a6557611a65612dd9565b905061014002016020016020810190611a7e9190612844565b8289898981811061148757611487612dd9565b868686818110611aa357611aa3612dd9565b905061014002016020016020810190611abc9190612844565b6001600160a01b031663825b5cd6888888818110611adc57611adc612dd9565b9050610140020160000135898989818110611af957611af9612dd9565b9050610140020160c001358a8a8a818110611b1657611b16612dd9565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b50505050611bba33888888818110611b9657611b96612dd9565b9050610140020160c00135846001600160a01b03166122159092919063ffffffff16565b5050611caa565b848484818110611bd357611bd3612dd9565b905061014002016020016020810190611bec9190612844565b6001600160a01b0316631d746d83868686818110611c0c57611c0c612dd9565b9050610140020160a0016020810190611c259190612844565b878787818110611c3757611c37612dd9565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b158015611c9157600080fd5b505af1158015611ca5573d6000803e3d6000fd5b505050505b50508080611cb790612f99565b915050611217565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d319190612c9c565b611d4d5760405162461bcd60e51b81526004016105b290612cb7565b6007600084846000818110611d6457611d64612dd9565b9050602002016020810190611d799190612844565b6001600160a01b0316815260208101919091526040016000205460ff16611ded5760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016105b2565b600087876001818110611e0257611e02612dd9565b9050602002013511611e475760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016105b2565b6000611e5960408a0160208b01612844565b9050611ee284846002818110611e7157611e71612dd9565b9050602002016020810190611e869190612844565b85856000818110611e9957611e99612dd9565b9050602002016020810190611eae9190612844565b8a8a6004818110611ec157611ec1612dd9565b90506020020135846001600160a01b03166120f2909392919063ffffffff16565b604080518082018252600091611fa591908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061224592505050565b90506001600160a01b038116611ff55760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016105b2565b6006600061200960408d0160208e01612844565b6001600160a01b0316815260208101919091526040016000205460ff161561206f57604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a26120af565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6001600160a01b03811660009081526006602052604081205460ff16156120e557506000919050565b505060055490565b919050565b6040516001600160a01b038085166024830152831660448201526064810182905261215d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612550565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156121b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d89190612d91565b6121e29190612daa565b6040516001600160a01b03851660248201526044810182905290915061215d90859063095ea7b360e01b90606401612126565b6040516001600160a01b038316602482015260448101829052611cbf90849063a9059cbb60e01b90606401612126565b6000600160008360058151811061225e5761225e612dd9565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166122d15760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016105b2565b60006040518060400160405280846004815181106122f1576122f1612dd9565b6020908102919091018101516001600160a01b03908116835260005416910152835190915061233a908490600590811061232d5761232d612dd9565b6020026020010151612622565b91506001600160a01b03821661239e5760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6000829050806001600160a01b031663c070a6d8856000815181106123c5576123c5612dd9565b602002602001015130886000808d896040518863ffffffff1660e01b81526004016123f6979695949392919061301b565b6020604051808303816000875af1158015612415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124399190612c9c565b61247c5760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016105b2565b8360008151811061248f5761248f612dd9565b60200260200101516001600160a01b03166353f0c3b4886000600281106124b8576124b8612dd9565b6020020151896001602002015186886003815181106124d9576124d9612dd9565b60200260200101518b6040518663ffffffff1660e01b8152600401612502959493929190613081565b6020604051808303816000875af1158015612521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125459190612c9c565b505050949350505050565b60006125a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126b29092919063ffffffff16565b805190915015611cbf57808060200190518101906125c39190612c9c565b611cbf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b2565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60606126c184846000856126cb565b90505b9392505050565b60608247101561272c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b2565b843b61277a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b2565b600080866001600160a01b0316858760405161279691906130e9565b60006040518083038185875af1925050503d80600081146127d3576040519150601f19603f3d011682016040523d82523d6000602084013e6127d8565b606091505b50915091506127e88282866127f3565b979650505050505050565b606083156128025750816126c4565b8251156128125782518084602001fd5b8160405162461bcd60e51b81526004016105b29190613105565b6001600160a01b038116811461284157600080fd5b50565b60006020828403121561285657600080fd5b81356126c48161282c565b60008083601f84011261287357600080fd5b50813567ffffffffffffffff81111561288b57600080fd5b6020830191508360208260051b85010111156128a657600080fd5b9250929050565b6000806000806000606086880312156128c557600080fd5b85356128d08161282c565b9450602086013567ffffffffffffffff808211156128ed57600080fd5b6128f989838a01612861565b9096509450604088013591508082111561291257600080fd5b5061291f88828901612861565b969995985093965092949392505050565b60006020828403121561294257600080fd5b5035919050565b60008060008060008060c0878903121561296257600080fd5b863561296d8161282c565b9550602087013561297d8161282c565b94506040870135935060608701359250608087013561299b8161282c565b915060a08701356129ab8161282c565b809150509295509295509295565b600080602083850312156129cc57600080fd5b823567ffffffffffffffff808211156129e457600080fd5b818501915085601f8301126129f857600080fd5b813581811115612a0757600080fd5b86602061014083028501011115612a1d57600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a031215612a4a57600080fd5b6040880189811115612a5b57600080fd5b8897503567ffffffffffffffff80821115612a7557600080fd5b612a818b838c01612861565b909850965060608a0135915080821115612a9a57600080fd5b612aa68b838c01612861565b909650945060808a0135915080821115612abf57600080fd5b50612acc8a828b01612861565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604082015269656e206164647265737360b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612b8957612b89612b59565b500290565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082612c3d57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b805180151581146120ed57600080fd5b600060208284031215612cae57600080fd5b6126c482612c8c565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015612d51578435612d3d8161282c565b841682529382019390820190600101612d2a565b5085810360408701528681526001600160fb1b03871115612d7157600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215612da357600080fd5b5051919050565b60008219821115612dbd57612dbd612b59565b500190565b600082821015612dd457612dd4612b59565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215612e1757600080fd5b8135600481106126c457600080fd5b60e08101818460005b6003811015612e575781516001600160a01b0316835260209283019290910190600101612e2f565b505050606082018360005b6004811015612e81578151835260209283019290910190600101612e62565b5050509392505050565b60008060408385031215612e9e57600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215612ed257600080fd5b8c51612edd8161282c565b60208e0151909c50612eee8161282c565b60408e015160608f0151919c509a50612f068161282c565b60808e015160a08f0151919a5098509650612f2360c08e01612c8c565b955060e08d015194506101008d015193506101208d015192506101408d01519150612f516101608e01612c8c565b90509295989b509295989b509295989b565b60008060008060808587031215612f7957600080fd5b505082516020840151604085015160609095015191969095509092509050565b6000600019821415612fad57612fad612b59565b5060010190565b600081518084526020808501945080840160005b83811015612fe457815187529582019590820190600101612fc8565b509495945050505050565b8060005b600281101561215d5781516001600160a01b0316845260209384019390910190600101612ff3565b6001600160a01b038881168252871660208201526101206040820181905260009061304883820189612fb4565b9150508515156060830152841515608083015261306860a0830185612fef565b61307560e0830184612fef565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a0608082018190526000906127e890830184612fb4565b60005b838110156130d85781810151838201526020016130c0565b8381111561215d5750506000910152565b600082516130fb8184602087016130bd565b9190910192915050565b60208152600082518060208401526131248160408501602087016130bd565b601f01601f1916919091016040019291505056fea2646970667358221220ce2d7833bf1f1217d379dd680ba9e505dd815bfe88070670cc4e0ea6b50384eb64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c8063b19aaac611610151578063d86850cc116100c3578063e525f99c11610087578063e525f99c14610511578063ec09302114610524578063ecdda5881461052c578063ee3bc6351461053f578063ee661f6714610552578063f8154aee1461057557600080fd5b8063d86850cc146104bf578063de9a95a7146104e2578063e183fb3f146104f5578063e193faad146104fe578063e4a28a521461028e57600080fd5b8063c07c00fe11610115578063c07c00fe14610452578063c1c436a51461047e578063c36596a6146102d7578063c45a015514610491578063c6580d12146104a4578063d629a00a146104ac57600080fd5b8063b19aaac614610427578063b7b800a41461041f578063ba019dab1461043a578063bc063e1a14610442578063bc694ea21461044a57600080fd5b8063802d1422116101ea578063992e2a92116101ae578063992e2a92146103bb5780639cdfa6ad146103c35780639f2c010a146103d65780639f587d4d146103e9578063a28f78f11461040c578063b0e0d1361461041f57600080fd5b8063802d14221461035a57806382449375146103855780638552730a14610398578063867378c5146103ab5780639381cd2b146103b357600080fd5b8063218b53821161023c578063218b5382146102d757806329ce1ec5146102e657806347e14094146102f95780636c9fb6121461030c57806376c7a3c71461031f57806379463a0e1461032757600080fd5b80630318ad661461027957806309a3bbe41461028e57806316592614146102a957806316d9cb3d146102bc578063189d00ca146102cf575b600080fd5b61028c610287366004612844565b610588565b005b61029661062e565b6040519081526020015b60405180910390f35b61028c6102b7366004612844565b610644565b61028c6102ca366004612844565b6106de565b61029661077b565b610296670de0b6b3a764000081565b61028c6102f4366004612844565b610792565b61028c610307366004612844565b6108bd565b61028c61031a366004612844565b610957565b6102966109f4565b61034a610335366004612844565b60066020526000908152604090205460ff1681565b60405190151581526020016102a0565b60045461036d906001600160a01b031681565b6040516001600160a01b0390911681526020016102a0565b6102966103933660046128ad565b610a09565b60025461036d906001600160a01b031681565b610296610b8e565b610296610ba5565b610296610bb8565b61028c6103d1366004612844565b610bd6565b61028c6103e4366004612844565b610c70565b61034a6103f7366004612844565b60086020526000908152604090205460ff1681565b60005461036d906001600160a01b031681565b610296600281565b61028c610435366004612844565b610d0a565b610296600181565b610296610d98565b610296610dab565b61034a610460366004612844565b6001600160a01b031660009081526001602052604090205460ff1690565b61028c61048c366004612930565b610dca565b60035461036d906001600160a01b031681565b610296600081565b61028c6104ba366004612949565b610e31565b61034a6104cd366004612844565b60096020526000908152604090205460ff1681565b61028c6104f0366004612844565b610fb4565b61029660055481565b61028c61050c366004612844565b611051565b61028c61051f366004612844565b6110d9565b6102966111a5565b61028c61053a3660046129b9565b6111b8565b61036d61054d366004612a2f565b611cc4565b61034a610560366004612844565b60076020526000908152604090205460ff1681565b610296610583366004612844565b6120bc565b6002546001600160a01b031633146105bb5760405162461bcd60e51b81526004016105b290612adf565b60405180910390fd5b6001600160a01b0381166105e15760405162461bcd60e51b81526004016105b290612b0f565b6001600160a01b038116600081815260066020526040808220805460ff191660011790555133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e791a350565b610641670de0b6b3a76400006032612b6f565b81565b6002546001600160a01b0316331461066e5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166106945760405162461bcd60e51b81526004016105b290612b8e565b6001600160a01b038116600081815260096020526040808220805460ff191690555133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b391a350565b6002546001600160a01b031633146107085760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b03811661072e5760405162461bcd60e51b81526004016105b290612bd7565b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b391a350565b6106416402540be400670de0b6b3a7640000612c20565b6002546001600160a01b031633146107bc5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166108225760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016105b2565b6003546001600160a01b0316156108715760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016105b2565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b6002546001600160a01b031633146108e75760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b03811661090d5760405162461bcd60e51b81526004016105b290612c42565b6001600160a01b038116600081815260076020526040808220805460ff191690555133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea48791a350565b6002546001600160a01b031633146109815760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166109a75760405162461bcd60e51b81526004016105b290612c42565b6001600160a01b038116600081815260076020526040808220805460ff191660011790555133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e54491a350565b610641620f4240670de0b6b3a7640000612c20565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190612c9c565b610a925760405162461bcd60e51b81526004016105b290612cb7565b6001600160a01b03861660009081526008602052604090205460ff16610b0d5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016105b2565b60405163012c327560e01b81526001600160a01b0387169063012c327590610b419033908990899089908990600401612d02565b6020604051808303816000875af1158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b849190612d91565b9695505050505050565b61064164e8d4a51000670de0b6b3a7640000612c20565b610641670de0b6b3a76400006064612b6f565b610bcb6003670de0b6b3a7640000612c20565b610641906001612daa565b6002546001600160a01b03163314610c005760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b038116610c265760405162461bcd60e51b81526004016105b290612b0f565b6001600160a01b038116600081815260066020526040808220805460ff191690555133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca9046091a350565b6002546001600160a01b03163314610c9a5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b038116610cc05760405162461bcd60e51b81526004016105b290612bd7565b6001600160a01b038116600081815260086020526040808220805460ff191690555133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b91a350565b6002546001600160a01b03163314610d345760405162461bcd60e51b81526004016105b290612adf565b610d5f816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6040516001600160a01b0382169033907fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac90600090a350565b610641600a670de0b6b3a7640000612c20565b6001610dc0670de0b6b3a76400006002612b6f565b6106419190612dc2565b6002546001600160a01b03163314610df45760405162461bcd60e51b81526004016105b290612adf565b600581905560405181815233907faacba7241fc949e401522d9591e2686bc54ecd5c340c571e85c45fdb57dc87389060200160405180910390a250565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa158015610e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9d9190612c9c565b610eb95760405162461bcd60e51b81526004016105b290612cb7565b6001600160a01b03861660009081526009602052604090205460ff16610f335760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016105b2565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b158015610f9457600080fd5b505af1158015610fa8573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166110045760405162461bcd60e51b81526004016105b290612b8e565b6001600160a01b038116600081815260096020526040808220805460ff191660011790555133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c91a350565b6002546001600160a01b0316331461107b5760405162461bcd60e51b81526004016105b290612adf565b6110a0816001600160a01b03166000908152600160205260409020805460ff19169055565b6040516001600160a01b0382169033907fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb290600090a350565b6002546001600160a01b031633146111035760405162461bcd60e51b81526004016105b290612adf565b6001600160a01b0381166111595760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016105b2565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6106416002670de0b6b3a7640000612c20565b60328111156112145760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016105b2565b60005b81811015611cbf576000604051806060016040528085858581811061123e5761123e612dd9565b9050610140020160600160208101906112579190612844565b6001600160a01b0316815260200185858581811061127757611277612dd9565b9050610140020160a00160208101906112909190612844565b6001600160a01b031681526020018585858181106112b0576112b0612dd9565b905061014002016101200160208101906112ca9190612844565b6001600160a01b03166001600160a01b031681525090506000604051806080016040528086868681811061130057611300612dd9565b9050610140020160800135815260200186868681811061132257611322612dd9565b9050610140020160c00135815260200186868681811061134457611344612dd9565b9050610140020160e00135815260200186868681811061136657611366612dd9565b90506101400201610100013581525090506000600381111561138a5761138a612def565b85858581811061139c5761139c612dd9565b9050610140020160400160208101906113b59190612e05565b60038111156113c6576113c6612def565b14156115955761142a33308787878181106113e3576113e3612dd9565b905061014002016080013588888881811061140057611400612dd9565b9050610140020160600160208101906114199190612844565b6001600160a01b03169291906120f2565b6114b085858581811061143f5761143f612dd9565b9050610140020160200160208101906114589190612844565b86868681811061146a5761146a612dd9565b905061014002016080013587878781811061148757611487612dd9565b9050610140020160600160208101906114a09190612844565b6001600160a01b03169190612163565b60008585858181106114c4576114c4612dd9565b9050610140020160200160208101906114dd9190612844565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b815260040161150a929190612e26565b60408051808303816000875af1158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c9190612e8b565b50905061158f338288888881811061156657611566612dd9565b9050610140020160a001602081019061157f9190612844565b6001600160a01b03169190612215565b50611caa565b60018585858181106115a9576115a9612dd9565b9050610140020160400160208101906115c29190612e05565b60038111156115d3576115d3612def565b141561184e5760008585858181106115ed576115ed612dd9565b9050610140020160200160208101906116069190612844565b6001600160a01b031663caa0114887878781811061162657611626612dd9565b90506101400201606001602081019061163f9190612844565b88888881811061165157611651612dd9565b9050610140020160a001602081019061166a9190612844565b89898981811061167c5761167c612dd9565b9050610140020160c001358a8a8a81811061169957611699612dd9565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190612d91565b905061173e33308389898981811061140057611400612dd9565b61177f86868681811061175357611753612dd9565b90506101400201602001602081019061176c9190612844565b8288888881811061148757611487612dd9565b85858581811061179157611791612dd9565b9050610140020160200160208101906117aa9190612844565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b81526004016117d7929190612e26565b60408051808303816000875af11580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190612e8b565b505061158f3387878781811061183157611831612dd9565b9050610140020160c0013588888881811061156657611566612dd9565b600285858581811061186257611862612dd9565b90506101400201604001602081019061187b9190612e05565b600381111561188c5761188c612def565b1415611bc15760008585858181106118a6576118a6612dd9565b9050610140020160200160208101906118bf9190612844565b6001600160a01b0316634c87087d8787878181106118df576118df612dd9565b90506101400201600001356040518263ffffffff1660e01b815260040161190891815260200190565b61018060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190612eaf565b50505050505050505050915050600086868681811061196b5761196b612dd9565b9050610140020160200160208101906119849190612844565b6001600160a01b031663c99733a78888888181106119a4576119a4612dd9565b90506101400201600001358989898181106119c1576119c1612dd9565b9050610140020160c001356040518363ffffffff1660e01b81526004016119f2929190918252602082015260400190565b608060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190612f63565b5050509050611a503330838a8a8a81811061140057611400612dd9565b611a91878787818110611a6557611a65612dd9565b905061014002016020016020810190611a7e9190612844565b8289898981811061148757611487612dd9565b868686818110611aa357611aa3612dd9565b905061014002016020016020810190611abc9190612844565b6001600160a01b031663825b5cd6888888818110611adc57611adc612dd9565b9050610140020160000135898989818110611af957611af9612dd9565b9050610140020160c001358a8a8a818110611b1657611b16612dd9565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b50505050611bba33888888818110611b9657611b96612dd9565b9050610140020160c00135846001600160a01b03166122159092919063ffffffff16565b5050611caa565b848484818110611bd357611bd3612dd9565b905061014002016020016020810190611bec9190612844565b6001600160a01b0316631d746d83868686818110611c0c57611c0c612dd9565b9050610140020160a0016020810190611c259190612844565b878787818110611c3757611c37612dd9565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b158015611c9157600080fd5b505af1158015611ca5573d6000803e3d6000fd5b505050505b50508080611cb790612f99565b915050611217565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d319190612c9c565b611d4d5760405162461bcd60e51b81526004016105b290612cb7565b6007600084846000818110611d6457611d64612dd9565b9050602002016020810190611d799190612844565b6001600160a01b0316815260208101919091526040016000205460ff16611ded5760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016105b2565b600087876001818110611e0257611e02612dd9565b9050602002013511611e475760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016105b2565b6000611e5960408a0160208b01612844565b9050611ee284846002818110611e7157611e71612dd9565b9050602002016020810190611e869190612844565b85856000818110611e9957611e99612dd9565b9050602002016020810190611eae9190612844565b8a8a6004818110611ec157611ec1612dd9565b90506020020135846001600160a01b03166120f2909392919063ffffffff16565b604080518082018252600091611fa591908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061224592505050565b90506001600160a01b038116611ff55760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016105b2565b6006600061200960408d0160208e01612844565b6001600160a01b0316815260208101919091526040016000205460ff161561206f57604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a26120af565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6001600160a01b03811660009081526006602052604081205460ff16156120e557506000919050565b505060055490565b919050565b6040516001600160a01b038085166024830152831660448201526064810182905261215d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612550565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156121b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d89190612d91565b6121e29190612daa565b6040516001600160a01b03851660248201526044810182905290915061215d90859063095ea7b360e01b90606401612126565b6040516001600160a01b038316602482015260448101829052611cbf90849063a9059cbb60e01b90606401612126565b6000600160008360058151811061225e5761225e612dd9565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166122d15760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016105b2565b60006040518060400160405280846004815181106122f1576122f1612dd9565b6020908102919091018101516001600160a01b03908116835260005416910152835190915061233a908490600590811061232d5761232d612dd9565b6020026020010151612622565b91506001600160a01b03821661239e5760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6000829050806001600160a01b031663c070a6d8856000815181106123c5576123c5612dd9565b602002602001015130886000808d896040518863ffffffff1660e01b81526004016123f6979695949392919061301b565b6020604051808303816000875af1158015612415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124399190612c9c565b61247c5760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016105b2565b8360008151811061248f5761248f612dd9565b60200260200101516001600160a01b03166353f0c3b4886000600281106124b8576124b8612dd9565b6020020151896001602002015186886003815181106124d9576124d9612dd9565b60200260200101518b6040518663ffffffff1660e01b8152600401612502959493929190613081565b6020604051808303816000875af1158015612521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125459190612c9c565b505050949350505050565b60006125a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126b29092919063ffffffff16565b805190915015611cbf57808060200190518101906125c39190612c9c565b611cbf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105b2565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60606126c184846000856126cb565b90505b9392505050565b60608247101561272c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105b2565b843b61277a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105b2565b600080866001600160a01b0316858760405161279691906130e9565b60006040518083038185875af1925050503d80600081146127d3576040519150601f19603f3d011682016040523d82523d6000602084013e6127d8565b606091505b50915091506127e88282866127f3565b979650505050505050565b606083156128025750816126c4565b8251156128125782518084602001fd5b8160405162461bcd60e51b81526004016105b29190613105565b6001600160a01b038116811461284157600080fd5b50565b60006020828403121561285657600080fd5b81356126c48161282c565b60008083601f84011261287357600080fd5b50813567ffffffffffffffff81111561288b57600080fd5b6020830191508360208260051b85010111156128a657600080fd5b9250929050565b6000806000806000606086880312156128c557600080fd5b85356128d08161282c565b9450602086013567ffffffffffffffff808211156128ed57600080fd5b6128f989838a01612861565b9096509450604088013591508082111561291257600080fd5b5061291f88828901612861565b969995985093965092949392505050565b60006020828403121561294257600080fd5b5035919050565b60008060008060008060c0878903121561296257600080fd5b863561296d8161282c565b9550602087013561297d8161282c565b94506040870135935060608701359250608087013561299b8161282c565b915060a08701356129ab8161282c565b809150509295509295509295565b600080602083850312156129cc57600080fd5b823567ffffffffffffffff808211156129e457600080fd5b818501915085601f8301126129f857600080fd5b813581811115612a0757600080fd5b86602061014083028501011115612a1d57600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a031215612a4a57600080fd5b6040880189811115612a5b57600080fd5b8897503567ffffffffffffffff80821115612a7557600080fd5b612a818b838c01612861565b909850965060608a0135915080821115612a9a57600080fd5b612aa68b838c01612861565b909650945060808a0135915080821115612abf57600080fd5b50612acc8a828b01612861565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604082015269656e206164647265737360b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612b8957612b89612b59565b500290565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082612c3d57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b805180151581146120ed57600080fd5b600060208284031215612cae57600080fd5b6126c482612c8c565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015612d51578435612d3d8161282c565b841682529382019390820190600101612d2a565b5085810360408701528681526001600160fb1b03871115612d7157600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215612da357600080fd5b5051919050565b60008219821115612dbd57612dbd612b59565b500190565b600082821015612dd457612dd4612b59565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215612e1757600080fd5b8135600481106126c457600080fd5b60e08101818460005b6003811015612e575781516001600160a01b0316835260209283019290910190600101612e2f565b505050606082018360005b6004811015612e81578151835260209283019290910190600101612e62565b5050509392505050565b60008060408385031215612e9e57600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215612ed257600080fd5b8c51612edd8161282c565b60208e0151909c50612eee8161282c565b60408e015160608f0151919c509a50612f068161282c565b60808e015160a08f0151919a5098509650612f2360c08e01612c8c565b955060e08d015194506101008d015193506101208d015192506101408d01519150612f516101608e01612c8c565b90509295989b509295989b509295989b565b60008060008060808587031215612f7957600080fd5b505082516020840151604085015160609095015191969095509092509050565b6000600019821415612fad57612fad612b59565b5060010190565b600081518084526020808501945080840160005b83811015612fe457815187529582019590820190600101612fc8565b509495945050505050565b8060005b600281101561215d5781516001600160a01b0316845260209384019390910190600101612ff3565b6001600160a01b038881168252871660208201526101206040820181905260009061304883820189612fb4565b9150508515156060830152841515608083015261306860a0830185612fef565b61307560e0830184612fef565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a0608082018190526000906127e890830184612fb4565b60005b838110156130d85781810151838201526020016130c0565b8381111561215d5750506000910152565b600082516130fb8184602087016130bd565b9190910192915050565b60208152600082518060208401526131248160408501602087016130bd565b601f01601f1916919091016040019291505056fea2646970667358221220ce2d7833bf1f1217d379dd680ba9e505dd815bfe88070670cc4e0ea6b50384eb64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/pools/balancer/BPool.sol/BPool.dbg.json b/artifacts/pools/balancer/BPool.sol/BPool.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/pools/balancer/BPool.sol/BPool.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/pools/balancer/BPool.sol/BPool.json b/artifacts/pools/balancer/BPool.sol/BPool.json new file mode 100644 index 000000000..694d21aac --- /dev/null +++ b/artifacts/pools/balancer/BPool.sol/BPool.json @@ -0,0 +1,1744 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BPool", + "sourceName": "contracts/pools/balancer/BPool.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + } + ], + "name": "LOG_BPT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + } + ], + "name": "LOG_BPT_SS", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes4", + "name": "sig", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "LOG_CALL", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "LOG_EXIT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "LOG_JOIN", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseTokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseTokenWeight", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "dataToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dataTokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dataTokenWeight", + "type": "uint256" + } + ], + "name": "LOG_SETUP", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "LOG_SWAP", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMarketCollector", + "type": "address" + } + ], + "name": "MarketCollectorChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MarketFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "OPFWallet", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "OPFFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "marketAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PublishMarketFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "swapFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenFees", + "type": "address" + } + ], + "name": "SWAP_FEES", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "SwapFeeChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "BONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BPOW_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXIT_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INIT_POOL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_IN_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_OUT_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_TOTAL_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_opfCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_publishMarketCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_swapPublishMarketFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "whom", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "name": "calcPoolInSingleOut", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "name": "calcPoolOutSingleIn", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "name": "calcSingleInPoolOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + } + ], + "name": "calcSingleOutPoolIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "collectMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectOPF", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "communityFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "minAmountsOut", + "type": "uint256[]" + } + ], + "name": "exitPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPoolAmountIn", + "type": "uint256" + } + ], + "name": "exitswapExternAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountOut", + "type": "uint256" + } + ], + "name": "exitswapPoolAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_swapMarketFee", + "type": "uint256" + } + ], + "name": "getAmountInExactOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_swapMarketFee", + "type": "uint256" + } + ], + "name": "getAmountOutExactIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBaseTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getController", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentMarketFees", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentOPFFees", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDataTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getDenormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFinalTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMarketFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getNormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOPFFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_swapMarketFee", + "type": "uint256" + } + ], + "name": "getSpotPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "spotPrice", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSwapFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalDenormalizedWeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "controller", + "type": "address" + }, + { + "internalType": "address", + "name": "factory", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "swapFees", + "type": "uint256[]" + }, + { + "internalType": "bool", + "name": "publicSwap", + "type": "bool" + }, + { + "internalType": "bool", + "name": "finalized", + "type": "bool" + }, + { + "internalType": "address[2]", + "name": "tokens", + "type": "address[2]" + }, + { + "internalType": "address[2]", + "name": "feeCollectors", + "type": "address[2]" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "t", + "type": "address" + } + ], + "name": "isBound", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isFinalized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isInitialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isPublicSwap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256[]", + "name": "maxAmountsIn", + "type": "uint256[]" + } + ], + "name": "joinPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minPoolAmountOut", + "type": "uint256" + } + ], + "name": "joinswapExternAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAmountIn", + "type": "uint256" + } + ], + "name": "joinswapPoolAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "publishMarketFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "setSwapFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dataTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "dataTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dataTokenWeight", + "type": "uint256" + }, + { + "internalType": "address", + "name": "baseTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseTokenWeight", + "type": "uint256" + } + ], + "name": "setup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[3]", + "name": "tokenInOutMarket", + "type": "address[3]" + }, + { + "internalType": "uint256[4]", + "name": "amountsInOutMaxFee", + "type": "uint256[4]" + } + ], + "name": "swapExactAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "spotPriceAfter", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[3]", + "name": "tokenInOutMarket", + "type": "address[3]" + }, + { + "internalType": "uint256[4]", + "name": "amountsInOutMaxFee", + "type": "uint256[4]" + } + ], + "name": "swapExactAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "spotPriceAfter", + "type": "uint256" + } + ], + "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": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amt", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newCollector", + "type": "address" + } + ], + "name": "updateMarketFeeCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600a91906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d91600b916200008f565b50600c805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b615ea280620001826000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c80638d4e40831161022b578063c44a428311610130578063dd62ed3e116100b8578063f1b8a9b711610087578063f1b8a9b7146108b1578063f68045a5146108c4578063f8b2cb4f146108cc578063fde924f7146108df578063ff9b1850146108f157600080fd5b8063dd62ed3e1461085d578063e4a28a52146104c3578063ec09302114610896578063f0f13f0b1461089e57600080fd5b8063caa01148116100ff578063caa011481461081f578063cc77828d14610832578063cd2ed8fb1461083a578063d4cadf6814610842578063d73dd6231461084a57600080fd5b8063c44a4283146107e6578063c6580d12146107fc578063c8ff183314610804578063c98a59cf1461080c57600080fd5b8063b0e0d136116101b3578063bc694ea211610182578063bc694ea21461078e578063be3bbd2e14610796578063c070a6d8146107ab578063c36596a6146104f0578063c421a3fc146107be57600080fd5b8063b0e0d13614610776578063b7b800a414610776578063ba019dab1461077e578063bc063e1a1461078657600080fd5b806395d89b41116101fa57806395d89b411461072d578063992e2a9214610735578063a3b3a16d1461073d578063a9059cbb14610750578063b02f0b731461076357600080fd5b80638d4e4083146106f8578063936c34771461070a5780639381cd2b14610712578063948d8ce61461071a57600080fd5b80633950b3fd116103315780636d06dfa0116102b957806376c7a3c71161028857806376c7a3c7146106b75780637a284be4146106bf5780637c5918b3146106c857806380ca7308146106e8578063867378c5146106f057600080fd5b80636d06dfa014610660578063700dd7e814610673578063703305181461067b57806370a082311461068e57600080fd5b80634f69c0d4116103005780634f69c0d41461060c5780635db342771461061f5780635e123add14610632578063638c9e951461063a578063661884631461064d57600080fd5b80633950b3fd146105c2578063430ed5d0146105d557806346ab38f1146105e85780634df947d0146105fb57600080fd5b8063218b5382116103b4578063300621921161038357806330062192146105515780633018205f14610571578063313ce5671461058857806334e199071461059d578063392e53cd146105b057600080fd5b8063218b5382146104f057806323b872dd146104ff5780632eebd6ae146105125780632f37b6241461052557600080fd5b8063095ea7b3116103fb578063095ea7b3146104a057806309a3bbe4146104c357806309ef3f5b146104cb57806318160ddd146104e0578063189d00ca146104e857600080fd5b806302c967481461042d57806304ad79541461045357806306fdde0314610478578063079492d41461048d575b600080fd5b61044061043b3660046156d1565b610904565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b03909116815260200161044a565b610480610d65565b60405161044a9190615730565b61044061049b366004615763565b610df7565b6104b36104ae36600461579f565b610e81565b604051901515815260200161044a565b610440610edc565b6104de6104d93660046157c9565b610ef2565b005b600954610440565b61044061112e565b610440670de0b6b3a764000081565b6104b361050d366004615763565b611145565b610440610520366004615821565b611299565b6104b3610533366004615863565b6001600160a01b031660009081526010602052604090205460ff1690565b61044061055f366004615863565b60056020526000908152604090205481565b600c546201000090046001600160a01b0316610460565b600c5460405160ff909116815260200161044a565b6104de6105ab36600461587e565b6112fa565b601254600160a01b900460ff166104b3565b6104406105d036600461579f565b611433565b6104406105e336600461579f565b61149b565b6104406105f63660046156d1565b6114fb565b6004546001600160a01b0316610460565b6104de61061a3660046158dc565b611901565b61044061062d3660046156d1565b611b28565b600054610440565b600d54610460906001600160a01b031681565b6104b361065b36600461579f565b611ee9565b61044061066e3660046156d1565b611fbf565b61044061239b565b6104de610689366004615863565b612415565b61044061069c366004615863565b6001600160a01b031660009081526007602052604090205490565b610440612512565b61044060005481565b6104406106d6366004615863565b60066020526000908152604090205481565b6104de612527565b6104406126b9565b600e54600160a01b900460ff166104b3565b6104406126d0565b610440612702565b610440610728366004615863565b612715565b61048061276c565b61044061277b565b61044061074b36600461579f565b612799565b6104b361075e36600461579f565b6127f9565b6104de6107713660046158dc565b61280f565b610440600281565b610440600181565b610440612a6b565b610440612a7e565b61079e612a9d565b60405161044a919061596c565b6104b36107b936600461599e565b612b50565b6107d16107cc366004615a4b565b612dc0565b6040805192835260208301919091520161044a565b6107ee613267565b60405161044a929190615a8d565b610440600081565b6107ee6133d7565b6107d161081a366004615a4b565b61353c565b61044061082d366004615821565b613980565b61079e6139d6565b600f54610440565b600154610440565b6104b361085836600461579f565b613a01565b61044061086b366004615ae4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610440613a74565b600e54610460906001600160a01b031681565b6104406108bf366004615863565b613a87565b6104de613ae5565b6104406108da366004615863565b613c53565b600c54600160b01b900460ff166104b3565b6104406108ff36600461579f565b613ca6565b600c54600090610100900460ff16156109385760405162461bcd60e51b815260040161092f90615b17565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109705760405162461bcd60e51b815260040161092f90615b3c565b61097984613d06565b6001600160a01b03841660009081526010602052604090206003908101546109bd916109ad90670de0b6b3a7640000615b93565b6109b8906001615ba7565b613d61565b8311156109dc5760405162461bcd60e51b815260040161092f90615bbf565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a119392919088613e46565b915081610a305760405162461bcd60e51b815260040161092f90615bea565b82821115610a505760405162461bcd60e51b815260040161092f90615c13565b610a5e816003015485613f0a565b60038201556000610a6f8382613d61565b604080518781524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051838152600080516020615e0d8339815191529060200160405180910390a1610ad03384613f67565b610ae2610add8483613f0a565b613f71565b600254610af8906001600160a01b031682613f7a565b610b03863387613f84565b6003546000906001600160a01b0388811691161415610b2e57506004546001600160a01b0316610b3c565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b749291169085908990600401615c39565b602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190615c5d565b15610d5057600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610bf1939291908a613f9d565b9050610c01826003015482613f0a565b6003830155610c11866000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c54610c6e906201000090046001600160a01b031687613f67565b610c7b610add8786613f0a565b600254610c91906001600160a01b031685613f7a565b600c54610caf9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b50505050600080516020615ded83398151915286604051610d4591815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d7490615c7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da090615c7a565b8015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e225760405162461bcd60e51b815260040161092f90615b17565b610e2b84613d06565b610e3483613d06565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e7593919088614067565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e4d83398151915290610eca9086815260200190565b60405180910390a35060015b92915050565b610eef670de0b6b3a76400006032615cb5565b81565b600c54610100900460ff1615610f1a5760405162461bcd60e51b815260040161092f90615b17565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f835760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b604482015260640161092f565b6003546001600160a01b03878116911614610fe05760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f41444452455353000000604482015260640161092f565b6004546001600160a01b0384811691161461103d5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f41444452455353000000604482015260640161092f565b6110488686866140f3565b604080518681524260208201526001600160a01b038816913391600080516020615e2d833981519152910160405180910390a36110868383836140f3565b604080518381524260208201526001600160a01b038516913391600080516020615e2d833981519152910160405180910390a36110c16142dd565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610eef6402540be400670de0b6b3a7640000615b93565b6000336001600160a01b038516148061118157506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111c55760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b604482015260640161092f565b6111d084848461433c565b336001600160a01b0385161480159061120e57506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b1561128f576001600160a01b03841660009081526008602090815260408083203384529091529020546112419083613f0a565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e4d833981519152910160405180910390a35b5060019392505050565b60006112a485613d06565b6112ad84613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef939190898961444e565b979650505050505050565b600c546201000090046001600160a01b0316331461134f5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b611364620f4240670de0b6b3a7640000615b93565b8110156113a15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6113b4600a670de0b6b3a7640000615b93565b8111156113f15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087614500565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613f9d565b600c54600090610100900460ff16156115265760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661155e5760405162461bcd60e51b815260040161092f90615b3c565b61156784613d06565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461159c9392919088613f9d565b9150828210156115be5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b03851660009081526010602052604090206003908101546115f2916109ad90670de0b6b3a7640000615b93565b8211156116115760405162461bcd60e51b815260040161092f90615bbf565b61161f816003015483613f0a565b600382015560006116308582613d61565b604080518581524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051858152600080516020615e0d8339815191529060200160405180910390a16116913386613f67565b61169e610add8683613f0a565b6002546116b4906001600160a01b031682613f7a565b6116bf863385613f84565b6003546000906001600160a01b03888116911614156116ea57506004546001600160a01b03166116f8565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117309291169085908b90600401615c39565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190615c5d565b15610d5057600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546117ad939291908c613f9d565b90506117bd826003015482613f0a565b60038301556117cd886000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c5461182a906201000090046001600160a01b031689613f67565b611837610add8986613f0a565b60025461184d906001600160a01b031685613f7a565b600c5461186b9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b50505050600080516020615ded83398151915288604051610d4591815260200190565b600c54610100900460ff16156119295760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166119615760405162461bcd60e51b815260040161092f90615b3c565b600061196c60095490565b9050600061197a8583614584565b9050806119995760405162461bcd60e51b815260040161092f90615bea565b60005b600f54811015611ae1576000600f82815481106119bb576119bb615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906119f08583613d61565b905080611a0f5760405162461bcd60e51b815260040161092f90615bea565b878785818110611a2157611a21615cfb565b90506020020135811115611a475760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b038316600090815260106020526040902060030154611a6d908261469c565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e2d83398151915290611ab89085904290918252602082015260400190565b60405180910390a3611acb8333836146ee565b5050508080611ad990615d11565b91505061199c565b50611aeb85614703565b611af53386613f7a565b604051858152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611b535760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16611b8b5760405162461bcd60e51b815260040161092f90615b3c565b611b9484613d06565b6001600160a01b038416600090815260106020526040902060030154611bc7906109b86002670de0b6b3a7640000615b93565b831115611be65760405162461bcd60e51b815260040161092f90615d2c565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611c1b9392919088614500565b915082821015611c3d5760405162461bcd60e51b815260040161092f90615cd4565b611c4b81600301548561469c565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051828152600080516020615e0d8339815191529060200160405180910390a1611cad82614703565b611cb73383613f7a565b611cc28533866146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611cfc93909290918961470c565b6003549091506001600160a01b0389811691161415611d28576004546001600160a01b03169150611d37565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611d6f9291169086908690600401615c39565b602060405180830381865afa158015611d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db09190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611ded9291169086908690600401615c39565b600060405180830381600087803b158015611e0757600080fd5b505af1158015611e1b573d6000803e3d6000fd5b50505050611e2d83600301548261469c565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e2d833981519152910160405180910390a3604051858152600080516020615ded8339815191529060200160405180910390a1611e9985614703565b600c54611eb5906201000090046001600160a01b031686613f7a565b600c54611ed39083906201000090046001600160a01b0316836146ee565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611f3e573360009081526008602090815260408083206001600160a01b0388168452909152812055611f6d565b611f488184613f0a565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e4d833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff1615611fea5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166120225760405162461bcd60e51b815260040161092f90615b3c565b61202b84613d06565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154612060939291908861470c565b91508161207f5760405162461bcd60e51b815260040161092f90615bea565b8282111561209f5760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b0385166000908152601060205260409020600301546120d2906109b86002670de0b6b3a7640000615b93565b8211156120f15760405162461bcd60e51b815260040161092f90615d2c565b6120ff81600301548361469c565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051848152600080516020615e0d8339815191529060200160405180910390a161216184614703565b61216b3385613f7a565b6121768533846146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546121ad939291908a61470c565b6003549091506000906001600160a01b03898116911614156121db57506004546001600160a01b03166121e9565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122219291169085908790600401615c39565b602060405180830381865afa15801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261229f9291169085908790600401615c39565b600060405180830381600087803b1580156122b957600080fd5b505af11580156122cd573d6000803e3d6000fd5b505050506122df83600301548361469c565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e2d833981519152910160405180910390a361232a87614703565b600c54612346906201000090046001600160a01b031688613f7a565b600c546123649082906201000090046001600160a01b0316846146ee565b604051878152600080516020615ded8339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee90602401602060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190615d56565b905090565b600d546001600160a01b031633146124675760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b604482015260640161092f565b6001600160a01b0381166124bd5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f722061646472657373000000604482015260640161092f565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b89101611428565b610eef620f4240670de0b6b3a7640000615b93565b6000612531612a9d565b905060005b81518110156126b55760006006600084848151811061255757612557615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006006600085858151811061259a5761259a615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612612600d60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b60200260200101516001600160a01b03166147a69092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061265c5761265c615cfb565b60200260200101518460405161269a94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126ad81615d11565b915050612536565b5050565b610eef64e8d4a51000670de0b6b3a7640000615b93565b600c54600090610100900460ff16156126fb5760405162461bcd60e51b815260040161092f90615b17565b5060115490565b610eef670de0b6b3a76400006064615cb5565b600c54600090610100900460ff16156127405760405162461bcd60e51b815260040161092f90615b17565b61274982613d06565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d7490615c7a565b61278e6003670de0b6b3a7640000615b93565b610eef906001615ba7565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613e46565b600061280633848461433c565b50600192915050565b600c54610100900460ff16156128375760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661286f5760405162461bcd60e51b815260040161092f90615b3c565b600061287a60095490565b90506000612889856000613d61565b905060006128978683613f0a565b905060006128a58285614584565b9050806128c45760405162461bcd60e51b815260040161092f90615bea565b6128ce3388613f67565b6002546128e4906001600160a01b031684613f7a565b6128ed82613f71565b60005b600f54811015612a35576000600f828154811061290f5761290f615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906129448583613d61565b9050806129635760405162461bcd60e51b815260040161092f90615bea565b89898581811061297557612975615cfb565b9050602002013581101561299b5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b0383166000908152601060205260409020600301546129c19082613f0a565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615dcd83398151915290612a0c9085904290918252602082015260400190565b60405180910390a3612a1f833383613f84565b5050508080612a2d90615d11565b9150506128f0565b50604051878152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610eef600a670de0b6b3a7640000615b93565b6001612a93670de0b6b3a76400006002615cb5565b610eef9190615d6f565b600c54606090610100900460ff1615612ac85760405162461bcd60e51b815260040161092f90615b17565b600e54600160a01b900460ff16612af15760405162461bcd60e51b815260040161092f90615b3c565b600f805480602002602001604051908101604052809291908181526020018280548015610ded57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b29575050505050905090565b601254600090600160a01b900460ff1615612bad5760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a4544000000000000000000604482015260640161092f565b6001600160a01b038916612c035760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f414444524553530000604482015260640161092f565b6001600160a01b038816612c595760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f414444524553530000000000604482015260640161092f565b612c6e620f4240670de0b6b3a7640000615b93565b87876000818110612c8157612c81615cfb565b905060200201351015612cc45760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b612cd7600a670de0b6b3a7640000615b93565b87876000818110612cea57612cea615cfb565b905060200201351115612d2d5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b612db38989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a906002908390839080828437600092019190915250614809915050565b9998505050505050505050565b600c546000908190610100900460ff1615612ded5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16612e255760405162461bcd60e51b815260040161092f90615b3c565b612e448460005b602002016020810190612e3f9190615863565b613d06565b612e4f846001612e2c565b6000601081612e616020880188615863565b6001600160a01b03168152602081019190915260400160009081209150601081876001602002016020810190612e979190615863565b6001600160a01b03166001600160a01b031681526020019081526020016000209050612ed682600301546002670de0b6b3a76400006109b89190615b93565b85351115612ef65760405162461bcd60e51b815260040161092f90615d2c565b6000612f2c83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b6020020135614067565b90506040860135811115612f785760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b6040805160808101825260038581015482526002808701546020808501919091529186015493830193909352918401546060820152600091612fcf9082908a3590612fc5908d018d615863565b60608c0135614947565b90975091506020880135871015612ff85760405162461bcd60e51b815260040161092f90615cd4565b61300685600301548361469c565b856003018190555061301c846003015488613f0a565b846003018190555061304e85600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156130705760405162461bcd60e51b815260040161092f90615bea565b60408801358611156130b65760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6130c1883588614584565b8311156130e05760405162461bcd60e51b815260040161092f90615bea565b6130f060408a0160208b01615863565b6001600160a01b031661310660208b018b615863565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461316e61316660208b018b615863565b338a356146ee565b60006131988935613193816109b8670de0b6b3a76400008e60035b6020020135613f0a565b613f0a565b9050606089013515613233576131dc8a60025b6020020160208101906131be9190615863565b826131cc60208e018e615863565b6001600160a01b031691906147a6565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61320d60608c0160408d01615863565b61321a60208d018d615863565b8360405161322a93929190615c39565b60405180910390a15b61324d61324660408c0160208d01615863565b338a613f84565b505050505050600c805461ff001916905590939092509050565b6060806000613274612a9d565b90506000815167ffffffffffffffff81111561329257613292615d86565b6040519080825280602002602001820160405280156132bb578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156132da576132da615d86565b604051908082528060200260200182016040528015613303578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061332457613324615cfb565b602002602001015183828151811061333e5761333e615cfb565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061337457613374615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106133af576133af615cfb565b6020908102919091010152806133c481615d11565b915050613309565b509094909350915050565b60608060006133e4612a9d565b90506000815167ffffffffffffffff81111561340257613402615d86565b60405190808252806020026020018201604052801561342b578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561344a5761344a615d86565b604051908082528060200260200182016040528015613473578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061349457613494615cfb565b60200260200101518382815181106134ae576134ae615cfb565b60200260200101906001600160a01b031690816001600160a01b031681525050600560008583815181106134e4576134e4615cfb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061351f5761351f615cfb565b60209081029190910101528061353481615d11565b915050613479565b600c546000908190610100900460ff16156135695760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166135a15760405162461bcd60e51b815260040161092f90615b3c565b6135ac846000612e2c565b6135b7846001612e2c565b60006010816135c96020880188615863565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906135ff9190615863565b6001600160a01b03166001600160a01b03168152602001908152602001600020905061363e81600301546003670de0b6b3a76400006109ad9190615b93565b602086013511156136615760405162461bcd60e51b815260040161092f90615bbf565b600061368d83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b905060408601358111156136d95760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916137329082908a81013590613728908d018d615863565b60608c0135614b5f565b909750915087358711156137585760405162461bcd60e51b815260040161092f90615c13565b61376685600301548361469c565b60038087019190915584015461377e90896001613189565b84600301819055506137b085600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156137d25760405162461bcd60e51b815260040161092f90615bea565b60408801358611156138185760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6138268760208a0135614584565b8311156138455760405162461bcd60e51b815260040161092f90615bea565b61385560408a0160208b01615863565b6001600160a01b031661386b60208b018b615863565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a46138d66138cf60208b018b615863565b33896146ee565b60006138f488613193816109b8670de0b6b3a76400008e6003613189565b90506060890135156139625761390b8a60026131ab565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61393c60608c0160408d01615863565b61394960208d018d615863565b8360405161395993929190615c39565b60405180910390a15b61324d61397560408c0160208d01615863565b3360208c0135613f84565b600061398b85613d06565b61399484613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef9391908989614d83565b600c54606090610100900460ff1615612af15760405162461bcd60e51b815260040161092f90615b17565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613a2f908361469c565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e4d8339815191529101610eca565b610eef6002670de0b6b3a7640000615b93565b600c54600090610100900460ff1615613ab25760405162461bcd60e51b815260040161092f90615b17565b613abb82613d06565b6001600160a01b038216600090815260106020526040902060020154601154610e7a908290614584565b6000613aef612a9d565b905060005b81518110156126b557600060056000848481518110613b1557613b15615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613b5857613b58615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550613bb0600e60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b7fe8e83bbe0f2a413d8e79dcb9ef4143cd967143e9d6b93c91d002c7eefdc507cc33600e60009054906101000a90046001600160a01b0316858581518110613bfa57613bfa615cfb565b602002602001015184604051613c3894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080613c4b81615d11565b915050613af4565b600c54600090610100900460ff1615613c7e5760405162461bcd60e51b815260040161092f90615b17565b613c8782613d06565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546114939391908761470c565b6001600160a01b03811660009081526010602052604090205460ff16613d5e5760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b604482015260640161092f565b50565b600080613d6e8385615cb5565b9050831580613d85575082613d838583615b93565b145b613dc45760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613dd96002670de0b6b3a7640000615b93565b613de39083615ba7565b905081811015613e285760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613e3c670de0b6b3a764000083615b93565b9695505050505050565b600080613e538685614584565b90506000613e69670de0b6b3a764000083613f0a565b90506000613e7982600154613d61565b90506000613e9886613e93670de0b6b3a764000085613f0a565b614584565b90506000613ea68b83613f0a565b90506000613eb4828d614584565b90506000613ec28288614e37565b90506000613ed0828d613d61565b90506000613ede8d83613f0a565b9050613ef781613e93670de0b6b3a76400006000613f0a565b9f9e505050505050505050505050505050565b6000806000613f198585614f58565b915091508015613f5f5760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015260640161092f565b509392505050565b6126b58282614f8f565b613d5e81614f9a565b6126b58282615066565b613f986001600160a01b03841683836147a6565b505050565b600080613faa8685614584565b90506000613fc5846109b8670de0b6b3a76400006000613f0a565b90506000613fd38783613f0a565b90506000613fe18289614584565b9050600061400082613ffb670de0b6b3a764000088614584565b614e37565b9050600061400e828d613d61565b9050600061401c8d83613f0a565b9050600061403d614035670de0b6b3a76400008a613f0a565b600154613d61565b9050614055826109b8670de0b6b3a764000084613f0a565b9e9d5050505050505050505050505050565b6000806140748787614584565b905060006140828686614584565b905060006140908383614584565b905060006140d9670de0b6b3a7640000613e93670de0b6b3a7640000896000546140b861239b565b6001546140c59190615ba7565b6140cf9190615ba7565b6131939190615ba7565b90506140e58282613d61565b9a9950505050505050505050565b600c546201000090046001600160a01b031633146141485760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b6001600160a01b03831660009081526010602052604090205460ff16156141a05760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b604482015260640161092f565b600e54600160a01b900460ff16156141ed5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600f546002116142305760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015260640161092f565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613f98838383615071565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561431e614319670de0b6b3a76400006064615cb5565b614703565b61433a33614335670de0b6b3a76400006064615cb5565b613f7a565b565b6001600160a01b03831660009081526007602052604090205481111561439b5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b6001600160a01b0383166000908152600760205260409020546143be9082613f0a565b6001600160a01b0380851660009081526007602052604080822093909355908416815220546143ed908261469c565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144419085815260200190565b60405180910390a3505050565b60008061445b8786614584565b9050600080548461446a61239b565b6001546144779190615ba7565b6144819190615ba7565b61448b9190615ba7565b905060006144a1670de0b6b3a764000083613f0a565b90506144ad8682613d61565b905060006144bf8b613e938d8561469c565b905060006144cd8286614e37565b905060006144e3670de0b6b3a764000083613f0a565b90506144ef8b82613d61565b9d9c50505050505050505050505050565b60008061450d8685614584565b90506000614526614035670de0b6b3a764000084613f0a565b90506000614540856109b8670de0b6b3a764000085613f0a565b9050600061454e8a8361469c565b9050600061455c828c614584565b9050600061456a8287614e37565b90506000614578828c613d61565b90506144ef818c613f0a565b6000816145c25760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015260640161092f565b60006145d6670de0b6b3a764000085615cb5565b90508315806145f55750670de0b6b3a76400006145f38583615b93565b145b6146345760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000614641600285615b93565b61464b9083615ba7565b9050818110156146905760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000613e3c8583615b93565b6000806146a98385615ba7565b905083811015610e7a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015260640161092f565b613f986001600160a01b0384168330846152c1565b613d5e816152e8565b6000806147198685614584565b90506000614727868561469c565b905060006147358288614584565b9050600061474b670de0b6b3a764000085614584565b905060006147598383614e37565b90506000614767828d613d61565b90506000614775828e613f0a565b9050600061478e614035670de0b6b3a76400008a613f0a565b905061405582613e93670de0b6b3a764000084613f0a565b6040516001600160a01b038316602482015260448101829052613f9890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152615357565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061485f5761485f615cfb565b60200260200101516001819055508560018151811061488057614880615cfb565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061496487600160200201518860035b6020020151614584565b9050600061498487613193896109b8670de0b6b3a764000061319361239b565b6001600160a01b0387166000908152600560205260409020549091506149aa908261469c565b60056000886001600160a01b03166001600160a01b031681526020019081526020016000208190555060006149f1886131938a6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038816600090815260066020526040902054909150614a17908261469c565b6001600160a01b03881660009081526006602052604081209190915580548790614a3f61239b565b600154614a4c9190615ba7565b614a569190615ba7565b614a609190615ba7565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614a9f8a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614ae0670de0b6b3a764000083613f0a565b9050614aec8a82613d61565b8b51909150600090614b0290613e93818561469c565b90506000614b108288614e37565b90506000614b26670de0b6b3a764000083613f0a565b9050614b398e6002602002015182613d61565b995089614b4a8e613193898b615ba7565b99509950505050505050505094509492505050565b60008080614b76876003602002015188600161495a565b90506000614b8b886002602002015188613f0a565b90506000614ba0896002602002015183614584565b90506000614bae8285614e37565b9050614bc281670de0b6b3a7640000613f0a565b90506000805488614bd161239b565b600154614bde9190615ba7565b614be89190615ba7565b614bf29190615ba7565b8b51909150614c1790614c059084613d61565b613e93670de0b6b3a764000084613f0a565b96506000614c37886131938a6109b8670de0b6b3a764000061319361239b565b6001600160a01b038b16600090815260056020526040902054909150614c5d908261469c565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614ca4896131938b6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038c16600090815260066020526040902054909150614cca908261469c565b6001600160a01b038c166000908152600660205260409020558c51614d0790614cf39086613d61565b613e93670de0b6b3a7640000600154613f0a565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d468a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614d908588614584565b90506000614d9e8786613f0a565b90506000614dac8883614584565b90506000614dba8285614e37565b9050614dce81670de0b6b3a7640000613f0a565b90506000805487614ddd61239b565b600154614dea9190615ba7565b614df49190615ba7565b614dfe9190615ba7565b9050614e12670de0b6b3a764000082613f0a565b9550614e27614e218d84613d61565b87614584565b9c9b505050505050505050505050565b60006001831015614e825760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b604482015260640161092f565b6001614e97670de0b6b3a76400006002615cb5565b614ea19190615d6f565b831115614ee95760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b604482015260640161092f565b6000614ef483615429565b90506000614f028483613f0a565b90506000614f1886614f1385615447565b61545b565b905081614f29579250610ed6915050565b6000614f4c8784614f476402540be400670de0b6b3a7640000615b93565b6154cf565b90506112ef8282613d61565b600080828410614f7757614f6c8385615d6f565b600091509150614f88565b614f818484615d6f565b6001915091505b9250929050565b6126b582308361433c565b30600090815260076020526040902054811115614ff05760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b3060009081526007602052604090205461500a9082613f0a565b306000908152600760205260409020556009546150279082613f0a565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126b530838361433c565b670de0b6b3a76400008110156150ba5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b604482015260640161092f565b6150cd670de0b6b3a76400006032615cb5565b81111561510d5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b604482015260640161092f565b61512464e8d4a51000670de0b6b3a7640000615b93565b8210156151655760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b604482015260640161092f565b6001600160a01b038316600090815260106020526040902060020154808211156152015761519e6011546151998484613f0a565b61469c565b6011556151b4670de0b6b3a76400006032615cb5565b60115411156151fc5760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b604482015260640161092f565b61521d565b8082101561521d576152196011546131938385613f0a565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561526657615261853361525c8785613f0a565b6146ee565b6152ba565b808410156152ba57600061527a8286613f0a565b90506000615289826000613d61565b905061529f873361529a8585613f0a565b613f84565b6002546152b79088906001600160a01b031683613f84565b50505b5050505050565b6152e2846323b872dd60e01b8585856040516024016147d293929190615c39565b50505050565b30600090815260076020526040902054615302908261469c565b3060009081526007602052604090205560095461531f908261469c565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161505b565b60006153ac826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155bf9092919063ffffffff16565b805190915015613f9857808060200190518101906153ca9190615c5d565b613f985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161092f565b6000670de0b6b3a764000061543d83615447565b610ed69190615cb5565b6000610ed6670de0b6b3a764000083615b93565b6000828161546a600285615d9c565b61547c57670de0b6b3a764000061547e565b815b905061548b600285615b93565b93505b83156114935761549e8283613d61565b91506154ab600285615d9c565b156154bd576154ba8183613d61565b90505b6154c8600285615b93565b935061548e565b60008281806154e687670de0b6b3a7640000614f58565b9092509050670de0b6b3a764000080600060015b8884106155b0576000615515670de0b6b3a764000083615cb5565b90506000806155358a61553085670de0b6b3a7640000613f0a565b614f58565b91509150615547876109b8848c613d61565b96506155538784614584565b965086615562575050506155b0565b871561556c579315935b8015615576579315935b841561558d576155868688613f0a565b955061559a565b615597868861469c565b95505b50505080806155a890615d11565b9150506154fa565b50909998505050505050505050565b6060611493848460008585843b6156185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161092f565b600080866001600160a01b031685876040516156349190615db0565b60006040518083038185875af1925050503d8060008114615671576040519150601f19603f3d011682016040523d82523d6000602084013e615676565b606091505b50915091506112ef82828660608315615690575081610e7a565b8251156156a05782518084602001fd5b8160405162461bcd60e51b815260040161092f9190615730565b80356001600160a01b038116811461276757600080fd5b6000806000606084860312156156e657600080fd5b6156ef846156ba565b95602085013595506040909401359392505050565b60005b8381101561571f578181015183820152602001615707565b838111156152e25750506000910152565b602081526000825180602084015261574f816040850160208701615704565b601f01601f19169190910160400192915050565b60008060006060848603121561577857600080fd5b615781846156ba565b925061578f602085016156ba565b9150604084013590509250925092565b600080604083850312156157b257600080fd5b6157bb836156ba565b946020939093013593505050565b60008060008060008060c087890312156157e257600080fd5b6157eb876156ba565b95506020870135945060408701359350615807606088016156ba565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561583757600080fd5b615840856156ba565b935061584e602086016156ba565b93969395505050506040820135916060013590565b60006020828403121561587557600080fd5b610e7a826156ba565b60006020828403121561589057600080fd5b5035919050565b60008083601f8401126158a957600080fd5b50813567ffffffffffffffff8111156158c157600080fd5b6020830191508360208260051b8501011115614f8857600080fd5b6000806000604084860312156158f157600080fd5b83359250602084013567ffffffffffffffff81111561590f57600080fd5b61591b86828701615897565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159615781516001600160a01b03168752958201959082019060010161593c565b509495945050505050565b602081526000610e7a6020830184615928565b8015158114613d5e57600080fd5b8060408101831015610ed657600080fd5b600080600080600080600080610120898b0312156159bb57600080fd5b6159c4896156ba565b97506159d260208a016156ba565b9650604089013567ffffffffffffffff8111156159ee57600080fd5b6159fa8b828c01615897565b9097509550506060890135615a0e8161597f565b93506080890135615a1e8161597f565b9250615a2d8a60a08b0161598d565b9150615a3c8a60e08b0161598d565b90509295985092959890939650565b60008060e08385031215615a5e57600080fd5b6060830184811115615a6f57600080fd5b8392508460e085011115615a8257600080fd5b809150509250929050565b604081526000615aa06040830185615928565b82810360208481019190915284518083528582019282019060005b81811015615ad757845183529383019391830191600101615abb565b5090979650505050505050565b60008060408385031215615af757600080fd5b615b00836156ba565b9150615b0e602084016156ba565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615ba257615ba2615b67565b500490565b60008219821115615bba57615bba615b7d565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c6f57600080fd5b8151610e7a8161597f565b600181811c90821680615c8e57607f821691505b60208210811415615caf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ccf57615ccf615b7d565b500290565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d2557615d25615b7d565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600060208284031215615d6857600080fd5b5051919050565b600082821015615d8157615d81615b7d565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dab57615dab615b67565b500690565b60008251615dc2818460208701615704565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220b2cddedb256d857dbe0e18db9bfbe32072683bb77f53e9eca2ed351a904324c864736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104285760003560e01c80638d4e40831161022b578063c44a428311610130578063dd62ed3e116100b8578063f1b8a9b711610087578063f1b8a9b7146108b1578063f68045a5146108c4578063f8b2cb4f146108cc578063fde924f7146108df578063ff9b1850146108f157600080fd5b8063dd62ed3e1461085d578063e4a28a52146104c3578063ec09302114610896578063f0f13f0b1461089e57600080fd5b8063caa01148116100ff578063caa011481461081f578063cc77828d14610832578063cd2ed8fb1461083a578063d4cadf6814610842578063d73dd6231461084a57600080fd5b8063c44a4283146107e6578063c6580d12146107fc578063c8ff183314610804578063c98a59cf1461080c57600080fd5b8063b0e0d136116101b3578063bc694ea211610182578063bc694ea21461078e578063be3bbd2e14610796578063c070a6d8146107ab578063c36596a6146104f0578063c421a3fc146107be57600080fd5b8063b0e0d13614610776578063b7b800a414610776578063ba019dab1461077e578063bc063e1a1461078657600080fd5b806395d89b41116101fa57806395d89b411461072d578063992e2a9214610735578063a3b3a16d1461073d578063a9059cbb14610750578063b02f0b731461076357600080fd5b80638d4e4083146106f8578063936c34771461070a5780639381cd2b14610712578063948d8ce61461071a57600080fd5b80633950b3fd116103315780636d06dfa0116102b957806376c7a3c71161028857806376c7a3c7146106b75780637a284be4146106bf5780637c5918b3146106c857806380ca7308146106e8578063867378c5146106f057600080fd5b80636d06dfa014610660578063700dd7e814610673578063703305181461067b57806370a082311461068e57600080fd5b80634f69c0d4116103005780634f69c0d41461060c5780635db342771461061f5780635e123add14610632578063638c9e951461063a578063661884631461064d57600080fd5b80633950b3fd146105c2578063430ed5d0146105d557806346ab38f1146105e85780634df947d0146105fb57600080fd5b8063218b5382116103b4578063300621921161038357806330062192146105515780633018205f14610571578063313ce5671461058857806334e199071461059d578063392e53cd146105b057600080fd5b8063218b5382146104f057806323b872dd146104ff5780632eebd6ae146105125780632f37b6241461052557600080fd5b8063095ea7b3116103fb578063095ea7b3146104a057806309a3bbe4146104c357806309ef3f5b146104cb57806318160ddd146104e0578063189d00ca146104e857600080fd5b806302c967481461042d57806304ad79541461045357806306fdde0314610478578063079492d41461048d575b600080fd5b61044061043b3660046156d1565b610904565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b03909116815260200161044a565b610480610d65565b60405161044a9190615730565b61044061049b366004615763565b610df7565b6104b36104ae36600461579f565b610e81565b604051901515815260200161044a565b610440610edc565b6104de6104d93660046157c9565b610ef2565b005b600954610440565b61044061112e565b610440670de0b6b3a764000081565b6104b361050d366004615763565b611145565b610440610520366004615821565b611299565b6104b3610533366004615863565b6001600160a01b031660009081526010602052604090205460ff1690565b61044061055f366004615863565b60056020526000908152604090205481565b600c546201000090046001600160a01b0316610460565b600c5460405160ff909116815260200161044a565b6104de6105ab36600461587e565b6112fa565b601254600160a01b900460ff166104b3565b6104406105d036600461579f565b611433565b6104406105e336600461579f565b61149b565b6104406105f63660046156d1565b6114fb565b6004546001600160a01b0316610460565b6104de61061a3660046158dc565b611901565b61044061062d3660046156d1565b611b28565b600054610440565b600d54610460906001600160a01b031681565b6104b361065b36600461579f565b611ee9565b61044061066e3660046156d1565b611fbf565b61044061239b565b6104de610689366004615863565b612415565b61044061069c366004615863565b6001600160a01b031660009081526007602052604090205490565b610440612512565b61044060005481565b6104406106d6366004615863565b60066020526000908152604090205481565b6104de612527565b6104406126b9565b600e54600160a01b900460ff166104b3565b6104406126d0565b610440612702565b610440610728366004615863565b612715565b61048061276c565b61044061277b565b61044061074b36600461579f565b612799565b6104b361075e36600461579f565b6127f9565b6104de6107713660046158dc565b61280f565b610440600281565b610440600181565b610440612a6b565b610440612a7e565b61079e612a9d565b60405161044a919061596c565b6104b36107b936600461599e565b612b50565b6107d16107cc366004615a4b565b612dc0565b6040805192835260208301919091520161044a565b6107ee613267565b60405161044a929190615a8d565b610440600081565b6107ee6133d7565b6107d161081a366004615a4b565b61353c565b61044061082d366004615821565b613980565b61079e6139d6565b600f54610440565b600154610440565b6104b361085836600461579f565b613a01565b61044061086b366004615ae4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610440613a74565b600e54610460906001600160a01b031681565b6104406108bf366004615863565b613a87565b6104de613ae5565b6104406108da366004615863565b613c53565b600c54600160b01b900460ff166104b3565b6104406108ff36600461579f565b613ca6565b600c54600090610100900460ff16156109385760405162461bcd60e51b815260040161092f90615b17565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109705760405162461bcd60e51b815260040161092f90615b3c565b61097984613d06565b6001600160a01b03841660009081526010602052604090206003908101546109bd916109ad90670de0b6b3a7640000615b93565b6109b8906001615ba7565b613d61565b8311156109dc5760405162461bcd60e51b815260040161092f90615bbf565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a119392919088613e46565b915081610a305760405162461bcd60e51b815260040161092f90615bea565b82821115610a505760405162461bcd60e51b815260040161092f90615c13565b610a5e816003015485613f0a565b60038201556000610a6f8382613d61565b604080518781524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051838152600080516020615e0d8339815191529060200160405180910390a1610ad03384613f67565b610ae2610add8483613f0a565b613f71565b600254610af8906001600160a01b031682613f7a565b610b03863387613f84565b6003546000906001600160a01b0388811691161415610b2e57506004546001600160a01b0316610b3c565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b749291169085908990600401615c39565b602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190615c5d565b15610d5057600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610bf1939291908a613f9d565b9050610c01826003015482613f0a565b6003830155610c11866000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c54610c6e906201000090046001600160a01b031687613f67565b610c7b610add8786613f0a565b600254610c91906001600160a01b031685613f7a565b600c54610caf9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b50505050600080516020615ded83398151915286604051610d4591815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610d7490615c7a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da090615c7a565b8015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505050905090565b600c54600090610100900460ff1615610e225760405162461bcd60e51b815260040161092f90615b17565b610e2b84613d06565b610e3483613d06565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154610e7593919088614067565b925050505b9392505050565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615e4d83398151915290610eca9086815260200190565b60405180910390a35060015b92915050565b610eef670de0b6b3a76400006032615cb5565b81565b600c54610100900460ff1615610f1a5760405162461bcd60e51b815260040161092f90615b17565b600c805461010061ff001990911617908190556201000090046001600160a01b03163314610f835760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b604482015260640161092f565b6003546001600160a01b03878116911614610fe05760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f41444452455353000000604482015260640161092f565b6004546001600160a01b0384811691161461103d5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f41444452455353000000604482015260640161092f565b6110488686866140f3565b604080518681524260208201526001600160a01b038816913391600080516020615e2d833981519152910160405180910390a36110868383836140f3565b604080518381524260208201526001600160a01b038516913391600080516020615e2d833981519152910160405180910390a36110c16142dd565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a45050600c805461ff001916905550505050565b610eef6402540be400670de0b6b3a7640000615b93565b6000336001600160a01b038516148061118157506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111c55760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b604482015260640161092f565b6111d084848461433c565b336001600160a01b0385161480159061120e57506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b1561128f576001600160a01b03841660009081526008602090815260408083203384529091529020546112419083613f0a565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615e4d833981519152910160405180910390a35b5060019392505050565b60006112a485613d06565b6112ad84613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef939190898961444e565b979650505050505050565b600c546201000090046001600160a01b0316331461134f5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b611364620f4240670de0b6b3a7640000615b93565b8110156113a15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6113b4600a670de0b6b3a7640000615b93565b8111156113f15760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b600181905560408051338152602081018390527fbca0d601c32979eebac4e8cd06375b6e45d39af80fc06a33f366425b450dfb6991015b60405180910390a150565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087614500565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613f9d565b600c54600090610100900460ff16156115265760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661155e5760405162461bcd60e51b815260040161092f90615b3c565b61156784613d06565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461159c9392919088613f9d565b9150828210156115be5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b03851660009081526010602052604090206003908101546115f2916109ad90670de0b6b3a7640000615b93565b8211156116115760405162461bcd60e51b815260040161092f90615bbf565b61161f816003015483613f0a565b600382015560006116308582613d61565b604080518581524260208201529192506001600160a01b038816913391600080516020615dcd833981519152910160405180910390a3604051858152600080516020615e0d8339815191529060200160405180910390a16116913386613f67565b61169e610add8683613f0a565b6002546116b4906001600160a01b031682613f7a565b6116bf863385613f84565b6003546000906001600160a01b03888116911614156116ea57506004546001600160a01b03166116f8565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926117309291169085908b90600401615c39565b602060405180830381865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190615c5d565b15610d5057600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546117ad939291908c613f9d565b90506117bd826003015482613f0a565b60038301556117cd886000613d61565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615dcd833981519152910160405180910390a3600c5461182a906201000090046001600160a01b031689613f67565b611837610add8986613f0a565b60025461184d906001600160a01b031685613f7a565b600c5461186b9084906201000090046001600160a01b031683613f84565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b50505050600080516020615ded83398151915288604051610d4591815260200190565b600c54610100900460ff16156119295760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166119615760405162461bcd60e51b815260040161092f90615b3c565b600061196c60095490565b9050600061197a8583614584565b9050806119995760405162461bcd60e51b815260040161092f90615bea565b60005b600f54811015611ae1576000600f82815481106119bb576119bb615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906119f08583613d61565b905080611a0f5760405162461bcd60e51b815260040161092f90615bea565b878785818110611a2157611a21615cfb565b90506020020135811115611a475760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b038316600090815260106020526040902060030154611a6d908261469c565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615e2d83398151915290611ab89085904290918252602082015260400190565b60405180910390a3611acb8333836146ee565b5050508080611ad990615d11565b91505061199c565b50611aeb85614703565b611af53386613f7a565b604051858152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611b535760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16611b8b5760405162461bcd60e51b815260040161092f90615b3c565b611b9484613d06565b6001600160a01b038416600090815260106020526040902060030154611bc7906109b86002670de0b6b3a7640000615b93565b831115611be65760405162461bcd60e51b815260040161092f90615d2c565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611c1b9392919088614500565b915082821015611c3d5760405162461bcd60e51b815260040161092f90615cd4565b611c4b81600301548561469c565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051828152600080516020615e0d8339815191529060200160405180910390a1611cad82614703565b611cb73383613f7a565b611cc28533866146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611cfc93909290918961470c565b6003549091506001600160a01b0389811691161415611d28576004546001600160a01b03169150611d37565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611d6f9291169086908690600401615c39565b602060405180830381865afa158015611d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db09190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611ded9291169086908690600401615c39565b600060405180830381600087803b158015611e0757600080fd5b505af1158015611e1b573d6000803e3d6000fd5b50505050611e2d83600301548261469c565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615e2d833981519152910160405180910390a3604051858152600080516020615ded8339815191529060200160405180910390a1611e9985614703565b600c54611eb5906201000090046001600160a01b031686613f7a565b600c54611ed39083906201000090046001600160a01b0316836146ee565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115611f3e573360009081526008602090815260408083206001600160a01b0388168452909152812055611f6d565b611f488184613f0a565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615e4d833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff1615611fea5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166120225760405162461bcd60e51b815260040161092f90615b3c565b61202b84613d06565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154612060939291908861470c565b91508161207f5760405162461bcd60e51b815260040161092f90615bea565b8282111561209f5760405162461bcd60e51b815260040161092f90615c13565b6001600160a01b0385166000908152601060205260409020600301546120d2906109b86002670de0b6b3a7640000615b93565b8211156120f15760405162461bcd60e51b815260040161092f90615d2c565b6120ff81600301548361469c565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615e2d833981519152910160405180910390a3604051848152600080516020615e0d8339815191529060200160405180910390a161216184614703565b61216b3385613f7a565b6121768533846146ee565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546121ad939291908a61470c565b6003549091506000906001600160a01b03898116911614156121db57506004546001600160a01b03166121e9565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f926122219291169085908790600401615c39565b602060405180830381865afa15801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190615c5d565b15611ed3576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261229f9291169085908790600401615c39565b600060405180830381600087803b1580156122b957600080fd5b505af11580156122cd573d6000803e3d6000fd5b505050506122df83600301548361469c565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615e2d833981519152910160405180910390a361232a87614703565b600c54612346906201000090046001600160a01b031688613f7a565b600c546123649082906201000090046001600160a01b0316846146ee565b604051878152600080516020615ded8339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee90602401602060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190615d56565b905090565b600d546001600160a01b031633146124675760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b604482015260640161092f565b6001600160a01b0381166124bd5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964205f6e6577436f6c6c6563746f722061646472657373000000604482015260640161092f565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b89101611428565b610eef620f4240670de0b6b3a7640000615b93565b6000612531612a9d565b905060005b81518110156126b55760006006600084848151811061255757612557615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060006006600085858151811061259a5761259a615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550612612600d60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b60200260200101516001600160a01b03166147a69092919063ffffffff16565b7fbaf1ab77be65c7abf8fcd922bfcf0a749f556ac1a4cdf39c126ffaa1851edb5633600d60009054906101000a90046001600160a01b031685858151811061265c5761265c615cfb565b60200260200101518460405161269a94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a150806126ad81615d11565b915050612536565b5050565b610eef64e8d4a51000670de0b6b3a7640000615b93565b600c54600090610100900460ff16156126fb5760405162461bcd60e51b815260040161092f90615b17565b5060115490565b610eef670de0b6b3a76400006064615cb5565b600c54600090610100900460ff16156127405760405162461bcd60e51b815260040161092f90615b17565b61274982613d06565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d7490615c7a565b61278e6003670de0b6b3a7640000615b93565b610eef906001615ba7565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461149393919087613e46565b600061280633848461433c565b50600192915050565b600c54610100900460ff16156128375760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff1661286f5760405162461bcd60e51b815260040161092f90615b3c565b600061287a60095490565b90506000612889856000613d61565b905060006128978683613f0a565b905060006128a58285614584565b9050806128c45760405162461bcd60e51b815260040161092f90615bea565b6128ce3388613f67565b6002546128e4906001600160a01b031684613f7a565b6128ed82613f71565b60005b600f54811015612a35576000600f828154811061290f5761290f615cfb565b60009182526020808320909101546001600160a01b031680835260109091526040822060030154909250906129448583613d61565b9050806129635760405162461bcd60e51b815260040161092f90615bea565b89898581811061297557612975615cfb565b9050602002013581101561299b5760405162461bcd60e51b815260040161092f90615cd4565b6001600160a01b0383166000908152601060205260409020600301546129c19082613f0a565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615dcd83398151915290612a0c9085904290918252602082015260400190565b60405180910390a3612a1f833383613f84565b5050508080612a2d90615d11565b9150506128f0565b50604051878152600080516020615e0d8339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610eef600a670de0b6b3a7640000615b93565b6001612a93670de0b6b3a76400006002615cb5565b610eef9190615d6f565b600c54606090610100900460ff1615612ac85760405162461bcd60e51b815260040161092f90615b17565b600e54600160a01b900460ff16612af15760405162461bcd60e51b815260040161092f90615b3c565b600f805480602002602001604051908101604052809291908181526020018280548015610ded57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612b29575050505050905090565b601254600090600160a01b900460ff1615612bad5760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a4544000000000000000000604482015260640161092f565b6001600160a01b038916612c035760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f414444524553530000604482015260640161092f565b6001600160a01b038816612c595760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f414444524553530000000000604482015260640161092f565b612c6e620f4240670de0b6b3a7640000615b93565b87876000818110612c8157612c81615cfb565b905060200201351015612cc45760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b612cd7600a670de0b6b3a7640000615b93565b87876000818110612cea57612cea615cfb565b905060200201351115612d2d5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b612db38989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a906002908390839080828437600092019190915250614809915050565b9998505050505050505050565b600c546000908190610100900460ff1615612ded5760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff16612e255760405162461bcd60e51b815260040161092f90615b3c565b612e448460005b602002016020810190612e3f9190615863565b613d06565b612e4f846001612e2c565b6000601081612e616020880188615863565b6001600160a01b03168152602081019190915260400160009081209150601081876001602002016020810190612e979190615863565b6001600160a01b03166001600160a01b031681526020019081526020016000209050612ed682600301546002670de0b6b3a76400006109b89190615b93565b85351115612ef65760405162461bcd60e51b815260040161092f90615d2c565b6000612f2c83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b6020020135614067565b90506040860135811115612f785760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b6040805160808101825260038581015482526002808701546020808501919091529186015493830193909352918401546060820152600091612fcf9082908a3590612fc5908d018d615863565b60608c0135614947565b90975091506020880135871015612ff85760405162461bcd60e51b815260040161092f90615cd4565b61300685600301548361469c565b856003018190555061301c846003015488613f0a565b846003018190555061304e85600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156130705760405162461bcd60e51b815260040161092f90615bea565b60408801358611156130b65760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6130c1883588614584565b8311156130e05760405162461bcd60e51b815260040161092f90615bea565b6130f060408a0160208b01615863565b6001600160a01b031661310660208b018b615863565b604080518b358152602081018b9052428183015290516001600160a01b03929092169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a461316e61316660208b018b615863565b338a356146ee565b60006131988935613193816109b8670de0b6b3a76400008e60035b6020020135613f0a565b613f0a565b9050606089013515613233576131dc8a60025b6020020160208101906131be9190615863565b826131cc60208e018e615863565b6001600160a01b031691906147a6565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61320d60608c0160408d01615863565b61321a60208d018d615863565b8360405161322a93929190615c39565b60405180910390a15b61324d61324660408c0160208d01615863565b338a613f84565b505050505050600c805461ff001916905590939092509050565b6060806000613274612a9d565b90506000815167ffffffffffffffff81111561329257613292615d86565b6040519080825280602002602001820160405280156132bb578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156132da576132da615d86565b604051908082528060200260200182016040528015613303578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061332457613324615cfb565b602002602001015183828151811061333e5761333e615cfb565b60200260200101906001600160a01b031690816001600160a01b0316815250506006600085838151811061337457613374615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548282815181106133af576133af615cfb565b6020908102919091010152806133c481615d11565b915050613309565b509094909350915050565b60608060006133e4612a9d565b90506000815167ffffffffffffffff81111561340257613402615d86565b60405190808252806020026020018201604052801561342b578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561344a5761344a615d86565b604051908082528060200260200182016040528015613473578160200160208202803683370190505b50905060005b83518110156133cc5783818151811061349457613494615cfb565b60200260200101518382815181106134ae576134ae615cfb565b60200260200101906001600160a01b031690816001600160a01b031681525050600560008583815181106134e4576134e4615cfb565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061351f5761351f615cfb565b60209081029190910101528061353481615d11565b915050613479565b600c546000908190610100900460ff16156135695760405162461bcd60e51b815260040161092f90615b17565b600c805461ff001916610100179055600e54600160a01b900460ff166135a15760405162461bcd60e51b815260040161092f90615b3c565b6135ac846000612e2c565b6135b7846001612e2c565b60006010816135c96020880188615863565b6001600160a01b031681526020810191909152604001600090812091506010818760016020020160208101906135ff9190615863565b6001600160a01b03166001600160a01b03168152602001908152602001600020905061363e81600301546003670de0b6b3a76400006109ad9190615b93565b602086013511156136615760405162461bcd60e51b815260040161092f90615bbf565b600061368d83600301548460020154846003015485600201548a600360048110612f2257612f22615cfb565b905060408601358111156136d95760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b60408051608081018252600385810154825260028087015460208085019190915291860154938301939093529184015460608201526000916137329082908a81013590613728908d018d615863565b60608c0135614b5f565b909750915087358711156137585760405162461bcd60e51b815260040161092f90615c13565b61376685600301548361469c565b60038087019190915584015461377e90896001613189565b84600301819055506137b085600301548660020154866003015487600201548c600360048110612f2257612f22615cfb565b9550828610156137d25760405162461bcd60e51b815260040161092f90615bea565b60408801358611156138185760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6138268760208a0135614584565b8311156138455760405162461bcd60e51b815260040161092f90615bea565b61385560408a0160208b01615863565b6001600160a01b031661386b60208b018b615863565b6001600160a01b0316337f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe8a8c6001604080519384526020918202929092013590830152429082015260600160405180910390a46138d66138cf60208b018b615863565b33896146ee565b60006138f488613193816109b8670de0b6b3a76400008e6003613189565b90506060890135156139625761390b8a60026131ab565b7f73412e11c89feeef4b84e0900c5de25904e834da8f2e1b3cddfd55de4cb6ecae61393c60608c0160408d01615863565b61394960208d018d615863565b8360405161395993929190615c39565b60405180910390a15b61324d61397560408c0160208d01615863565b3360208c0135613f84565b600061398b85613d06565b61399484613d06565b6001600160a01b038086166000908152601060205260408082209287168252902060038083015460028085015492840154908401546112ef9391908989614d83565b600c54606090610100900460ff1615612af15760405162461bcd60e51b815260040161092f90615b17565b3360009081526008602090815260408083206001600160a01b0386168452909152812054613a2f908361469c565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615e4d8339815191529101610eca565b610eef6002670de0b6b3a7640000615b93565b600c54600090610100900460ff1615613ab25760405162461bcd60e51b815260040161092f90615b17565b613abb82613d06565b6001600160a01b038216600090815260106020526040902060020154601154610e7a908290614584565b6000613aef612a9d565b905060005b81518110156126b557600060056000848481518110613b1557613b15615cfb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613b5857613b58615cfb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550613bb0600e60009054906101000a90046001600160a01b0316828585815181106125f2576125f2615cfb565b7fe8e83bbe0f2a413d8e79dcb9ef4143cd967143e9d6b93c91d002c7eefdc507cc33600e60009054906101000a90046001600160a01b0316858581518110613bfa57613bfa615cfb565b602002602001015184604051613c3894939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080613c4b81615d11565b915050613af4565b600c54600090610100900460ff1615613c7e5760405162461bcd60e51b815260040161092f90615b17565b613c8782613d06565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546114939391908761470c565b6001600160a01b03811660009081526010602052604090205460ff16613d5e5760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d093d55391609a1b604482015260640161092f565b50565b600080613d6e8385615cb5565b9050831580613d85575082613d838583615b93565b145b613dc45760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613dd96002670de0b6b3a7640000615b93565b613de39083615ba7565b905081811015613e285760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613e3c670de0b6b3a764000083615b93565b9695505050505050565b600080613e538685614584565b90506000613e69670de0b6b3a764000083613f0a565b90506000613e7982600154613d61565b90506000613e9886613e93670de0b6b3a764000085613f0a565b614584565b90506000613ea68b83613f0a565b90506000613eb4828d614584565b90506000613ec28288614e37565b90506000613ed0828d613d61565b90506000613ede8d83613f0a565b9050613ef781613e93670de0b6b3a76400006000613f0a565b9f9e505050505050505050505050505050565b6000806000613f198585614f58565b915091508015613f5f5760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015260640161092f565b509392505050565b6126b58282614f8f565b613d5e81614f9a565b6126b58282615066565b613f986001600160a01b03841683836147a6565b505050565b600080613faa8685614584565b90506000613fc5846109b8670de0b6b3a76400006000613f0a565b90506000613fd38783613f0a565b90506000613fe18289614584565b9050600061400082613ffb670de0b6b3a764000088614584565b614e37565b9050600061400e828d613d61565b9050600061401c8d83613f0a565b9050600061403d614035670de0b6b3a76400008a613f0a565b600154613d61565b9050614055826109b8670de0b6b3a764000084613f0a565b9e9d5050505050505050505050505050565b6000806140748787614584565b905060006140828686614584565b905060006140908383614584565b905060006140d9670de0b6b3a7640000613e93670de0b6b3a7640000896000546140b861239b565b6001546140c59190615ba7565b6140cf9190615ba7565b6131939190615ba7565b90506140e58282613d61565b9a9950505050505050505050565b600c546201000090046001600160a01b031633146141485760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b6001600160a01b03831660009081526010602052604090205460ff16156141a05760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b604482015260640161092f565b600e54600160a01b900460ff16156141ed5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600f546002116142305760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015260640161092f565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613f98838383615071565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561431e614319670de0b6b3a76400006064615cb5565b614703565b61433a33614335670de0b6b3a76400006064615cb5565b613f7a565b565b6001600160a01b03831660009081526007602052604090205481111561439b5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b6001600160a01b0383166000908152600760205260409020546143be9082613f0a565b6001600160a01b0380851660009081526007602052604080822093909355908416815220546143ed908261469c565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906144419085815260200190565b60405180910390a3505050565b60008061445b8786614584565b9050600080548461446a61239b565b6001546144779190615ba7565b6144819190615ba7565b61448b9190615ba7565b905060006144a1670de0b6b3a764000083613f0a565b90506144ad8682613d61565b905060006144bf8b613e938d8561469c565b905060006144cd8286614e37565b905060006144e3670de0b6b3a764000083613f0a565b90506144ef8b82613d61565b9d9c50505050505050505050505050565b60008061450d8685614584565b90506000614526614035670de0b6b3a764000084613f0a565b90506000614540856109b8670de0b6b3a764000085613f0a565b9050600061454e8a8361469c565b9050600061455c828c614584565b9050600061456a8287614e37565b90506000614578828c613d61565b90506144ef818c613f0a565b6000816145c25760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015260640161092f565b60006145d6670de0b6b3a764000085615cb5565b90508315806145f55750670de0b6b3a76400006145f38583615b93565b145b6146345760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000614641600285615b93565b61464b9083615ba7565b9050818110156146905760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b6000613e3c8583615b93565b6000806146a98385615ba7565b905083811015610e7a5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015260640161092f565b613f986001600160a01b0384168330846152c1565b613d5e816152e8565b6000806147198685614584565b90506000614727868561469c565b905060006147358288614584565b9050600061474b670de0b6b3a764000085614584565b905060006147598383614e37565b90506000614767828d613d61565b90506000614775828e613f0a565b9050600061478e614035670de0b6b3a76400008a613f0a565b905061405582613e93670de0b6b3a764000084613f0a565b6040516001600160a01b038316602482015260448101829052613f9890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152615357565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b03191691881691909117905584516000908690829061485f5761485f615cfb565b60200260200101516001819055508560018151811061488057614880615cfb565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b6000808061496487600160200201518860035b6020020151614584565b9050600061498487613193896109b8670de0b6b3a764000061319361239b565b6001600160a01b0387166000908152600560205260409020549091506149aa908261469c565b60056000886001600160a01b03166001600160a01b031681526020019081526020016000208190555060006149f1886131938a6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038816600090815260066020526040902054909150614a17908261469c565b6001600160a01b03881660009081526006602052604081209190915580548790614a3f61239b565b600154614a4c9190615ba7565b614a569190615ba7565b614a609190615ba7565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614a9f8a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820186905281018490526001600160a01b038a16606082015260800160405180910390a16000614ae0670de0b6b3a764000083613f0a565b9050614aec8a82613d61565b8b51909150600090614b0290613e93818561469c565b90506000614b108288614e37565b90506000614b26670de0b6b3a764000083613f0a565b9050614b398e6002602002015182613d61565b995089614b4a8e613193898b615ba7565b99509950505050505050505094509492505050565b60008080614b76876003602002015188600161495a565b90506000614b8b886002602002015188613f0a565b90506000614ba0896002602002015183614584565b90506000614bae8285614e37565b9050614bc281670de0b6b3a7640000613f0a565b90506000805488614bd161239b565b600154614bde9190615ba7565b614be89190615ba7565b614bf29190615ba7565b8b51909150614c1790614c059084613d61565b613e93670de0b6b3a764000084613f0a565b96506000614c37886131938a6109b8670de0b6b3a764000061319361239b565b6001600160a01b038b16600090815260056020526040902054909150614c5d908261469c565b600560008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614ca4896131938b6109b8670de0b6b3a7640000600054613f0a565b6001600160a01b038c16600090815260066020526040902054909150614cca908261469c565b6001600160a01b038c166000908152600660205260409020558c51614d0790614cf39086613d61565b613e93670de0b6b3a7640000600154613f0a565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614d468a6131938c6109b8670de0b6b3a7640000600154613f0a565b604080519182526020820185905281018390526001600160a01b038d16606082015260800160405180910390a15050505050505094509492505050565b600080614d908588614584565b90506000614d9e8786613f0a565b90506000614dac8883614584565b90506000614dba8285614e37565b9050614dce81670de0b6b3a7640000613f0a565b90506000805487614ddd61239b565b600154614dea9190615ba7565b614df49190615ba7565b614dfe9190615ba7565b9050614e12670de0b6b3a764000082613f0a565b9550614e27614e218d84613d61565b87614584565b9c9b505050505050505050505050565b60006001831015614e825760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b604482015260640161092f565b6001614e97670de0b6b3a76400006002615cb5565b614ea19190615d6f565b831115614ee95760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b604482015260640161092f565b6000614ef483615429565b90506000614f028483613f0a565b90506000614f1886614f1385615447565b61545b565b905081614f29579250610ed6915050565b6000614f4c8784614f476402540be400670de0b6b3a7640000615b93565b6154cf565b90506112ef8282613d61565b600080828410614f7757614f6c8385615d6f565b600091509150614f88565b614f818484615d6f565b6001915091505b9250929050565b6126b582308361433c565b30600090815260076020526040902054811115614ff05760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b3060009081526007602052604090205461500a9082613f0a565b306000908152600760205260409020556009546150279082613f0a565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b6126b530838361433c565b670de0b6b3a76400008110156150ba5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b604482015260640161092f565b6150cd670de0b6b3a76400006032615cb5565b81111561510d5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b604482015260640161092f565b61512464e8d4a51000670de0b6b3a7640000615b93565b8210156151655760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b604482015260640161092f565b6001600160a01b038316600090815260106020526040902060020154808211156152015761519e6011546151998484613f0a565b61469c565b6011556151b4670de0b6b3a76400006032615cb5565b60115411156151fc5760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b604482015260640161092f565b61521d565b8082101561521d576152196011546131938385613f0a565b6011555b6001600160a01b0384166000908152601060205260409020600281018390556003018054908490558084111561526657615261853361525c8785613f0a565b6146ee565b6152ba565b808410156152ba57600061527a8286613f0a565b90506000615289826000613d61565b905061529f873361529a8585613f0a565b613f84565b6002546152b79088906001600160a01b031683613f84565b50505b5050505050565b6152e2846323b872dd60e01b8585856040516024016147d293929190615c39565b50505050565b30600090815260076020526040902054615302908261469c565b3060009081526007602052604090205560095461531f908261469c565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161505b565b60006153ac826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166155bf9092919063ffffffff16565b805190915015613f9857808060200190518101906153ca9190615c5d565b613f985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161092f565b6000670de0b6b3a764000061543d83615447565b610ed69190615cb5565b6000610ed6670de0b6b3a764000083615b93565b6000828161546a600285615d9c565b61547c57670de0b6b3a764000061547e565b815b905061548b600285615b93565b93505b83156114935761549e8283613d61565b91506154ab600285615d9c565b156154bd576154ba8183613d61565b90505b6154c8600285615b93565b935061548e565b60008281806154e687670de0b6b3a7640000614f58565b9092509050670de0b6b3a764000080600060015b8884106155b0576000615515670de0b6b3a764000083615cb5565b90506000806155358a61553085670de0b6b3a7640000613f0a565b614f58565b91509150615547876109b8848c613d61565b96506155538784614584565b965086615562575050506155b0565b871561556c579315935b8015615576579315935b841561558d576155868688613f0a565b955061559a565b615597868861469c565b95505b50505080806155a890615d11565b9150506154fa565b50909998505050505050505050565b6060611493848460008585843b6156185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161092f565b600080866001600160a01b031685876040516156349190615db0565b60006040518083038185875af1925050503d8060008114615671576040519150601f19603f3d011682016040523d82523d6000602084013e615676565b606091505b50915091506112ef82828660608315615690575081610e7a565b8251156156a05782518084602001fd5b8160405162461bcd60e51b815260040161092f9190615730565b80356001600160a01b038116811461276757600080fd5b6000806000606084860312156156e657600080fd5b6156ef846156ba565b95602085013595506040909401359392505050565b60005b8381101561571f578181015183820152602001615707565b838111156152e25750506000910152565b602081526000825180602084015261574f816040850160208701615704565b601f01601f19169190910160400192915050565b60008060006060848603121561577857600080fd5b615781846156ba565b925061578f602085016156ba565b9150604084013590509250925092565b600080604083850312156157b257600080fd5b6157bb836156ba565b946020939093013593505050565b60008060008060008060c087890312156157e257600080fd5b6157eb876156ba565b95506020870135945060408701359350615807606088016156ba565b92506080870135915060a087013590509295509295509295565b6000806000806080858703121561583757600080fd5b615840856156ba565b935061584e602086016156ba565b93969395505050506040820135916060013590565b60006020828403121561587557600080fd5b610e7a826156ba565b60006020828403121561589057600080fd5b5035919050565b60008083601f8401126158a957600080fd5b50813567ffffffffffffffff8111156158c157600080fd5b6020830191508360208260051b8501011115614f8857600080fd5b6000806000604084860312156158f157600080fd5b83359250602084013567ffffffffffffffff81111561590f57600080fd5b61591b86828701615897565b9497909650939450505050565b600081518084526020808501945080840160005b838110156159615781516001600160a01b03168752958201959082019060010161593c565b509495945050505050565b602081526000610e7a6020830184615928565b8015158114613d5e57600080fd5b8060408101831015610ed657600080fd5b600080600080600080600080610120898b0312156159bb57600080fd5b6159c4896156ba565b97506159d260208a016156ba565b9650604089013567ffffffffffffffff8111156159ee57600080fd5b6159fa8b828c01615897565b9097509550506060890135615a0e8161597f565b93506080890135615a1e8161597f565b9250615a2d8a60a08b0161598d565b9150615a3c8a60e08b0161598d565b90509295985092959890939650565b60008060e08385031215615a5e57600080fd5b6060830184811115615a6f57600080fd5b8392508460e085011115615a8257600080fd5b809150509250929050565b604081526000615aa06040830185615928565b82810360208481019190915284518083528582019282019060005b81811015615ad757845183529383019391830191600101615abb565b5090979650505050505050565b60008060408385031215615af757600080fd5b615b00836156ba565b9150615b0e602084016156ba565b90509250929050565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615ba257615ba2615b67565b500490565b60008219821115615bba57615bba615b7d565b500190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615c6f57600080fd5b8151610e7a8161597f565b600181811c90821680615c8e57607f821691505b60208210811415615caf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615615ccf57615ccf615b7d565b500290565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d2557615d25615b7d565b5060010190565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b600060208284031215615d6857600080fd5b5051919050565b600082821015615d8157615d81615b7d565b500390565b634e487b7160e01b600052604160045260246000fd5b600082615dab57615dab615b67565b500690565b60008251615dc2818460208701615704565b919091019291505056fe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220b2cddedb256d857dbe0e18db9bfbe32072683bb77f53e9eca2ed351a904324c864736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/pools/dispenser/Dispenser.sol/Dispenser.dbg.json b/artifacts/pools/dispenser/Dispenser.sol/Dispenser.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/pools/dispenser/Dispenser.sol/Dispenser.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/pools/dispenser/Dispenser.sol/Dispenser.json b/artifacts/pools/dispenser/Dispenser.sol/Dispenser.json new file mode 100644 index 000000000..074566685 --- /dev/null +++ b/artifacts/pools/dispenser/Dispenser.sol/Dispenser.json @@ -0,0 +1,358 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Dispenser", + "sourceName": "contracts/pools/dispenser/Dispenser.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "DispenserActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAllowedSwapper", + "type": "address" + } + ], + "name": "DispenserAllowedSwapperChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "DispenserCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "DispenserDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "OwnerWithdrawed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "userAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensDispensed", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + } + ], + "name": "activate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "create", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "datatokensList", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + } + ], + "name": "deactivate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "destination", + "type": "address" + } + ], + "name": "dispense", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + } + ], + "name": "ownerWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + }, + { + "internalType": "address", + "name": "newAllowedSwapper", + "type": "address" + } + ], + "name": "setAllowedSwapper", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + } + ], + "name": "status", + "outputs": [ + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "bool", + "name": "isMinter", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161160938038061160983398101604081905261002f916100b3565b60016000556001600160a01b03811661008e5760405162461bcd60e51b815260206004820152601f60248201527f44697370656e7365723a2057726f6e6720526f75746572206164647265737300604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100e3565b6000602082840312156100c557600080fd5b81516001600160a01b03811681146100dc57600080fd5b9392505050565b611517806100f26000396000f3fe6080604052600436106100865760003560e01c806345d6646b1161005957806345d6646b1461011d578063645b8b1b1461013d578063938d71d0146101a0578063f887ea40146101c0578063f9bfaa7d146101e057600080fd5b80631d746d831461008b57806324ce2917146100a05780633398086a146100c05780633ea053eb146100fd575b600080fd5b61009e61009936600461129e565b610200565b005b3480156100ac57600080fd5b5061009e6100bb3660046112da565b61077e565b3480156100cc57600080fd5b506100e06100db366004611331565b6109b1565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010957600080fd5b5061009e61011836600461134a565b6109db565b34801561012957600080fd5b5061009e610138366004611365565b610ab8565b34801561014957600080fd5b5061015d61015836600461134a565b610ba6565b6040805197151588526001600160a01b039687166020890152941515948701949094526060860192909252608085015260a08401521660c082015260e0016100f4565b3480156101ac57600080fd5b5061009e6101bb366004611398565b610d0f565b3480156101cc57600080fd5b506001546100e0906001600160a01b031681565b3480156101ec57600080fd5b5061009e6101fb36600461134a565b610e2f565b600260005414156102585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556001600160a01b0383166102835760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03831660009081526002602052604090205460ff166102e25760405162461bcd60e51b815260206004820152601460248201527344697370656e736572206e6f742061637469766560601b604482015260640161024f565b600082116103285760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081e995c9bc8185b5bdd5b9d606a1b604482015260640161024f565b6001600160a01b0383166000908152600260205260409020600101548211156103855760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b604482015260640161024f565b6001600160a01b038381166000908152600260205260409020600301541615610426576001600160a01b038381166000908152600260205260409020600301541633146104265760405162461bcd60e51b815260206004820152602960248201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f2072604482015268195c5d595cdd08111560ba1b606482015260840161024f565b6040516370a0823160e01b81526001600160a01b03828116600483015284916000918316906370a0823190602401602060405180830381865afa158015610471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104959190611402565b6001600160a01b0386166000908152600260208190526040909120015490915081106105035760405162461bcd60e51b815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f2068696768000000000000000000604482015260640161024f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190611402565b905084811080156105e257506040516355138f0d60e11b81523060048201526001600160a01b0384169063aa271e1a90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e2919061141b565b156106ca576001600160a01b0383166340c10f1930610601848961143d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c79190611402565b90505b848110156107105760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820726573657276657360681b604482015260640161024f565b6107246001600160a01b0387168587610fdf565b836001600160a01b0316866001600160a01b03167f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135438760405161076991815260200190565b60405180910390a35050600160005550505050565b6001546001600160a01b031633146107d15760405162461bcd60e51b81526020600482015260166024820152752234b9b832b739b2b91d1037b7363c903937baba32b960511b604482015260640161024f565b6001600160a01b0385166107f75760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03858116600090815260026020526040902054610100900416158061084457506001600160a01b0385811660009081526002602052604090205461010090048116908316145b6108905760405162461bcd60e51b815260206004820152601960248201527f44617461546f6b656e20616c7265616479206372656174656400000000000000604482015260640161024f565b6001600160a01b038581166000818152600260208181526040808420805489881661010081026001600160a81b031990921691909117600190811783558083018d90559482018b905560039182018054988a166001600160a01b0319998a16811790915582549586018355919095527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180549096168517909555845189815290810188905293840152917f7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c99060600160405180910390a3806001600160a01b0316856001600160a01b03167fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca560405160405180910390a35050505050565b600381815481106109c157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116610a015760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610a6f5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b89190a250565b6001600160a01b038216610ade5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038281166000908152600260205260409020546101009004163314610b4c5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b0382811660008181526002602052604080822060030180546001600160a01b0319169486169485179055517fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca59190a35050565b60008080808080806001600160a01b038816610bd45760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b0388811660008181526002602081905260409182902080546001820154919092015492516370a0823160e01b815230600482015260ff83169c506101009092049094169950929650945089916370a0823190602401602060405180830381865afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c719190611402565b6040516355138f0d60e11b81523060048201529093506001600160a01b0382169063aa271e1a90602401602060405180830381865afa158015610cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdc919061141b565b6001600160a01b03998a16600090815260026020526040902060030154989a979990989597949650929490921692915050565b6001600160a01b038316610d355760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038381166000908152600260205260409020546101009004163314610d935760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6001600160a01b0383166000818152600260208190526040808320805460ff191660019081178255818101889055920185905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b03191684179055517fe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a87459190a2505050565b60026000541415610e825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161024f565b60026000556001600160a01b038116610ead5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610f0b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190611402565b90508015610fd557610f946001600160a01b0384163383610fdf565b60405181815233906001600160a01b038516907f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9060200160405180910390a35b5050600160005550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611031908490611036565b505050565b600061108b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111089092919063ffffffff16565b80519091501561103157808060200190518101906110a9919061141b565b6110315760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161024f565b60606111178484600085611121565b90505b9392505050565b6060824710156111825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161024f565b843b6111d05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161024f565b600080866001600160a01b031685876040516111ec9190611492565b60006040518083038185875af1925050503d8060008114611229576040519150601f19603f3d011682016040523d82523d6000602084013e61122e565b606091505b509150915061123e828286611249565b979650505050505050565b6060831561125857508161111a565b8251156112685782518084602001fd5b8160405162461bcd60e51b815260040161024f91906114ae565b80356001600160a01b038116811461129957600080fd5b919050565b6000806000606084860312156112b357600080fd5b6112bc84611282565b9250602084013591506112d160408501611282565b90509250925092565b600080600080600060a086880312156112f257600080fd5b6112fb86611282565b9450602086013593506040860135925061131760608701611282565b915061132560808701611282565b90509295509295909350565b60006020828403121561134357600080fd5b5035919050565b60006020828403121561135c57600080fd5b61111a82611282565b6000806040838503121561137857600080fd5b61138183611282565b915061138f60208401611282565b90509250929050565b6000806000606084860312156113ad57600080fd5b6113b684611282565b95602085013595506040909401359392505050565b6020808252601e908201527f496e76616c696420746f6b656e20636f6e747261637420616464726573730000604082015260600190565b60006020828403121561141457600080fd5b5051919050565b60006020828403121561142d57600080fd5b8151801515811461111a57600080fd5b60008282101561145d57634e487b7160e01b600052601160045260246000fd5b500390565b60005b8381101561147d578181015183820152602001611465565b8381111561148c576000848401525b50505050565b600082516114a4818460208701611462565b9190910192915050565b60208152600082518060208401526114cd816040850160208701611462565b601f01601f1916919091016040019291505056fea2646970667358221220fb4b6a3a8a2f8ea9e99a8ff393a1aacd46b89c5c97ff6c190118e2b1d031179664736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106100865760003560e01c806345d6646b1161005957806345d6646b1461011d578063645b8b1b1461013d578063938d71d0146101a0578063f887ea40146101c0578063f9bfaa7d146101e057600080fd5b80631d746d831461008b57806324ce2917146100a05780633398086a146100c05780633ea053eb146100fd575b600080fd5b61009e61009936600461129e565b610200565b005b3480156100ac57600080fd5b5061009e6100bb3660046112da565b61077e565b3480156100cc57600080fd5b506100e06100db366004611331565b6109b1565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010957600080fd5b5061009e61011836600461134a565b6109db565b34801561012957600080fd5b5061009e610138366004611365565b610ab8565b34801561014957600080fd5b5061015d61015836600461134a565b610ba6565b6040805197151588526001600160a01b039687166020890152941515948701949094526060860192909252608085015260a08401521660c082015260e0016100f4565b3480156101ac57600080fd5b5061009e6101bb366004611398565b610d0f565b3480156101cc57600080fd5b506001546100e0906001600160a01b031681565b3480156101ec57600080fd5b5061009e6101fb36600461134a565b610e2f565b600260005414156102585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556001600160a01b0383166102835760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03831660009081526002602052604090205460ff166102e25760405162461bcd60e51b815260206004820152601460248201527344697370656e736572206e6f742061637469766560601b604482015260640161024f565b600082116103285760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081e995c9bc8185b5bdd5b9d606a1b604482015260640161024f565b6001600160a01b0383166000908152600260205260409020600101548211156103855760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b604482015260640161024f565b6001600160a01b038381166000908152600260205260409020600301541615610426576001600160a01b038381166000908152600260205260409020600301541633146104265760405162461bcd60e51b815260206004820152602960248201527f546869732061646472657373206973206e6f7420616c6c6f77656420746f2072604482015268195c5d595cdd08111560ba1b606482015260840161024f565b6040516370a0823160e01b81526001600160a01b03828116600483015284916000918316906370a0823190602401602060405180830381865afa158015610471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104959190611402565b6001600160a01b0386166000908152600260208190526040909120015490915081106105035760405162461bcd60e51b815260206004820152601760248201527f43616c6c65722062616c616e636520746f6f2068696768000000000000000000604482015260640161024f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190611402565b905084811080156105e257506040516355138f0d60e11b81523060048201526001600160a01b0384169063aa271e1a90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e2919061141b565b156106ca576001600160a01b0383166340c10f1930610601848961143d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c79190611402565b90505b848110156107105760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820726573657276657360681b604482015260640161024f565b6107246001600160a01b0387168587610fdf565b836001600160a01b0316866001600160a01b03167f63e223ff524bd93d4cbff98ef34405b39f63ded87f5a8d85e39ccda966f135438760405161076991815260200190565b60405180910390a35050600160005550505050565b6001546001600160a01b031633146107d15760405162461bcd60e51b81526020600482015260166024820152752234b9b832b739b2b91d1037b7363c903937baba32b960511b604482015260640161024f565b6001600160a01b0385166107f75760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b03858116600090815260026020526040902054610100900416158061084457506001600160a01b0385811660009081526002602052604090205461010090048116908316145b6108905760405162461bcd60e51b815260206004820152601960248201527f44617461546f6b656e20616c7265616479206372656174656400000000000000604482015260640161024f565b6001600160a01b038581166000818152600260208181526040808420805489881661010081026001600160a81b031990921691909117600190811783558083018d90559482018b905560039182018054988a166001600160a01b0319998a16811790915582549586018355919095527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180549096168517909555845189815290810188905293840152917f7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c99060600160405180910390a3806001600160a01b0316856001600160a01b03167fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca560405160405180910390a35050505050565b600381815481106109c157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116610a015760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610a6f5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b89190a250565b6001600160a01b038216610ade5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038281166000908152600260205260409020546101009004163314610b4c5760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e20616c7265616479206163746976617465640000000000604482015260640161024f565b6001600160a01b0382811660008181526002602052604080822060030180546001600160a01b0319169486169485179055517fac5c7317d52e88de62aff4ba6869a4882a4556557b761158934d2fd32a8b2ca59190a35050565b60008080808080806001600160a01b038816610bd45760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b0388811660008181526002602081905260409182902080546001820154919092015492516370a0823160e01b815230600482015260ff83169c506101009092049094169950929650945089916370a0823190602401602060405180830381865afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c719190611402565b6040516355138f0d60e11b81523060048201529093506001600160a01b0382169063aa271e1a90602401602060405180830381865afa158015610cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdc919061141b565b6001600160a01b03998a16600090815260026020526040902060030154989a979990989597949650929490921692915050565b6001600160a01b038316610d355760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038381166000908152600260205260409020546101009004163314610d935760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6001600160a01b0383166000818152600260208190526040808320805460ff191660019081178255818101889055920185905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180546001600160a01b03191684179055517fe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a87459190a2505050565b60026000541415610e825760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161024f565b60026000556001600160a01b038116610ead5760405162461bcd60e51b815260040161024f906113cb565b6001600160a01b038181166000908152600260205260409020546101009004163314610f0b5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b604482015260640161024f565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190611402565b90508015610fd557610f946001600160a01b0384163383610fdf565b60405181815233906001600160a01b038516907f03185212530fcdce6b38fbf62ed27ab29b1b047f59b76b17401388a70a95f41b9060200160405180910390a35b5050600160005550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611031908490611036565b505050565b600061108b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111089092919063ffffffff16565b80519091501561103157808060200190518101906110a9919061141b565b6110315760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161024f565b60606111178484600085611121565b90505b9392505050565b6060824710156111825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161024f565b843b6111d05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161024f565b600080866001600160a01b031685876040516111ec9190611492565b60006040518083038185875af1925050503d8060008114611229576040519150601f19603f3d011682016040523d82523d6000602084013e61122e565b606091505b509150915061123e828286611249565b979650505050505050565b6060831561125857508161111a565b8251156112685782518084602001fd5b8160405162461bcd60e51b815260040161024f91906114ae565b80356001600160a01b038116811461129957600080fd5b919050565b6000806000606084860312156112b357600080fd5b6112bc84611282565b9250602084013591506112d160408501611282565b90509250925092565b600080600080600060a086880312156112f257600080fd5b6112fb86611282565b9450602086013593506040860135925061131760608701611282565b915061132560808701611282565b90509295509295909350565b60006020828403121561134357600080fd5b5035919050565b60006020828403121561135c57600080fd5b61111a82611282565b6000806040838503121561137857600080fd5b61138183611282565b915061138f60208401611282565b90509250929050565b6000806000606084860312156113ad57600080fd5b6113b684611282565b95602085013595506040909401359392505050565b6020808252601e908201527f496e76616c696420746f6b656e20636f6e747261637420616464726573730000604082015260600190565b60006020828403121561141457600080fd5b5051919050565b60006020828403121561142d57600080fd5b8151801515811461111a57600080fd5b60008282101561145d57634e487b7160e01b600052601160045260246000fd5b500390565b60005b8381101561147d578181015183820152602001611465565b8381111561148c576000848401525b50505050565b600082516114a4818460208701611462565b9190910192915050565b60208152600082518060208401526114cd816040850160208701611462565b601f01601f1916919091016040019291505056fea2646970667358221220fb4b6a3a8a2f8ea9e99a8ff393a1aacd46b89c5c97ff6c190118e2b1d031179664736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.dbg.json b/artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json b/artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json new file mode 100644 index 000000000..b837970d5 --- /dev/null +++ b/artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json @@ -0,0 +1,917 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FixedRateExchange", + "sourceName": "contracts/pools/fixedRate/FixedRateExchange.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + }, + { + "internalType": "address", + "name": "_opfCollector", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + } + ], + "name": "ExchangeActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "ExchangeAllowedSwapperChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dataToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fixedRate", + "type": "uint256" + } + ], + "name": "ExchangeCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + } + ], + "name": "ExchangeDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "name": "ExchangeMintStateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + } + ], + "name": "ExchangeRateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "feeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + } + ], + "name": "MarketFeeCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "feeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + } + ], + "name": "OceanFeeCollected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "by", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseTokenSwappedAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dataTokenSwappedAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenOutAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenCollected", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBaseTokenAmount", + "type": "uint256" + } + ], + "name": "buyDT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataTokenAmount", + "type": "uint256" + } + ], + "name": "calcBaseInGivenOutDT", + "outputs": [ + { + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseTokenAmountBeforeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataTokenAmount", + "type": "uint256" + } + ], + "name": "calcBaseOutGivenInDT", + "outputs": [ + { + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseTokenAmountBeforeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectBT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectDT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "collectOceanFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dataToken", + "type": "address" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + } + ], + "name": "createWithDecimals", + "outputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "address", + "name": "dataToken", + "type": "address" + }, + { + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + } + ], + "name": "generateExchangeId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getAllowedSwapper", + "outputs": [ + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getBTSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getDTSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getExchange", + "outputs": [ + { + "internalType": "address", + "name": "exchangeOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "dataToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "dtDecimals", + "type": "uint256" + }, + { + "internalType": "address", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "btDecimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fixedRate", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "dtSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "btSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dtBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "btBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getExchanges", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getFeesInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "marketFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "marketFeeCollector", + "type": "address" + }, + { + "internalType": "uint256", + "name": "opfFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "marketFeeAvailable", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "oceanFeeAvailable", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNumberOfExchanges", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "basetokenAddress", + "type": "address" + } + ], + "name": "getOPFFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "getRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "isActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opfCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minBaseTokenAmount", + "type": "uint256" + } + ], + "name": "sellDT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAllowedSwapper", + "type": "address" + } + ], + "name": "setAllowedSwapper", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + } + ], + "name": "setRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "name": "toggleExchangeState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "name": "toggleMintState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_newMarketFee", + "type": "uint256" + } + ], + "name": "updateMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_newMarketCollector", + "type": "address" + } + ], + "name": "updateMarketFeeCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620031de380380620031de833981016040819052620000349162000158565b60016000556001600160a01b038216620000a55760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6001600160a01b038116620001095760405162461bcd60e51b8152602060048201526024808201527f46697865645261746545786368616e67653a2057726f6e67204f5046206164646044820152637265737360e01b60648201526084016200009c565b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905562000190565b80516001600160a01b03811681146200015357600080fd5b919050565b600080604083850312156200016c57600080fd5b62000177836200013b565b915062000187602084016200013b565b90509250929050565b61303e80620001a06000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063825b5cd6116100f9578063b686bcaf11610097578063c99733a711610071578063c99733a714610576578063f532129e14610589578063f8154aee1461059c578063f887ea40146105af57600080fd5b8063b686bcaf1461053d578063c1f6572e14610550578063c66274ea1461056357600080fd5b806388823872116100d357806388823872146104eb578063a28f78f1146104fe578063b32b56f914610511578063b42414291461053557600080fd5b8063825b5cd6146103c5578063855058dd146103d857806385fcbc2f146104d857600080fd5b80635c36901c116101665780636e4c6269116101405780636e4c62691461035957806371dc14b21461036c57806379dd28361461039f5780637c82ebe9146103b257600080fd5b80635c36901c1461030057806360311e9514610333578063680819eb1461034657600080fd5b806324cb477e116101a257806324cb477e14610247578063450dccc31461025c5780634c87087d1461026f5780635acfedc7146102ed57600080fd5b8063012c3275146101c95780630b3b430d146101ef5780631e2e3a6b14610232575b600080fd5b6101dc6101d7366004612a19565b6105c2565b6040519081526020015b60405180910390f35b6102026101fd366004612aeb565b610d37565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101e6565b61023a610e41565b6040516101e69190612b04565b61025a610255366004612aeb565b610e99565b005b61025a61026a366004612aeb565b610f78565b61028261027d366004612aeb565b611084565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101e6565b61025a6102fb366004612aeb565b6111ab565b61032361030e366004612aeb565b60009081526003602052604090205460ff1690565b60405190151581526020016101e6565b61025a610341366004612b48565b611266565b61025a610354366004612b74565b611308565b61025a610367366004612b96565b6113f5565b61037f61037a366004612b74565b6116f3565b6040805194855260208501939093529183015260608201526080016101e6565b61025a6103ad366004612bd3565b61185c565b61025a6103c0366004612b48565b6118ee565b61025a6103d3366004612b96565b611981565b6104c06103e6366004612aeb565b60009081526003602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652600283015484166060830152938201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6040516001600160a01b0390911681526020016101e6565b6101dc6104e6366004612aeb565b611d83565b61025a6104f9366004612b74565b611f0a565b6002546104c0906001600160a01b031681565b6101dc61051f366004612aeb565b6000908152600360208190526040909120015490565b6004546101dc565b61025a61054b366004612aeb565b611f81565b6101dc61055e366004612c03565b612032565b6101dc610571366004612aeb565b61207e565b61037f610584366004612b74565b612396565b61025a610597366004612aeb565b6124a1565b6101dc6105aa366004612c46565b61259d565b6001546104c0906001600160a01b031681565b6001546000906001600160a01b031633146106245760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061064257610642612c61565b60200260200101516001600160a01b031614156106bd5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365746044820152726f6b656e2c20207a65726f206164647265737360681b606482015260840161061b565b6001600160a01b03841661072f5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b606482015260840161061b565b836001600160a01b03168360008151811061074c5761074c612c61565b60200260200101516001600160a01b031614156107d15760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365746f6b656e000000000000000000606482015260840161061b565b816002815181106107e4576107e4612c61565b6020026020010151600014156108535760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b606482015260840161061b565b6108928360008151811061086957610869612c61565b6020026020010151858560018151811061088557610885612c61565b6020026020010151612032565b60008181526003602081905260409091200154909150156109095760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b606482015260840161061b565b6000600190508260048151811061092257610922612c61565b602002602001015160001415610936575060005b604051806101e001604052806001151581526020018560018151811061095e5761095e612c61565b60200260200101516001600160a01b03168152602001866001600160a01b031681526020018560008151811061099657610996612c61565b60200260200101516001600160a01b03168152602001846002815181106109bf576109bf612c61565b60200260200101518152602001846001815181106109df576109df612c61565b60200260200101518152602001846000815181106109ff576109ff612c61565b60200260200101518152602001600081526020016000815260200184600381518110610a2d57610a2d612c61565b6020026020010151815260200185600281518110610a4d57610a4d612c61565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610a8c57610a8c612c61565b6020908102919091018101516001600160a01b0390811690925260008581526003808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a0151600285018054918b1691841691909117905560808a01519584019590955560a089015160048085019190915560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9092018490558551908716918691610bfa57610bfa612c61565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c4057610c40612c61565b602002602001015187600281518110610c5b57610c5b612c61565b6020026020010151604051610c859291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610ca057610ca0612c61565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610cf157610cf1612c61565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260036020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095526002840154851660608401819052848801546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e259061259d565b9350806101600151925080610180015191505091939590929450565b60606004805480602002602001604051908101604052809291908181526020018280548015610e8f57602002820191906000526020600020905b815481526020019060010190808311610e7b575b5050505050905090565b600081815260036020526040902054819061010090046001600160a01b03163314610ed65760405162461bcd60e51b815260040161061b90612c77565b60008281526003602052604090205460ff1615610f3157600082815260036020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260036020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260036020526040902054819061010090046001600160a01b03163314610fb55760405162461bcd60e51b815260040161061b90612c77565b60026000541415610fd85760405162461bcd60e51b815260040161061b90612cc0565b600260009081558281526003602052604081206006810180549290558054600190910154611019916001600160a01b0391821691610100909104168361260c565b6000838152600360209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a45050600160005550565b600081815260036020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905260028601548116606086018190529886015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548416610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a088015294909304166101c08501529597949691959194909281908190819081906111778e61207e565b95506111828e611d83565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b600260005414156111ce5760405162461bcd60e51b815260040161061b90612cc0565b60026000818155828152600360205260408120600b8101805492905582549201549091611208916001600160a01b0390811691168361260c565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a350506001600055565b600082815260036020526040902054829061010090046001600160a01b031633146112a35760405162461bcd60e51b815260040161061b90612c77565b600083815260036020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260036020526040902054829061010090046001600160a01b031633146113455760405162461bcd60e51b815260040161061b90612c77565b8161139e5760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b606482015260840161061b565b6000838152600360208190526040918290200183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906113e89086815260200190565b60405180910390a3505050565b600083815260036020526040902054839060ff166114255760405162461bcd60e51b815260040161061b90612cf7565b600260005414156114485760405162461bcd60e51b815260040161061b90612cc0565b60026000558261146a5760405162461bcd60e51b815260040161061b90612d42565b6000848152600360205260409020600c015461010090046001600160a01b0316156114cd576000848152600360205260409020600c015461010090046001600160a01b031633146114cd5760405162461bcd60e51b815260040161061b90612d8b565b6000806000806114dd88886116f3565b9350935093509350858410156115445760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b606482015260840161061b565b6000888152600360205260409020600b01546115609083612674565b6000898152600360205260409020600b810191909155600a01546115849082612674565b6000898152600360205260409020600a810191909155600101546115b3906001600160a01b031633308a612680565b6000888152600360205260409020600601546115cf9088612674565b60008981526003602052604090206006810191909155600701548411156116295760008881526003602052604090208054600290910154611624916001600160a01b0391821691610100909104163387612680565b611673565b60008881526003602052604090206007015461164590846126be565b6000898152600360205260409020600781019190915560020154611673906001600160a01b0316338661260c565b6000888152600360209081526040918290206002015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a350506001600055505050505050565b600082815260036020526040812054819081908190869060ff166117295760405162461bcd60e51b815260040161061b90612cf7565b6000878152600360205260409020600401546117a390670de0b6b3a76400009061179d9061175890600a612edb565b60008b81526003602052604090206005015461179d9061177990600a612edb565b60008d81526003602081905260409091200154611797908d906126ca565b906126ca565b906126d6565b6000888152600360205260409020600201549094506117ca906001600160a01b031661259d565b1561180f5760008781526003602052604090206002015461180c90670de0b6b3a76400009061179d90611805906001600160a01b031661259d565b87906126ca565b92505b60008781526003602052604090206008015461183a90670de0b6b3a76400009061179d9087906126ca565b91506118508361184a86856126be565b906126be565b94505092959194509250565b600082815260036020526040902054829061010090046001600160a01b031633146118995760405162461bcd60e51b815260040161061b90612c77565b600083815260036020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f5391016113e8565b6000828152600360205260409020600901546001600160a01b031633146119505760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b604482015260640161061b565b60009182526003602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260036020526040902054839060ff166119b15760405162461bcd60e51b815260040161061b90612cf7565b600260005414156119d45760405162461bcd60e51b815260040161061b90612cc0565b6002600055826119f65760405162461bcd60e51b815260040161061b90612d42565b6000848152600360205260409020600c015461010090046001600160a01b031615611a59576000848152600360205260409020600c015461010090046001600160a01b03163314611a595760405162461bcd60e51b815260040161061b90612d8b565b600080600080611a698888612396565b935093509350935085841115611ad15760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b606482015260840161061b565b6000888152600360205260409020600b0154611aed9083612674565b6000898152600360205260409020600b810191909155600a0154611b119082612674565b6000898152600360205260409020600a81019190915560020154611b40906001600160a01b0316333087612680565b600088815260036020526040902060070154611b5c9084612674565b6000898152600360205260409020600781019190915560060154871115611ccc576000888152600360205260409020600c015460ff168015611c155750600088815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c159190612ee7565b15611c9357600088815260036020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611c7657600080fd5b505af1158015611c8a573d6000803e3d6000fd5b50505050611d16565b60008881526003602052604090208054600190910154611cc7916001600160a01b039182169161010090910416338a612680565b611d16565b600088815260036020526040902060060154611ce890886126be565b6000898152600360205260409020600681019190915560010154611d16906001600160a01b0316338961260c565b6000888152600360209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016116dc565b60008181526003602052604081205460ff16611da157506000919050565b6000828152600360205260408082206002810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e259190612f04565b600084815260036020526040808220600281015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015611e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb49190612f04565b905080821015611ee257600084815260036020526040902060070154611edb908390612674565b9250611f02565b600084815260036020526040902060070154611eff908290612674565b92505b50505b919050565b6000828152600360205260409020600901546001600160a01b03163314611f6c5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b604482015260640161061b565b60009182526003602052604090912060080155565b60026000541415611fa45760405162461bcd60e51b815260040161061b90612cc0565b60026000818155828152600360205260408120600a8101805492905560098101549201549091611fe1916001600160a01b0390811691168361260c565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d640790559101611255565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090505b9392505050565b60008181526003602052604081205460ff1661209c57506000919050565b6000828152600360205260409020600c015460ff1680156121345750600082815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015612110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121349190612ee7565b1561223f576000828152600360209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b49190612f04565b600083815260036020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa15801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f9190612f04565b6122399190612f1d565b92915050565b6000828152600360205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa15801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c39190612f04565b600084815260036020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190612f04565b90508082101561237957600084815260036020526040902060060154611edb908390612674565b600084815260036020526040902060060154611eff908290612674565b600082815260036020526040812054819081908190869060ff166123cc5760405162461bcd60e51b815260040161061b90612cf7565b6000878152600360205260409020600401546123fb90670de0b6b3a76400009061179d9061175890600a612edb565b600088815260036020526040902060020154909450612422906001600160a01b031661259d565b156124605760008781526003602052604090206002015461245d90670de0b6b3a76400009061179d90611805906001600160a01b031661259d565b92505b60008781526003602052604090206008015461248b90670de0b6b3a76400009061179d9087906126ca565b91506118508361249b8685612674565b90612674565b600081815260036020526040902054819061010090046001600160a01b031633146124de5760405162461bcd60e51b815260040161061b90612c77565b600260005414156125015760405162461bcd60e51b815260040161061b90612cc0565b6002600081815583815260036020526040812060078101805492905580549201549091612540916001600160a01b03908116916101009004168361260c565b6000838152600360209081526040918290206002810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b16369101611072565b600154604051637c0aa57760e11b81526001600160a01b038381166004830152600092169063f8154aee90602401602060405180830381865afa1580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122399190612f04565b6040516001600160a01b03831660248201526044810182905261266f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526126e2565b505050565b60006120778284612f34565b6040516001600160a01b03808516602483015283166044820152606481018290526126b89085906323b872dd60e01b90608401612638565b50505050565b60006120778284612f1d565b60006120778284612f4c565b60006120778284612f6b565b6000612737826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b49092919063ffffffff16565b80519091501561266f57808060200190518101906127559190612ee7565b61266f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161061b565b60606127c384846000856127cb565b949350505050565b60608247101561282c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161061b565b843b61287a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161061b565b600080866001600160a01b031685876040516128969190612fb9565b60006040518083038185875af1925050503d80600081146128d3576040519150601f19603f3d011682016040523d82523d6000602084013e6128d8565b606091505b50915091506128e88282866128f3565b979650505050505050565b60608315612902575081612077565b8251156129125782518084602001fd5b8160405162461bcd60e51b815260040161061b9190612fd5565b80356001600160a01b0381168114611f0557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561298257612982612943565b604052919050565b600067ffffffffffffffff8211156129a4576129a4612943565b5060051b60200190565b600082601f8301126129bf57600080fd5b813560206129d46129cf8361298a565b612959565b82815260059290921b840181019181810190868411156129f357600080fd5b8286015b84811015612a0e57803583529183019183016129f7565b509695505050505050565b600080600060608486031215612a2e57600080fd5b612a378461292c565b925060208085013567ffffffffffffffff80821115612a5557600080fd5b818701915087601f830112612a6957600080fd5b8135612a776129cf8261298a565b81815260059190911b8301840190848101908a831115612a9657600080fd5b938501935b82851015612abb57612aac8561292c565b82529385019390850190612a9b565b965050506040870135925080831115612ad357600080fd5b5050612ae1868287016129ae565b9150509250925092565b600060208284031215612afd57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612b3c57835183529284019291840191600101612b20565b50909695505050505050565b60008060408385031215612b5b57600080fd5b82359150612b6b6020840161292c565b90509250929050565b60008060408385031215612b8757600080fd5b50508035926020909101359150565b600080600060608486031215612bab57600080fd5b505081359360208301359350604090920135919050565b8015158114612bd057600080fd5b50565b60008060408385031215612be657600080fd5b823591506020830135612bf881612bc2565b809150509250929050565b600080600060608486031215612c1857600080fd5b612c218461292c565b9250612c2f6020850161292c565b9150612c3d6040850161292c565b90509250925092565b600060208284031215612c5857600080fd5b6120778261292c565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a207a65726f206461746120746f6b604082015268195b88185b5bdd5b9d60ba1b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e32578160001904821115612e1857612e18612de1565b80851615612e2557918102915b93841c9390800290612dfc565b509250929050565b600082612e4957506001612239565b81612e5657506000612239565b8160018114612e6c5760028114612e7657612e92565b6001915050612239565b60ff841115612e8757612e87612de1565b50506001821b612239565b5060208310610133831016604e8410600b8410161715612eb5575081810a612239565b612ebf8383612df7565b8060001904821115612ed357612ed3612de1565b029392505050565b60006120778383612e3a565b600060208284031215612ef957600080fd5b815161207781612bc2565b600060208284031215612f1657600080fd5b5051919050565b600082821015612f2f57612f2f612de1565b500390565b60008219821115612f4757612f47612de1565b500190565b6000816000190483118215151615612f6657612f66612de1565b500290565b600082612f8857634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015612fa8578181015183820152602001612f90565b838111156126b85750506000910152565b60008251612fcb818460208701612f8d565b9190910192915050565b6020815260008251806020840152612ff4816040850160208701612f8d565b601f01601f1916919091016040019291505056fea2646970667358221220ae3733c86a7fbdeda1e535bdcf4c655711beee316c6fde6e837493eeb818cb9764736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063825b5cd6116100f9578063b686bcaf11610097578063c99733a711610071578063c99733a714610576578063f532129e14610589578063f8154aee1461059c578063f887ea40146105af57600080fd5b8063b686bcaf1461053d578063c1f6572e14610550578063c66274ea1461056357600080fd5b806388823872116100d357806388823872146104eb578063a28f78f1146104fe578063b32b56f914610511578063b42414291461053557600080fd5b8063825b5cd6146103c5578063855058dd146103d857806385fcbc2f146104d857600080fd5b80635c36901c116101665780636e4c6269116101405780636e4c62691461035957806371dc14b21461036c57806379dd28361461039f5780637c82ebe9146103b257600080fd5b80635c36901c1461030057806360311e9514610333578063680819eb1461034657600080fd5b806324cb477e116101a257806324cb477e14610247578063450dccc31461025c5780634c87087d1461026f5780635acfedc7146102ed57600080fd5b8063012c3275146101c95780630b3b430d146101ef5780631e2e3a6b14610232575b600080fd5b6101dc6101d7366004612a19565b6105c2565b6040519081526020015b60405180910390f35b6102026101fd366004612aeb565b610d37565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101e6565b61023a610e41565b6040516101e69190612b04565b61025a610255366004612aeb565b610e99565b005b61025a61026a366004612aeb565b610f78565b61028261027d366004612aeb565b611084565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101e6565b61025a6102fb366004612aeb565b6111ab565b61032361030e366004612aeb565b60009081526003602052604090205460ff1690565b60405190151581526020016101e6565b61025a610341366004612b48565b611266565b61025a610354366004612b74565b611308565b61025a610367366004612b96565b6113f5565b61037f61037a366004612b74565b6116f3565b6040805194855260208501939093529183015260608201526080016101e6565b61025a6103ad366004612bd3565b61185c565b61025a6103c0366004612b48565b6118ee565b61025a6103d3366004612b96565b611981565b6104c06103e6366004612aeb565b60009081526003602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652600283015484166060830152938201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6040516001600160a01b0390911681526020016101e6565b6101dc6104e6366004612aeb565b611d83565b61025a6104f9366004612b74565b611f0a565b6002546104c0906001600160a01b031681565b6101dc61051f366004612aeb565b6000908152600360208190526040909120015490565b6004546101dc565b61025a61054b366004612aeb565b611f81565b6101dc61055e366004612c03565b612032565b6101dc610571366004612aeb565b61207e565b61037f610584366004612b74565b612396565b61025a610597366004612aeb565b6124a1565b6101dc6105aa366004612c46565b61259d565b6001546104c0906001600160a01b031681565b6001546000906001600160a01b031633146106245760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061064257610642612c61565b60200260200101516001600160a01b031614156106bd5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365746044820152726f6b656e2c20207a65726f206164647265737360681b606482015260840161061b565b6001600160a01b03841661072f5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b606482015260840161061b565b836001600160a01b03168360008151811061074c5761074c612c61565b60200260200101516001600160a01b031614156107d15760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365746f6b656e000000000000000000606482015260840161061b565b816002815181106107e4576107e4612c61565b6020026020010151600014156108535760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b606482015260840161061b565b6108928360008151811061086957610869612c61565b6020026020010151858560018151811061088557610885612c61565b6020026020010151612032565b60008181526003602081905260409091200154909150156109095760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b606482015260840161061b565b6000600190508260048151811061092257610922612c61565b602002602001015160001415610936575060005b604051806101e001604052806001151581526020018560018151811061095e5761095e612c61565b60200260200101516001600160a01b03168152602001866001600160a01b031681526020018560008151811061099657610996612c61565b60200260200101516001600160a01b03168152602001846002815181106109bf576109bf612c61565b60200260200101518152602001846001815181106109df576109df612c61565b60200260200101518152602001846000815181106109ff576109ff612c61565b60200260200101518152602001600081526020016000815260200184600381518110610a2d57610a2d612c61565b6020026020010151815260200185600281518110610a4d57610a4d612c61565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610a8c57610a8c612c61565b6020908102919091018101516001600160a01b0390811690925260008581526003808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a0151600285018054918b1691841691909117905560808a01519584019590955560a089015160048085019190915560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9092018490558551908716918691610bfa57610bfa612c61565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c4057610c40612c61565b602002602001015187600281518110610c5b57610c5b612c61565b6020026020010151604051610c859291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610ca057610ca0612c61565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610cf157610cf1612c61565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260036020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095526002840154851660608401819052848801546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e259061259d565b9350806101600151925080610180015191505091939590929450565b60606004805480602002602001604051908101604052809291908181526020018280548015610e8f57602002820191906000526020600020905b815481526020019060010190808311610e7b575b5050505050905090565b600081815260036020526040902054819061010090046001600160a01b03163314610ed65760405162461bcd60e51b815260040161061b90612c77565b60008281526003602052604090205460ff1615610f3157600082815260036020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260036020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260036020526040902054819061010090046001600160a01b03163314610fb55760405162461bcd60e51b815260040161061b90612c77565b60026000541415610fd85760405162461bcd60e51b815260040161061b90612cc0565b600260009081558281526003602052604081206006810180549290558054600190910154611019916001600160a01b0391821691610100909104168361260c565b6000838152600360209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a45050600160005550565b600081815260036020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905260028601548116606086018190529886015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548416610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a088015294909304166101c08501529597949691959194909281908190819081906111778e61207e565b95506111828e611d83565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b600260005414156111ce5760405162461bcd60e51b815260040161061b90612cc0565b60026000818155828152600360205260408120600b8101805492905582549201549091611208916001600160a01b0390811691168361260c565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a350506001600055565b600082815260036020526040902054829061010090046001600160a01b031633146112a35760405162461bcd60e51b815260040161061b90612c77565b600083815260036020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260036020526040902054829061010090046001600160a01b031633146113455760405162461bcd60e51b815260040161061b90612c77565b8161139e5760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b606482015260840161061b565b6000838152600360208190526040918290200183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906113e89086815260200190565b60405180910390a3505050565b600083815260036020526040902054839060ff166114255760405162461bcd60e51b815260040161061b90612cf7565b600260005414156114485760405162461bcd60e51b815260040161061b90612cc0565b60026000558261146a5760405162461bcd60e51b815260040161061b90612d42565b6000848152600360205260409020600c015461010090046001600160a01b0316156114cd576000848152600360205260409020600c015461010090046001600160a01b031633146114cd5760405162461bcd60e51b815260040161061b90612d8b565b6000806000806114dd88886116f3565b9350935093509350858410156115445760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b606482015260840161061b565b6000888152600360205260409020600b01546115609083612674565b6000898152600360205260409020600b810191909155600a01546115849082612674565b6000898152600360205260409020600a810191909155600101546115b3906001600160a01b031633308a612680565b6000888152600360205260409020600601546115cf9088612674565b60008981526003602052604090206006810191909155600701548411156116295760008881526003602052604090208054600290910154611624916001600160a01b0391821691610100909104163387612680565b611673565b60008881526003602052604090206007015461164590846126be565b6000898152600360205260409020600781019190915560020154611673906001600160a01b0316338661260c565b6000888152600360209081526040918290206002015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a350506001600055505050505050565b600082815260036020526040812054819081908190869060ff166117295760405162461bcd60e51b815260040161061b90612cf7565b6000878152600360205260409020600401546117a390670de0b6b3a76400009061179d9061175890600a612edb565b60008b81526003602052604090206005015461179d9061177990600a612edb565b60008d81526003602081905260409091200154611797908d906126ca565b906126ca565b906126d6565b6000888152600360205260409020600201549094506117ca906001600160a01b031661259d565b1561180f5760008781526003602052604090206002015461180c90670de0b6b3a76400009061179d90611805906001600160a01b031661259d565b87906126ca565b92505b60008781526003602052604090206008015461183a90670de0b6b3a76400009061179d9087906126ca565b91506118508361184a86856126be565b906126be565b94505092959194509250565b600082815260036020526040902054829061010090046001600160a01b031633146118995760405162461bcd60e51b815260040161061b90612c77565b600083815260036020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f5391016113e8565b6000828152600360205260409020600901546001600160a01b031633146119505760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b604482015260640161061b565b60009182526003602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260036020526040902054839060ff166119b15760405162461bcd60e51b815260040161061b90612cf7565b600260005414156119d45760405162461bcd60e51b815260040161061b90612cc0565b6002600055826119f65760405162461bcd60e51b815260040161061b90612d42565b6000848152600360205260409020600c015461010090046001600160a01b031615611a59576000848152600360205260409020600c015461010090046001600160a01b03163314611a595760405162461bcd60e51b815260040161061b90612d8b565b600080600080611a698888612396565b935093509350935085841115611ad15760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b606482015260840161061b565b6000888152600360205260409020600b0154611aed9083612674565b6000898152600360205260409020600b810191909155600a0154611b119082612674565b6000898152600360205260409020600a81019190915560020154611b40906001600160a01b0316333087612680565b600088815260036020526040902060070154611b5c9084612674565b6000898152600360205260409020600781019190915560060154871115611ccc576000888152600360205260409020600c015460ff168015611c155750600088815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c159190612ee7565b15611c9357600088815260036020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611c7657600080fd5b505af1158015611c8a573d6000803e3d6000fd5b50505050611d16565b60008881526003602052604090208054600190910154611cc7916001600160a01b039182169161010090910416338a612680565b611d16565b600088815260036020526040902060060154611ce890886126be565b6000898152600360205260409020600681019190915560010154611d16906001600160a01b0316338961260c565b6000888152600360209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016116dc565b60008181526003602052604081205460ff16611da157506000919050565b6000828152600360205260408082206002810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015611e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e259190612f04565b600084815260036020526040808220600281015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015611e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb49190612f04565b905080821015611ee257600084815260036020526040902060070154611edb908390612674565b9250611f02565b600084815260036020526040902060070154611eff908290612674565b92505b50505b919050565b6000828152600360205260409020600901546001600160a01b03163314611f6c5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b604482015260640161061b565b60009182526003602052604090912060080155565b60026000541415611fa45760405162461bcd60e51b815260040161061b90612cc0565b60026000818155828152600360205260408120600a8101805492905560098101549201549091611fe1916001600160a01b0390811691168361260c565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d640790559101611255565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090505b9392505050565b60008181526003602052604081205460ff1661209c57506000919050565b6000828152600360205260409020600c015460ff1680156121345750600082815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015612110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121349190612ee7565b1561223f576000828152600360209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b49190612f04565b600083815260036020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa15801561220b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222f9190612f04565b6122399190612f1d565b92915050565b6000828152600360205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa15801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c39190612f04565b600084815260036020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190612f04565b90508082101561237957600084815260036020526040902060060154611edb908390612674565b600084815260036020526040902060060154611eff908290612674565b600082815260036020526040812054819081908190869060ff166123cc5760405162461bcd60e51b815260040161061b90612cf7565b6000878152600360205260409020600401546123fb90670de0b6b3a76400009061179d9061175890600a612edb565b600088815260036020526040902060020154909450612422906001600160a01b031661259d565b156124605760008781526003602052604090206002015461245d90670de0b6b3a76400009061179d90611805906001600160a01b031661259d565b92505b60008781526003602052604090206008015461248b90670de0b6b3a76400009061179d9087906126ca565b91506118508361249b8685612674565b90612674565b600081815260036020526040902054819061010090046001600160a01b031633146124de5760405162461bcd60e51b815260040161061b90612c77565b600260005414156125015760405162461bcd60e51b815260040161061b90612cc0565b6002600081815583815260036020526040812060078101805492905580549201549091612540916001600160a01b03908116916101009004168361260c565b6000838152600360209081526040918290206002810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b16369101611072565b600154604051637c0aa57760e11b81526001600160a01b038381166004830152600092169063f8154aee90602401602060405180830381865afa1580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122399190612f04565b6040516001600160a01b03831660248201526044810182905261266f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526126e2565b505050565b60006120778284612f34565b6040516001600160a01b03808516602483015283166044820152606481018290526126b89085906323b872dd60e01b90608401612638565b50505050565b60006120778284612f1d565b60006120778284612f4c565b60006120778284612f6b565b6000612737826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127b49092919063ffffffff16565b80519091501561266f57808060200190518101906127559190612ee7565b61266f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161061b565b60606127c384846000856127cb565b949350505050565b60608247101561282c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161061b565b843b61287a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161061b565b600080866001600160a01b031685876040516128969190612fb9565b60006040518083038185875af1925050503d80600081146128d3576040519150601f19603f3d011682016040523d82523d6000602084013e6128d8565b606091505b50915091506128e88282866128f3565b979650505050505050565b60608315612902575081612077565b8251156129125782518084602001fd5b8160405162461bcd60e51b815260040161061b9190612fd5565b80356001600160a01b0381168114611f0557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561298257612982612943565b604052919050565b600067ffffffffffffffff8211156129a4576129a4612943565b5060051b60200190565b600082601f8301126129bf57600080fd5b813560206129d46129cf8361298a565b612959565b82815260059290921b840181019181810190868411156129f357600080fd5b8286015b84811015612a0e57803583529183019183016129f7565b509695505050505050565b600080600060608486031215612a2e57600080fd5b612a378461292c565b925060208085013567ffffffffffffffff80821115612a5557600080fd5b818701915087601f830112612a6957600080fd5b8135612a776129cf8261298a565b81815260059190911b8301840190848101908a831115612a9657600080fd5b938501935b82851015612abb57612aac8561292c565b82529385019390850190612a9b565b965050506040870135925080831115612ad357600080fd5b5050612ae1868287016129ae565b9150509250925092565b600060208284031215612afd57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612b3c57835183529284019291840191600101612b20565b50909695505050505050565b60008060408385031215612b5b57600080fd5b82359150612b6b6020840161292c565b90509250929050565b60008060408385031215612b8757600080fd5b50508035926020909101359150565b600080600060608486031215612bab57600080fd5b505081359360208301359350604090920135919050565b8015158114612bd057600080fd5b50565b60008060408385031215612be657600080fd5b823591506020830135612bf881612bc2565b809150509250929050565b600080600060608486031215612c1857600080fd5b612c218461292c565b9250612c2f6020850161292c565b9150612c3d6040850161292c565b90509250925092565b600060208284031215612c5857600080fd5b6120778261292c565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a207a65726f206461746120746f6b604082015268195b88185b5bdd5b9d60ba1b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e32578160001904821115612e1857612e18612de1565b80851615612e2557918102915b93841c9390800290612dfc565b509250929050565b600082612e4957506001612239565b81612e5657506000612239565b8160018114612e6c5760028114612e7657612e92565b6001915050612239565b60ff841115612e8757612e87612de1565b50506001821b612239565b5060208310610133831016604e8410600b8410161715612eb5575081810a612239565b612ebf8383612df7565b8060001904821115612ed357612ed3612de1565b029392505050565b60006120778383612e3a565b600060208284031215612ef957600080fd5b815161207781612bc2565b600060208284031215612f1657600080fd5b5051919050565b600082821015612f2f57612f2f612de1565b500390565b60008219821115612f4757612f47612de1565b500190565b6000816000190483118215151615612f6657612f66612de1565b500290565b600082612f8857634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015612fa8578181015183820152602001612f90565b838111156126b85750506000910152565b60008251612fcb818460208701612f8d565b9190910192915050565b6020815260008251806020840152612ff4816040850160208701612f8d565b601f01601f1916919091016040019291505056fea2646970667358221220ae3733c86a7fbdeda1e535bdcf4c655711beee316c6fde6e837493eeb818cb9764736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/pools/ssContracts/SideStaking.sol/SideStaking.dbg.json b/artifacts/pools/ssContracts/SideStaking.sol/SideStaking.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/pools/ssContracts/SideStaking.sol/SideStaking.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json b/artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json new file mode 100644 index 000000000..7699ff896 --- /dev/null +++ b/artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json @@ -0,0 +1,428 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SideStaking", + "sourceName": "contracts/pools/ssContracts/SideStaking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stakeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stakeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "dtAmountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolAmountOut", + "type": "uint256" + } + ], + "name": "UnStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stakeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "canStake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stakeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "lptIn", + "type": "uint256" + } + ], + "name": "canUnStake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getBaseTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getBaseTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getDataTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getDataTokenCirculatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getDataTokenCurrentCirculatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getPoolAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getPublisherAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getVesting", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getvestingAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getvestingAmountSoFar", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getvestingEndBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + } + ], + "name": "getvestingLastBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "basetokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "publisherAddress", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ssParams", + "type": "uint256[]" + } + ], + "name": "newDataTokenCreated", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "setPoolSwapFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162002618380380620026188339810160408190526200003491620000ba565b60016000556001600160a01b038116620000945760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964205f726f757465722061646472657373000000000000000000604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055620000ec565b600060208284031215620000cd57600080fd5b81516001600160a01b0381168114620000e557600080fd5b9392505050565b61251c80620000fc6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063bccf74fe116100ad578063f03cd39611610071578063f03cd3961461026d578063f887ea4014610280578063f8932d6114610293578063fa93fd6d146102a6578063ff299f33146102b957600080fd5b8063bccf74fe1461020e578063c1b4904d14610221578063c4be249014610234578063cc49ede714610247578063efd481031461025a57600080fd5b806353f0c3b4116100f457806353f0c3b4146101ad578063799ece85146101c05780637b01ab30146101d357806388afadce146101e857806399039fcf146101fb57600080fd5b80631228cbee146101265780631f16cde6146101565780632686375b1461016957806326b1f01f1461018a575b600080fd5b610139610134366004611fd2565b6102cc565b6040516001600160a01b0390911681526020015b60405180910390f35b610139610164366004611fd2565b610316565b61017c610177366004611fd2565b610360565b60405190815260200161014d565b61019d610198366004611fef565b6103a7565b604051901515815260200161014d565b61019d6101bb366004612077565b61047e565b61017c6101ce366004611fd2565b610df7565b6101e66101e136600461216a565b610e3e565b005b61017c6101f6366004611fd2565b610f1e565b6101e6610209366004611fef565b610f7b565b61017c61021c366004611fd2565b611086565b61017c61022f366004611fd2565b6110cd565b61017c610242366004611fd2565b611115565b6101e6610255366004611fd2565b61115c565b61019d610268366004611fef565b6113a2565b61017c61027b366004611fd2565b6114a6565b600154610139906001600160a01b031681565b61017c6102a1366004611fd2565b6114ed565b6101396102b4366004611fd2565b61156a565b6101e66102c7366004611fef565b6115b6565b6001600160a01b03811660009081526002602052604081205460ff166102f457506000919050565b506001600160a01b039081166000908152600260205260409020600101541690565b6001600160a01b03811660009081526002602052604081205460ff1661033e57506000919050565b506001600160a01b039081166000908152600260205260409020600701541690565b6001600160a01b03811660009081526002602052604081205460ff1661038857506000919050565b506001600160a01b03166000908152600260205260409020600a015490565b6001600160a01b0383811660009081526002602052604081206001015490911633146103ee5760405162461bcd60e51b81526004016103e5906121b0565b60405180910390fd5b6001600160a01b03841660009081526002602052604090205460ff1661041657506000610477565b6001600160a01b0384811660009081526002602052604090205461010090048116908416141561044857506000610477565b6001600160a01b03841660009081526002602081905260409091200154821161047357506001610477565b5060005b9392505050565b6001546000906001600160a01b031633146104c95760405162461bcd60e51b815260206004820152600b60248201526a27a7262c902927aaaa22a960a91b60448201526064016103e5565b600260005414156104ec5760405162461bcd60e51b81526004016103e5906121e7565b60026000556001600160a01b03841661053d5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420706f6f6c4164647265737360681b60448201526064016103e5565b6000849050306001600160a01b0316816001600160a01b0316633018205f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae919061221e565b6001600160a01b0316146106045760405162461bcd60e51b815260206004820152601e60248201527f576520617265206e6f742074686520706f6f6c20636f6e74726f6c6c6572000060448201526064016103e5565b866001600160a01b0316816001600160a01b03166304ad79546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610670919061221e565b6001600160a01b0316146106c65760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e2061646472657373206d6973736d61746368000000000060448201526064016103e5565b856001600160a01b0316816001600160a01b0316634df947d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610732919061221e565b6001600160a01b0316146107885760405162461bcd60e51b815260206004820152601b60248201527f42617365546f6b656e2061646472657373206d6973736d61746368000000000060448201526064016103e5565b604051623d104160e31b815230600482015287906001600160a01b038216906301e88208906024016040805180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190612250565b5161083d5760405162461bcd60e51b815260206004820152601a60248201527f42617365546f6b656e2061646472657373206d69736d6174636800000000000060448201526064016103e5565b806001600160a01b03166340c10f1930836001600160a01b031663355274ea6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906122ab565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156108f557600080fd5b505af1158015610909573d6000803e3d6000fd5b50505050806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f91906122ab565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d791906122ab565b14610a125760405162461bcd60e51b815260206004820152600b60248201526a135a5b9d0819985a5b195960aa1b60448201526064016103e5565b83600281518110610a2557610a256122c4565b6020026020010151610a9a600a836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9491906122ab565b906118c6565b1015610ada5760405162461bcd60e51b815260206004820152600f60248201526e4d61782076657374696e672031302560881b60448201526064016103e5565b604051806101e00160405280600115158152602001886001600160a01b03168152602001876001600160a01b0316815260200160001515815260200185600281518110610b2957610b296122c4565b6020026020010151836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906122ab565b610b9d91906122f0565b8152602001826001600160a01b031663355274ea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906122ab565b815260200185600481518110610c1c57610c1c6122c4565b602002602001015181526020016000815260200185600081518110610c4357610c436122c4565b60200260200101518152602001866001600160a01b0316815260200143815260200185600381518110610c7857610c786122c4565b602002602001015143610c8b9190612307565b815260200185600281518110610ca357610ca36122c4565b60209081029190910181015182524382820152600060409283018190526001600160a01b038c8116825260028084529184902085518154948701516001600160a81b0319958616911515610100600160a81b031916919091176101009184168202178255948601516001808301805460608a0151938616971696909617600160a01b921515929092029190911790945560808601519281019290925560a0850151600383015560c0850151600483015560e085015160058301559284015160068201556101208401516007820180546001600160a01b031916919094161790925561014083015160088301556101608301516009830155610180830151600a8301556101a0830151600b8301556101c090920151600c909101558451610de3918a918791908110610dd657610dd66122c4565b60200260200101516118d2565b600192505050600160005595945050505050565b6001600160a01b03811660009081526002602052604081205460ff16610e1f57506000919050565b506001600160a01b031660009081526002602052604090206009015490565b60026000541415610e615760405162461bcd60e51b81526004016103e5906121e7565b600260008181556001600160a01b0386168152602091909152604090205460ff16610e8b57610f13565b6001600160a01b03848116600090815260026020526040902060010154163314610ec75760405162461bcd60e51b81526004016103e5906121b0565b6000610ed48585846113a2565b905080610ee15750610f13565b6001600160a01b03851660009081526002602081905260408220018054859290610f0c908490612307565b9091555050505b505060016000555050565b6001600160a01b03811660009081526002602052604081205460ff16610f4657506000919050565b6001600160a01b038216600090815260026020819052604090912090810154600390910154610f7591906122f0565b92915050565b60026000541415610f9e5760405162461bcd60e51b81526004016103e5906121e7565b600260008181556001600160a01b0385168152602091909152604090205460ff16610fc85761107c565b6001600160a01b038381166000908152600260205260409020600101541633146110045760405162461bcd60e51b81526004016103e5906121b0565b60006110118484846103a7565b90508061101e575061107c565b6001600160a01b03808516600081815260026020526040902060010154869261104992911685611c44565b6001600160a01b038516600090815260026020819052604082200180548592906110749084906122f0565b909155505050505b5050600160005550565b6001600160a01b03811660009081526002602052604081205460ff166110ae57506000919050565b506001600160a01b03166000908152600260205260409020600c015490565b6001600160a01b03811660009081526002602052604081205460ff166110f557506000919050565b506001600160a01b03166000908152600260208190526040909120015490565b6001600160a01b03811660009081526002602052604081205460ff1661113d57506000919050565b506001600160a01b031660009081526002602052604090206004015490565b6002600054141561117f5760405162461bcd60e51b81526004016103e5906121e7565b600260008181556001600160a01b0383168152602091909152604090205460ff166111e45760405162461bcd60e51b815260206004820152601560248201527422a9291d24b73b30b634b2103230ba30ba37b5b2b760591b60448201526064016103e5565b6001600160a01b03811660009081526002602052604081206009015443111561123b576001600160a01b0382166000908152600260205260409020600b81015460099091015461123491906122f0565b9050611264565b6001600160a01b0382166000908152600260205260409020600b015461126190436122f0565b90505b6001600160a01b038216600090815260026020526040812060088101546009909101546112b691611294916122f0565b6001600160a01b0385166000908152600260205260409020600a0154906118c6565b9050806112c457505061139a565b60006112d08383611d2f565b90506000811180156112fe57506001600160a01b038416600090815260026020819052604090912001548111155b15611396576001600160a01b03808516600081815260026020526040902043600b82015560070154869261133492911684611d3b565b6001600160a01b0385166000908152600260208190526040822001805484929061135f9084906122f0565b90915550506001600160a01b0385166000908152600260205260408120600c01805484929061138f908490612307565b9091555050505b5050505b506001600055565b6001600160a01b03831660009081526002602052604081205460ff166113ca57506000610477565b6001600160a01b038481166000908152600260205260409020600101541633146114065760405162461bcd60e51b81526004016103e5906121b0565b6001600160a01b0384811660009081526002602052604090205461010090048116908416141561143857506000610477565b6040516370a0823160e01b8152306004820152829033906370a0823190602401602060405180830381865afa158015611475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149991906122ab565b1061047357506001610477565b6001600160a01b03811660009081526002602052604081205460ff166114ce57506000919050565b506001600160a01b03166000908152600260205260409020600b015490565b6001600160a01b03811660009081526002602052604081205460ff1661151557506000919050565b61151e82611086565b61152783610360565b6001600160a01b03841660009081526002602081905260409091209081015460039091015461155691906122f0565b61156091906122f0565b610f759190612307565b6001600160a01b03811660009081526002602052604081205460ff1661159257506000919050565b506001600160a01b0390811660009081526002602052604090205461010090041690565b600260005414156115d95760405162461bcd60e51b81526004016103e5906121e7565b60026000556001600160a01b03821661162a5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420706f6f6c4164647265737360681b60448201526064016103e5565b6000829050306001600160a01b0316816001600160a01b0316633018205f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b919061221e565b6001600160a01b0316146116f15760405162461bcd60e51b815260206004820152601e60248201527f576520617265206e6f742074686520706f6f6c20636f6e74726f6c6c6572000060448201526064016103e5565b836001600160a01b0316816001600160a01b03166304ad79546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175d919061221e565b6001600160a01b0316146117b35760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e2061646472657373206d6973736d61746368000000000060448201526064016103e5565b6040516396fb3eaf60e01b815233600482015284906001600160a01b038216906396fb3eaf906024016020604051808303816000875af11580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f919061231f565b6118605760405162461bcd60e51b81526020600482015260126024820152712737ba1022a9219918102232b83637bcb2b960711b60448201526064016103e5565b6040516334e1990760e01b8152600481018490526001600160a01b038316906334e1990790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050600160005550505050505050565b6000610477828461233a565b6001600160a01b03821660009081526002602052604090205460ff166118f6575050565b6001600160a01b038216600090815260026020526040902060010154600160a01b900460ff1615611925575050565b6001600160a01b0382166000908152600260205260408120600101805460ff60a01b1916600160a01b179055611964670de0b6b3a7640000600561235c565b9050600061197b670de0b6b3a7640000600561235c565b6001600160a01b0385166000908152600260205260408120600401549192506119a58560126122f0565b6119b090600a61245f565b6001600160a01b038716600090815260026020526040902060060154670de0b6b3a764000090869086906119e590879061235c565b6119ef919061235c565b6119f9919061233a565b611a03919061233a565b611a0d919061235c565b6001600160a01b038088166000818152600260205260409020600101549293508892611a3a921684611c44565b6001600160a01b0380881660009081526002602052604090208054600190910154610100909104821691611a719183911686611c44565b6001600160a01b03888116600081815260026020526040908190206001810154905491516309ef3f5b60e01b815260048101939093526024830187905260448301899052610100909104831660648301526084820187905260a482018990529091169081906309ef3f5b9060c401600060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506001600160a01b03891660009081526002602052604081206004018054879290611b3c9084906122f0565b90915550506001600160a01b03891660009081526002602081905260408220018054869290611b6c9084906122f0565b90915550506001600160a01b038981166000908152600260205260408082206001015490516370a0823160e01b815230600482015292169182906370a0823190602401602060405180830381865afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf091906122ab565b6001600160a01b03808d16600090815260026020819052604090912060070154929350611c379290911690611c269084906118c6565b6001600160a01b0385169190611d3b565b5050505050505050505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb991906122ab565b611cc39190612307565b6040516001600160a01b038516602482015260448101829052909150611d2990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d70565b50505050565b6000610477828461235c565b6040516001600160a01b038316602482015260448101829052611d6b90849063a9059cbb60e01b90606401611cf2565b505050565b6000611dc5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e429092919063ffffffff16565b805190915015611d6b5780806020019051810190611de3919061231f565b611d6b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103e5565b6060611e518484600085611e59565b949350505050565b606082471015611eba5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103e5565b843b611f085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e5565b600080866001600160a01b03168587604051611f249190612497565b60006040518083038185875af1925050503d8060008114611f61576040519150601f19603f3d011682016040523d82523d6000602084013e611f66565b606091505b5091509150611f76828286611f81565b979650505050505050565b60608315611f90575081610477565b825115611fa05782518084602001fd5b8160405162461bcd60e51b81526004016103e591906124b3565b6001600160a01b0381168114611fcf57600080fd5b50565b600060208284031215611fe457600080fd5b813561047781611fba565b60008060006060848603121561200457600080fd5b833561200f81611fba565b9250602084013561201f81611fba565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561206f5761206f612030565b604052919050565b600080600080600060a0868803121561208f57600080fd5b853561209a81611fba565b94506020868101356120ab81611fba565b945060408701356120bb81611fba565b935060608701356120cb81611fba565b9250608087013567ffffffffffffffff808211156120e857600080fd5b818901915089601f8301126120fc57600080fd5b81358181111561210e5761210e612030565b8060051b915061211f848301612046565b818152918301840191848101908c84111561213957600080fd5b938501935b838510156121575784358252938501939085019061213e565b8096505050505050509295509295909350565b6000806000806080858703121561218057600080fd5b843561218b81611fba565b9350602085013561219b81611fba565b93969395505050506040820135916060013590565b6020808252601c908201527f4552523a204f6e6c7920706f6f6c2063616e2063616c6c207468697300000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561223057600080fd5b815161047781611fba565b8051801515811461224b57600080fd5b919050565b60006040828403121561226257600080fd5b6040516040810181811067ffffffffffffffff8211171561228557612285612030565b6040526122918361223b565b815261229f6020840161223b565b60208201529392505050565b6000602082840312156122bd57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612302576123026122da565b500390565b6000821982111561231a5761231a6122da565b500190565b60006020828403121561233157600080fd5b6104778261223b565b60008261235757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612376576123766122da565b500290565b600181815b808511156123b657816000190482111561239c5761239c6122da565b808516156123a957918102915b93841c9390800290612380565b509250929050565b6000826123cd57506001610f75565b816123da57506000610f75565b81600181146123f057600281146123fa57612416565b6001915050610f75565b60ff84111561240b5761240b6122da565b50506001821b610f75565b5060208310610133831016604e8410600b8410161715612439575081810a610f75565b612443838361237b565b8060001904821115612457576124576122da565b029392505050565b600061047783836123be565b60005b8381101561248657818101518382015260200161246e565b83811115611d295750506000910152565b600082516124a981846020870161246b565b9190910192915050565b60208152600082518060208401526124d281604085016020870161246b565b601f01601f1916919091016040019291505056fea26469706673582212208de9c72aeb5019cadbaefaf299cffa53888a7d897b4badf2f893319f9f76996564736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063bccf74fe116100ad578063f03cd39611610071578063f03cd3961461026d578063f887ea4014610280578063f8932d6114610293578063fa93fd6d146102a6578063ff299f33146102b957600080fd5b8063bccf74fe1461020e578063c1b4904d14610221578063c4be249014610234578063cc49ede714610247578063efd481031461025a57600080fd5b806353f0c3b4116100f457806353f0c3b4146101ad578063799ece85146101c05780637b01ab30146101d357806388afadce146101e857806399039fcf146101fb57600080fd5b80631228cbee146101265780631f16cde6146101565780632686375b1461016957806326b1f01f1461018a575b600080fd5b610139610134366004611fd2565b6102cc565b6040516001600160a01b0390911681526020015b60405180910390f35b610139610164366004611fd2565b610316565b61017c610177366004611fd2565b610360565b60405190815260200161014d565b61019d610198366004611fef565b6103a7565b604051901515815260200161014d565b61019d6101bb366004612077565b61047e565b61017c6101ce366004611fd2565b610df7565b6101e66101e136600461216a565b610e3e565b005b61017c6101f6366004611fd2565b610f1e565b6101e6610209366004611fef565b610f7b565b61017c61021c366004611fd2565b611086565b61017c61022f366004611fd2565b6110cd565b61017c610242366004611fd2565b611115565b6101e6610255366004611fd2565b61115c565b61019d610268366004611fef565b6113a2565b61017c61027b366004611fd2565b6114a6565b600154610139906001600160a01b031681565b61017c6102a1366004611fd2565b6114ed565b6101396102b4366004611fd2565b61156a565b6101e66102c7366004611fef565b6115b6565b6001600160a01b03811660009081526002602052604081205460ff166102f457506000919050565b506001600160a01b039081166000908152600260205260409020600101541690565b6001600160a01b03811660009081526002602052604081205460ff1661033e57506000919050565b506001600160a01b039081166000908152600260205260409020600701541690565b6001600160a01b03811660009081526002602052604081205460ff1661038857506000919050565b506001600160a01b03166000908152600260205260409020600a015490565b6001600160a01b0383811660009081526002602052604081206001015490911633146103ee5760405162461bcd60e51b81526004016103e5906121b0565b60405180910390fd5b6001600160a01b03841660009081526002602052604090205460ff1661041657506000610477565b6001600160a01b0384811660009081526002602052604090205461010090048116908416141561044857506000610477565b6001600160a01b03841660009081526002602081905260409091200154821161047357506001610477565b5060005b9392505050565b6001546000906001600160a01b031633146104c95760405162461bcd60e51b815260206004820152600b60248201526a27a7262c902927aaaa22a960a91b60448201526064016103e5565b600260005414156104ec5760405162461bcd60e51b81526004016103e5906121e7565b60026000556001600160a01b03841661053d5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420706f6f6c4164647265737360681b60448201526064016103e5565b6000849050306001600160a01b0316816001600160a01b0316633018205f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae919061221e565b6001600160a01b0316146106045760405162461bcd60e51b815260206004820152601e60248201527f576520617265206e6f742074686520706f6f6c20636f6e74726f6c6c6572000060448201526064016103e5565b866001600160a01b0316816001600160a01b03166304ad79546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610670919061221e565b6001600160a01b0316146106c65760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e2061646472657373206d6973736d61746368000000000060448201526064016103e5565b856001600160a01b0316816001600160a01b0316634df947d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610732919061221e565b6001600160a01b0316146107885760405162461bcd60e51b815260206004820152601b60248201527f42617365546f6b656e2061646472657373206d6973736d61746368000000000060448201526064016103e5565b604051623d104160e31b815230600482015287906001600160a01b038216906301e88208906024016040805180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190612250565b5161083d5760405162461bcd60e51b815260206004820152601a60248201527f42617365546f6b656e2061646472657373206d69736d6174636800000000000060448201526064016103e5565b806001600160a01b03166340c10f1930836001600160a01b031663355274ea6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906122ab565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156108f557600080fd5b505af1158015610909573d6000803e3d6000fd5b50505050806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f91906122ab565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d791906122ab565b14610a125760405162461bcd60e51b815260206004820152600b60248201526a135a5b9d0819985a5b195960aa1b60448201526064016103e5565b83600281518110610a2557610a256122c4565b6020026020010151610a9a600a836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9491906122ab565b906118c6565b1015610ada5760405162461bcd60e51b815260206004820152600f60248201526e4d61782076657374696e672031302560881b60448201526064016103e5565b604051806101e00160405280600115158152602001886001600160a01b03168152602001876001600160a01b0316815260200160001515815260200185600281518110610b2957610b296122c4565b6020026020010151836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906122ab565b610b9d91906122f0565b8152602001826001600160a01b031663355274ea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0491906122ab565b815260200185600481518110610c1c57610c1c6122c4565b602002602001015181526020016000815260200185600081518110610c4357610c436122c4565b60200260200101518152602001866001600160a01b0316815260200143815260200185600381518110610c7857610c786122c4565b602002602001015143610c8b9190612307565b815260200185600281518110610ca357610ca36122c4565b60209081029190910181015182524382820152600060409283018190526001600160a01b038c8116825260028084529184902085518154948701516001600160a81b0319958616911515610100600160a81b031916919091176101009184168202178255948601516001808301805460608a0151938616971696909617600160a01b921515929092029190911790945560808601519281019290925560a0850151600383015560c0850151600483015560e085015160058301559284015160068201556101208401516007820180546001600160a01b031916919094161790925561014083015160088301556101608301516009830155610180830151600a8301556101a0830151600b8301556101c090920151600c909101558451610de3918a918791908110610dd657610dd66122c4565b60200260200101516118d2565b600192505050600160005595945050505050565b6001600160a01b03811660009081526002602052604081205460ff16610e1f57506000919050565b506001600160a01b031660009081526002602052604090206009015490565b60026000541415610e615760405162461bcd60e51b81526004016103e5906121e7565b600260008181556001600160a01b0386168152602091909152604090205460ff16610e8b57610f13565b6001600160a01b03848116600090815260026020526040902060010154163314610ec75760405162461bcd60e51b81526004016103e5906121b0565b6000610ed48585846113a2565b905080610ee15750610f13565b6001600160a01b03851660009081526002602081905260408220018054859290610f0c908490612307565b9091555050505b505060016000555050565b6001600160a01b03811660009081526002602052604081205460ff16610f4657506000919050565b6001600160a01b038216600090815260026020819052604090912090810154600390910154610f7591906122f0565b92915050565b60026000541415610f9e5760405162461bcd60e51b81526004016103e5906121e7565b600260008181556001600160a01b0385168152602091909152604090205460ff16610fc85761107c565b6001600160a01b038381166000908152600260205260409020600101541633146110045760405162461bcd60e51b81526004016103e5906121b0565b60006110118484846103a7565b90508061101e575061107c565b6001600160a01b03808516600081815260026020526040902060010154869261104992911685611c44565b6001600160a01b038516600090815260026020819052604082200180548592906110749084906122f0565b909155505050505b5050600160005550565b6001600160a01b03811660009081526002602052604081205460ff166110ae57506000919050565b506001600160a01b03166000908152600260205260409020600c015490565b6001600160a01b03811660009081526002602052604081205460ff166110f557506000919050565b506001600160a01b03166000908152600260208190526040909120015490565b6001600160a01b03811660009081526002602052604081205460ff1661113d57506000919050565b506001600160a01b031660009081526002602052604090206004015490565b6002600054141561117f5760405162461bcd60e51b81526004016103e5906121e7565b600260008181556001600160a01b0383168152602091909152604090205460ff166111e45760405162461bcd60e51b815260206004820152601560248201527422a9291d24b73b30b634b2103230ba30ba37b5b2b760591b60448201526064016103e5565b6001600160a01b03811660009081526002602052604081206009015443111561123b576001600160a01b0382166000908152600260205260409020600b81015460099091015461123491906122f0565b9050611264565b6001600160a01b0382166000908152600260205260409020600b015461126190436122f0565b90505b6001600160a01b038216600090815260026020526040812060088101546009909101546112b691611294916122f0565b6001600160a01b0385166000908152600260205260409020600a0154906118c6565b9050806112c457505061139a565b60006112d08383611d2f565b90506000811180156112fe57506001600160a01b038416600090815260026020819052604090912001548111155b15611396576001600160a01b03808516600081815260026020526040902043600b82015560070154869261133492911684611d3b565b6001600160a01b0385166000908152600260208190526040822001805484929061135f9084906122f0565b90915550506001600160a01b0385166000908152600260205260408120600c01805484929061138f908490612307565b9091555050505b5050505b506001600055565b6001600160a01b03831660009081526002602052604081205460ff166113ca57506000610477565b6001600160a01b038481166000908152600260205260409020600101541633146114065760405162461bcd60e51b81526004016103e5906121b0565b6001600160a01b0384811660009081526002602052604090205461010090048116908416141561143857506000610477565b6040516370a0823160e01b8152306004820152829033906370a0823190602401602060405180830381865afa158015611475573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149991906122ab565b1061047357506001610477565b6001600160a01b03811660009081526002602052604081205460ff166114ce57506000919050565b506001600160a01b03166000908152600260205260409020600b015490565b6001600160a01b03811660009081526002602052604081205460ff1661151557506000919050565b61151e82611086565b61152783610360565b6001600160a01b03841660009081526002602081905260409091209081015460039091015461155691906122f0565b61156091906122f0565b610f759190612307565b6001600160a01b03811660009081526002602052604081205460ff1661159257506000919050565b506001600160a01b0390811660009081526002602052604090205461010090041690565b600260005414156115d95760405162461bcd60e51b81526004016103e5906121e7565b60026000556001600160a01b03821661162a5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420706f6f6c4164647265737360681b60448201526064016103e5565b6000829050306001600160a01b0316816001600160a01b0316633018205f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b919061221e565b6001600160a01b0316146116f15760405162461bcd60e51b815260206004820152601e60248201527f576520617265206e6f742074686520706f6f6c20636f6e74726f6c6c6572000060448201526064016103e5565b836001600160a01b0316816001600160a01b03166304ad79546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175d919061221e565b6001600160a01b0316146117b35760405162461bcd60e51b815260206004820152601b60248201527f44617461546f6b656e2061646472657373206d6973736d61746368000000000060448201526064016103e5565b6040516396fb3eaf60e01b815233600482015284906001600160a01b038216906396fb3eaf906024016020604051808303816000875af11580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f919061231f565b6118605760405162461bcd60e51b81526020600482015260126024820152712737ba1022a9219918102232b83637bcb2b960711b60448201526064016103e5565b6040516334e1990760e01b8152600481018490526001600160a01b038316906334e1990790602401600060405180830381600087803b1580156118a257600080fd5b505af11580156118b6573d6000803e3d6000fd5b5050600160005550505050505050565b6000610477828461233a565b6001600160a01b03821660009081526002602052604090205460ff166118f6575050565b6001600160a01b038216600090815260026020526040902060010154600160a01b900460ff1615611925575050565b6001600160a01b0382166000908152600260205260408120600101805460ff60a01b1916600160a01b179055611964670de0b6b3a7640000600561235c565b9050600061197b670de0b6b3a7640000600561235c565b6001600160a01b0385166000908152600260205260408120600401549192506119a58560126122f0565b6119b090600a61245f565b6001600160a01b038716600090815260026020526040902060060154670de0b6b3a764000090869086906119e590879061235c565b6119ef919061235c565b6119f9919061233a565b611a03919061233a565b611a0d919061235c565b6001600160a01b038088166000818152600260205260409020600101549293508892611a3a921684611c44565b6001600160a01b0380881660009081526002602052604090208054600190910154610100909104821691611a719183911686611c44565b6001600160a01b03888116600081815260026020526040908190206001810154905491516309ef3f5b60e01b815260048101939093526024830187905260448301899052610100909104831660648301526084820187905260a482018990529091169081906309ef3f5b9060c401600060405180830381600087803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b505050506001600160a01b03891660009081526002602052604081206004018054879290611b3c9084906122f0565b90915550506001600160a01b03891660009081526002602081905260408220018054869290611b6c9084906122f0565b90915550506001600160a01b038981166000908152600260205260408082206001015490516370a0823160e01b815230600482015292169182906370a0823190602401602060405180830381865afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf091906122ab565b6001600160a01b03808d16600090815260026020819052604090912060070154929350611c379290911690611c269084906118c6565b6001600160a01b0385169190611d3b565b5050505050505050505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb991906122ab565b611cc39190612307565b6040516001600160a01b038516602482015260448101829052909150611d2990859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d70565b50505050565b6000610477828461235c565b6040516001600160a01b038316602482015260448101829052611d6b90849063a9059cbb60e01b90606401611cf2565b505050565b6000611dc5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e429092919063ffffffff16565b805190915015611d6b5780806020019051810190611de3919061231f565b611d6b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103e5565b6060611e518484600085611e59565b949350505050565b606082471015611eba5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103e5565b843b611f085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e5565b600080866001600160a01b03168587604051611f249190612497565b60006040518083038185875af1925050503d8060008114611f61576040519150601f19603f3d011682016040523d82523d6000602084013e611f66565b606091505b5091509150611f76828286611f81565b979650505050505050565b60608315611f90575081610477565b825115611fa05782518084602001fd5b8160405162461bcd60e51b81526004016103e591906124b3565b6001600160a01b0381168114611fcf57600080fd5b50565b600060208284031215611fe457600080fd5b813561047781611fba565b60008060006060848603121561200457600080fd5b833561200f81611fba565b9250602084013561201f81611fba565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561206f5761206f612030565b604052919050565b600080600080600060a0868803121561208f57600080fd5b853561209a81611fba565b94506020868101356120ab81611fba565b945060408701356120bb81611fba565b935060608701356120cb81611fba565b9250608087013567ffffffffffffffff808211156120e857600080fd5b818901915089601f8301126120fc57600080fd5b81358181111561210e5761210e612030565b8060051b915061211f848301612046565b818152918301840191848101908c84111561213957600080fd5b938501935b838510156121575784358252938501939085019061213e565b8096505050505050509295509295909350565b6000806000806080858703121561218057600080fd5b843561218b81611fba565b9350602085013561219b81611fba565b93969395505050506040820135916060013590565b6020808252601c908201527f4552523a204f6e6c7920706f6f6c2063616e2063616c6c207468697300000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561223057600080fd5b815161047781611fba565b8051801515811461224b57600080fd5b919050565b60006040828403121561226257600080fd5b6040516040810181811067ffffffffffffffff8211171561228557612285612030565b6040526122918361223b565b815261229f6020840161223b565b60208201529392505050565b6000602082840312156122bd57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015612302576123026122da565b500390565b6000821982111561231a5761231a6122da565b500190565b60006020828403121561233157600080fd5b6104778261223b565b60008261235757634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612376576123766122da565b500290565b600181815b808511156123b657816000190482111561239c5761239c6122da565b808516156123a957918102915b93841c9390800290612380565b509250929050565b6000826123cd57506001610f75565b816123da57506000610f75565b81600181146123f057600281146123fa57612416565b6001915050610f75565b60ff84111561240b5761240b6122da565b50506001821b610f75565b5060208310610133831016604e8410600b8410161715612439575081810a610f75565b612443838361237b565b8060001904821115612457576124576122da565b029392505050565b600061047783836123be565b60005b8381101561248657818101518382015260200161246e565b83811115611d295750506000910152565b600082516124a981846020870161246b565b9190910192915050565b60208152600082518060208401526124d281604085016020870161246b565b601f01601f1916919091016040019291505056fea26469706673582212208de9c72aeb5019cadbaefaf299cffa53888a7d897b4badf2f893319f9f76996564736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/templates/ERC20Template.sol/ERC20Template.dbg.json b/artifacts/templates/ERC20Template.sol/ERC20Template.dbg.json new file mode 100644 index 000000000..50ebac313 --- /dev/null +++ b/artifacts/templates/ERC20Template.sol/ERC20Template.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/templates/ERC20Template.sol/ERC20Template.json b/artifacts/templates/ERC20Template.sol/ERC20Template.json new file mode 100644 index 000000000..beed40ad1 --- /dev/null +++ b/artifacts/templates/ERC20Template.sol/ERC20Template.json @@ -0,0 +1,1382 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Template", + "sourceName": "contracts/templates/ERC20Template.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": 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": "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" + } + ], + "name": "ProviderFees", + "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": 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": "PublishMarketFeesChanged", + "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": [], + "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": "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": [ + { + "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": "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": "deployer", + "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": "serviceIndex", + "type": "uint256" + }, + { + "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": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "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": "0x6080604052600b805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d9160039162000091565b5080516200008390600490602084019062000091565b505060016007555062000174565b8280546200009f9062000137565b90600052602060002090601f016020900481019282620000c357600085556200010e565b82601f10620000de57805160ff19168380011785556200010e565b828001600101855582156200010e579182015b828111156200010e578251825591602001919060010190620000f1565b506200011c92915062000120565b5090565b5b808211156200011c576000815560010162000121565b600181811c908216806200014c57607f821691505b602082108114156200016e57634e487b7160e01b600052602260045260246000fd5b50919050565b61428e80620001846000396000f3fe6080604052600436106102725760003560e01c80635d1ca6311161014e578063aa271e1a116100bb578063dd62ed3e11610077578063dd62ed3e14610878578063e086e5ec146108be578063e487c2e8146108c6578063ec342ad0146108db578063ef867ff4146108f7578063f887ea401461091757005b8063aa271e1a146107aa578063aa492ef9146107e3578063ab62f0e114610803578063b2263a5d14610823578063b3998be014610838578063d505accf1461085857005b806395d89b411161010a57806395d89b41146106f557806396fb3eaf1461070a578063983b2d561461072a5780639b4f44b61461074a578063a457c2d71461076a578063a9059cbb1461078a57005b80635d1ca6311461062957806370a082311461063d57806379cc6790146106735780637ecebe001461069357806382c03da5146106c05780638b96412b146106d557005b8063313ce567116101ec57806340c10f19116101a857806340c10f191461057457806342966c68146105945780634f189cb2146105b457806357a3a31b146105c957806357ad5ff6146105e95780635bfe4da01461060957005b8063313ce567146104ac578063355274ea146104ce5780633644e515146104e3578063392e53cd146104f95780633950935114610518578063397b37431461053857005b806318160ddd1161023b57806318160ddd146103d9578063191c918a146103f857806323b872dd1461041857806325b00243146104385780633092afd51461045857806330adf81f1461047857005b80627ffb781461027457806301e88208146102ab57806306fdde03146102fb578063095ea7b31461031d578063160a79251461034d575b005b34801561028057600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b757600080fd5b506102e46102c6366004613569565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102a2565b34801561030757600080fd5b50610310610937565b6040516102a291906135de565b34801561032957600080fd5b5061033d6103383660046135f1565b6109c9565b60405190151581526020016102a2565b34801561035957600080fd5b506103ba610368366004613569565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102a2565b3480156103e557600080fd5b506002545b6040519081526020016102a2565b34801561040457600080fd5b5061027261041336600461362b565b6109df565b34801561042457600080fd5b5061033d61043336600461368a565b610b3a565b34801561044457600080fd5b50610272610453366004613569565b610be6565b34801561046457600080fd5b50610272610473366004613569565b610c80565b34801561048457600080fd5b506103ea7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104b857600080fd5b5060125b60405160ff90911681526020016102a2565b3480156104da57600080fd5b50600a546103ea565b3480156104ef57600080fd5b506103ea60115481565b34801561050557600080fd5b50600b54600160a01b900460ff1661033d565b34801561052457600080fd5b5061033d6105333660046135f1565b610d17565b34801561054457600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102a2565b34801561058057600080fd5b5061027261058f3660046135f1565b610d53565b3480156105a057600080fd5b506102726105af3660046136cb565b610e24565b3480156105c057600080fd5b50610272610e2e565b3480156105d557600080fd5b506102726105e4366004613569565b610f15565b3480156105f557600080fd5b5061027261060436600461368a565b611057565b34801561061557600080fd5b5061028e61062436600461381e565b6111ab565b34801561063557600080fd5b5060016104bc565b34801561064957600080fd5b506103ea610658366004613569565b6001600160a01b031660009081526020819052604090205490565b34801561067f57600080fd5b5061027261068e3660046135f1565b611491565b34801561069f57600080fd5b506103ea6106ae366004613569565b60126020526000908152604090205481565b3480156106cc57600080fd5b50610272611517565b3480156106e157600080fd5b506103ea6106f03660046138a6565b611571565b34801561070157600080fd5b5061031061173e565b34801561071657600080fd5b5061033d610725366004613569565b61174d565b34801561073657600080fd5b50610272610745366004613569565b6117c8565b34801561075657600080fd5b506102726107653660046139a0565b61185f565b34801561077657600080fd5b5061033d6107853660046135f1565b611d10565b34801561079657600080fd5b5061033d6107a53660046135f1565b611da9565b3480156107b657600080fd5b5061033d6107c5366004613569565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ef57600080fd5b506102726107fe366004613569565b611db6565b34801561080f57600080fd5b5061027261081e366004613a4d565b611e4d565b34801561082f57600080fd5b506103ea611f7e565b34801561084457600080fd5b5061033d610853366004613b0b565b611f94565b34801561086457600080fd5b50610272610873366004613bfc565b6120ce565b34801561088457600080fd5b506103ea610893366004613c6a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102726122e0565b3480156108d257600080fd5b5061028e612320565b3480156108e757600080fd5b506103ea670de0b6b3a764000081565b34801561090357600080fd5b5061028e6109123660046136cb565b6123b5565b34801561092357600080fd5b5060135461028e906001600160a01b031681565b60606008805461094690613ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461097290613ca3565b80156109bf5780601f10610994576101008083540402835291602001916109bf565b820191906000526020600020905b8154815290600101906020018083116109a257829003601f168201915b5050505050905090565b60006109d63384846123df565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d9190613cde565b60200151610a765760405162461bcd60e51b8152600401610a6d90613d63565b60405180910390fd5b60026007541415610a995760405162461bcd60e51b8152600401610a6d90613d98565b6002600755601354604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050508115610b2e57610b2e85612503565b50506001600755505050565b6000610b47848484612605565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bcc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a6d565b610bd985338584036123df565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190613cde565b60200151610c745760405162461bcd60e51b8152600401610a6d90613d63565b610c7d816127d5565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190613cde565b60200151610d0e5760405162461bcd60e51b8152600401610a6d90613d63565b610c7d81612836565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109d6918590610d4e908690613de5565b6123df565b3360009081526005602052604090205460ff16610db25760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610a6d565b600a54610dc882610dc260025490565b90612896565b1115610e165760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610a6d565b610e2082826128a2565b5050565b610c7d3382612981565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015610e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b9190613dfd565b6001600160a01b0316336001600160a01b031614610efb5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610a6d565b610f03612acf565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff1680610fa65750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa19190613cde565b602001515b6110065760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610a6d565b61100f81612b7e565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b031633146110c45760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610a6d565b6001600160a01b03831661112b5760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610a6d565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613cde565b6020015161123a5760405162461bcd60e51b8152600401610a6d90613d63565b600254156112965760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610a6d565b6112b9826000815181106112ac576112ac613e1a565b6020026020010151612503565b62250490846003815181106112d0576112d0613e1a565b6020026020010151116113375760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b6064820152608401610a6d565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061136f5761136f613e1a565b60209081029190910101516001600160a01b0390811690915260135460405163ee3bc63560e01b8152929350169063ee3bc635906113b7908490899089908990600401613ea4565b6020604051808303816000875af11580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190613dfd565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b967828460008151811061143157611431613e1a565b60200260200101518560018151811061144c5761144c613e1a565b6020026020010151604051611481939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061149d8333610893565b9050818110156114fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610a6d565b61150883338484036123df565b6115128383612981565b505050565b600c546001600160a01b03163314610efb5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610a6d565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af11580156115bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e09190613cde565b602001516116005760405162461bcd60e51b8152600401610a6d90613d63565b600260075414156116235760405162461bcd60e51b8152600401610a6d90613d98565b6002600755601354604051638244937560e01b81526001600160a01b039091169063824493759061165c90879087908790600401613f0f565b6020604051808303816000875af115801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f9190613f4f565b90506000826004815181106116b6576116b6613e1a565b602002602001015111156116cd576116cd84612503565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e6165818460008151811061170257611702613e1a565b602002602001015160405161172a9291909182526001600160a01b0316602082015260400190565b60405180910390a160016007559392505050565b60606009805461094690613ca3565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af115801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190613cde565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118369190613cde565b602001516118565760405162461bcd60e51b8152600401610a6d90613d63565b610c7d81612503565b600260075414156118825760405162461bcd60e51b8152600401610a6d90613d98565b600260075533600090815260208190526040812054670de0b6b3a764000091908211156118ff5760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b6064820152608401610a6d565b600e5460408051338152602081018590529081018c90524260608201524360808201526001600160a01b03918216918d16907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a3600060105411801561197a5750600f546001600160a01b031615155b80156119905750600e546001600160a01b031615155b15611abb57601054600f546119b4916001600160a01b039091169033903090612ba0565b6010546119c2906064612c0b565b600e546010549192506119f8916001600160a01b03909116906119e59084612c17565b600f546001600160a01b03169190612c23565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b490611a3d9085612c17565b60405190815260200160405180910390a38015611abb57600b54600f54611a71916001600160a01b03918216911683612c23565b600f54600b546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b60006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081858c8c8c604051602001611b0f9493929190613f68565b60405160208183030381529060405280519060200120604051602001611b36929190613fae565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8c1692840192909252606083018a9052608083018990529092509060019060a0016020604051602081039080840390855afa158015611ba1573d6000803e3d6000fd5b5050506020604051035190508b6001600160a01b0316816001600160a01b031614611c055760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610a6d565b8a6001600160a01b03168c6001600160a01b03167f144fc6ed7d0a617ba44a01131b1f724d0370297a3640b6201f343e081ada64468c898d8d8d604051611c50959493929190613fd0565b60405180910390a360008a118015611c7057506001600160a01b038b1615155b8015611c8457506001600160a01b038c1615155b15611c9e57611c9e6001600160a01b038c16338e8d612ba0565b611caf611ca9612320565b86611da9565b611cfb5760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610a6d565b50506001600755505050505050505050505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611d925760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a6d565b611d9f33858584036123df565b5060019392505050565b60006109d6338484612605565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e249190613cde565b60200151611e445760405162461bcd60e51b8152600401610a6d90613d63565b610c7d81612c53565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebb9190613cde565b60200151611edb5760405162461bcd60e51b8152600401610a6d90613d63565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e890611f4790849087908790600401614009565b600060405180830381600087803b158015611f6157600080fd5b505af1158015611f75573d6000803e3d6000fd5b50505050505050565b611f916064670de0b6b3a764000061403f565b81565b600b54600090600160a01b900460ff161561200b5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610a6d565b6120bf6120188b8d614061565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506120ba92508991508a90506140e9565b612d61565b9b9a5050505050505050505050565b438410156121115760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610a6d565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761216483614151565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016121dd92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612248573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061227e5750886001600160a01b0316816001600160a01b0316145b6122ca5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610a6d565b6122d58989896123df565b505050505050505050565b6122e8612320565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610c7d573d6000803e3d6000fd5b600d546000906001600160a01b03166123a557600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa15801561237c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a09190613dfd565b905090565b50600d546001600160a01b031690565b600681815481106123c557600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0383166124415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a6d565b6001600160a01b0382166124a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a6d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561256d5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610a6d565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166126695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a6d565b6001600160a01b0382166126cb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a6d565b6001600160a01b038316600090815260208190526040902054818110156127435760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a6d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061277a908490613de5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127c691815260200190565b60405180910390a35b50505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906125f99042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906125f99042904390918252602082015260400190565b6000610bdf8284613de5565b6001600160a01b0382166128f85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a6d565b806002600082825461290a9190613de5565b90915550506001600160a01b03821660009081526020819052604081208054839290612937908490613de5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166129e15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a6d565b6001600160a01b03821660009081526020819052604090205481811015612a555760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a6d565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612a8490849061416c565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612b355760006005600060068481548110612af557612af5613e1a565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612b2d81614151565b915050612ad2565b50612b426006600061349d565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03808516602483015283166044820152606481018290526127cf9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613253565b6000610bdf828461403f565b6000610bdf828461416c565b6040516001600160a01b03831660248201526044810182905261151290849063a9059cbb60e01b90606401612bd4565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612ccd5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610a6d565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016125f9565b60008084600081518110612d7757612d77613e1a565b60200260200101519050600085600181518110612d9657612d96613e1a565b6020026020010151905060006001600160a01b0316826001600160a01b03161415612e185760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610a6d565b6001600160a01b038116612e945760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610a6d565b84600081518110612ea757612ea7613e1a565b602002602001015160001415612f0b5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610a6d565b84600081518110612f1e57612f1e613e1a565b6020026020010151600a8190555087600081518110612f3f57612f3f613e1a565b602002602001015160089080519060200190612f5c9291906134bb565b5087600181518110612f7057612f70613e1a565b602002602001015160099080519060200190612f8d9291906134bb565b50600c80546001600160a01b0319166001600160a01b038416179055855186906002908110612fbe57612fbe613e1a565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161301b9088906000906112ac576112ac613e1a565b60006001600160a01b03168760018151811061303957613039613e1a565b60200260200101516001600160a01b0316146130e3576130728760018151811061306557613065613e1a565b6020026020010151612b7e565b8660018151811061308557613085613e1a565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516130da929190918252602082015260400190565b60405180910390a35b866002815181106130f6576130f6613e1a565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061313757613137613e1a565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061317857613178613e1a565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516131bb9190614183565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b60006132a8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133259092919063ffffffff16565b80519091501561151257808060200190518101906132c6919061421f565b6115125760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a6d565b6060613334848460008561333c565b949350505050565b60608247101561339d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a6d565b843b6133eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a6d565b600080866001600160a01b03168587604051613407919061423c565b60006040518083038185875af1925050503d8060008114613444576040519150601f19603f3d011682016040523d82523d6000602084013e613449565b606091505b5091509150613459828286613464565b979650505050505050565b60608315613473575081610bdf565b8251156134835782518084602001fd5b8160405162461bcd60e51b8152600401610a6d91906135de565b5080546000825590600052602060002090810190610c7d919061353f565b8280546134c790613ca3565b90600052602060002090601f0160209004810192826134e9576000855561352f565b82601f1061350257805160ff191683800117855561352f565b8280016001018555821561352f579182015b8281111561352f578251825591602001919060010190613514565b5061353b92915061353f565b5090565b5b8082111561353b5760008155600101613540565b6001600160a01b0381168114610c7d57600080fd5b60006020828403121561357b57600080fd5b8135610bdf81613554565b60005b838110156135a1578181015183820152602001613589565b838111156127cf5750506000910152565b600081518084526135ca816020860160208601613586565b601f01601f19169290920160200192915050565b602081526000610bdf60208301846135b2565b6000806040838503121561360457600080fd5b823561360f81613554565b946020939093013593505050565b8015158114610c7d57600080fd5b600080600080600060a0868803121561364357600080fd5b853561364e81613554565b94506020860135935060408601359250606086013561366c8161361d565b9150608086013561367c81613554565b809150509295509295909350565b60008060006060848603121561369f57600080fd5b83356136aa81613554565b925060208401356136ba81613554565b929592945050506040919091013590565b6000602082840312156136dd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613723576137236136e4565b604052919050565b600067ffffffffffffffff821115613745576137456136e4565b5060051b60200190565b600082601f83011261376057600080fd5b813560206137756137708361372b565b6136fa565b82815260059290921b8401810191818101908684111561379457600080fd5b8286015b848110156137af5780358352918301918301613798565b509695505050505050565b600082601f8301126137cb57600080fd5b813560206137db6137708361372b565b82815260059290921b840181019181810190868411156137fa57600080fd5b8286015b848110156137af57803561381181613554565b83529183019183016137fe565b60008060006060848603121561383357600080fd5b833567ffffffffffffffff8082111561384b57600080fd5b6138578783880161374f565b9450602086013591508082111561386d57600080fd5b6138798783880161374f565b9350604086013591508082111561388f57600080fd5b5061389c868287016137ba565b9150509250925092565b6000806000606084860312156138bb57600080fd5b83356138c681613554565b9250602084013567ffffffffffffffff808211156138e357600080fd5b6138ef878388016137ba565b9350604086013591508082111561390557600080fd5b5061389c8682870161374f565b803560ff8116811461392357600080fd5b919050565b600067ffffffffffffffff831115613942576139426136e4565b613955601f8401601f19166020016136fa565b905082815283838301111561396957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261399157600080fd5b610bdf83833560208501613928565b60008060008060008060008060006101208a8c0312156139bf57600080fd5b89356139ca81613554565b985060208a0135975060408a01356139e181613554565b965060608a01356139f181613554565b955060808a01359450613a0660a08b01613912565b935060c08a0135925060e08a013591506101008a013567ffffffffffffffff811115613a3157600080fd5b613a3d8c828d01613980565b9150509295985092959850929598565b60008060208385031215613a6057600080fd5b823567ffffffffffffffff80821115613a7857600080fd5b818501915085601f830112613a8c57600080fd5b813581811115613a9b57600080fd5b866020828501011115613aad57600080fd5b60209290920196919550909350505050565b60008083601f840112613ad157600080fd5b50813567ffffffffffffffff811115613ae957600080fd5b6020830191508360208260051b8501011115613b0457600080fd5b9250929050565b60008060008060008060008060008060a08b8d031215613b2a57600080fd5b8a3567ffffffffffffffff80821115613b4257600080fd5b613b4e8e838f01613abf565b909c509a5060208d0135915080821115613b6757600080fd5b613b738e838f01613abf565b909a50985060408d0135915080821115613b8c57600080fd5b613b988e838f01613abf565b909850965060608d0135915080821115613bb157600080fd5b613bbd8e838f01613abf565b909650945060808d0135915080821115613bd657600080fd5b50613be38d828e01613abf565b915080935050809150509295989b9194979a5092959850565b600080600080600080600060e0888a031215613c1757600080fd5b8735613c2281613554565b96506020880135613c3281613554565b95506040880135945060608801359350613c4e60808901613912565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613c7d57600080fd5b8235613c8881613554565b91506020830135613c9881613554565b809150509250929050565b600181811c90821680613cb757607f821691505b60208210811415613cd857634e487b7160e01b600052602260045260246000fd5b50919050565b600060808284031215613cf057600080fd5b6040516080810181811067ffffffffffffffff82111715613d1357613d136136e4565b6040528251613d218161361d565b81526020830151613d318161361d565b60208201526040830151613d448161361d565b60408201526060830151613d578161361d565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613df857613df8613dcf565b500190565b600060208284031215613e0f57600080fd5b8151610bdf81613554565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613e6057815187529582019590820190600101613e44565b509495945050505050565b600081518084526020808501945080840160005b83811015613e605781516001600160a01b031687529582019590820190600101613e7f565b60008186825b6002811015613ed25781516001600160a01b0316835260209283019290910190600101613eaa565b50505060a06040830152613ee960a0830186613e30565b8281036060840152613efb8186613e30565b905082810360808401526134598185613e6b565b6001600160a01b0384168152606060208201819052600090613f3390830185613e6b565b8281036040840152613f458185613e30565b9695505050505050565b600060208284031215613f6157600080fd5b5051919050565b60008551613f7a818460208a01613586565b6bffffffffffffffffffffffff19606096871b8116919093019081529390941b166014830152602882015260480192915050565b60008351613fc0818460208801613586565b9190910191825250602001919050565b85815260a060208201526000613fe960a08301876135b2565b60ff95909516604083015250606081019290925260809091015292915050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008261405c57634e487b7160e01b600052601260045260246000fd5b500490565b600061406f6137708461372b565b80848252602080830192508560051b85013681111561408d57600080fd5b855b818110156140dd57803567ffffffffffffffff8111156140af5760008081fd5b870136601f8201126140c15760008081fd5b6140cf368235868401613928565b86525093820193820161408f565b50919695505050505050565b60006140f76137708461372b565b80848252602080830192508560051b85013681111561411557600080fd5b855b818110156140dd57803567ffffffffffffffff8111156141375760008081fd5b61414336828a01613980565b865250938201938201614117565b600060001982141561416557614165613dcf565b5060010190565b60008282101561417e5761417e613dcf565b500390565b600080835481600182811c91508083168061419f57607f831692505b60208084108214156141bf57634e487b7160e01b86526022600452602486fd5b8180156141d357600181146141e457614211565b60ff19861689528489019650614211565b60008a81526020902060005b868110156142095781548b8201529085019083016141f0565b505084890196505b509498975050505050505050565b60006020828403121561423157600080fd5b8151610bdf8161361d565b6000825161424e818460208701613586565b919091019291505056fea2646970667358221220d238578f5cc11933648d20be9ee5e6703e39313ad340c2b000bb26ac3b3e034564736f6c634300080a0033", + "deployedBytecode": "0x6080604052600436106102725760003560e01c80635d1ca6311161014e578063aa271e1a116100bb578063dd62ed3e11610077578063dd62ed3e14610878578063e086e5ec146108be578063e487c2e8146108c6578063ec342ad0146108db578063ef867ff4146108f7578063f887ea401461091757005b8063aa271e1a146107aa578063aa492ef9146107e3578063ab62f0e114610803578063b2263a5d14610823578063b3998be014610838578063d505accf1461085857005b806395d89b411161010a57806395d89b41146106f557806396fb3eaf1461070a578063983b2d561461072a5780639b4f44b61461074a578063a457c2d71461076a578063a9059cbb1461078a57005b80635d1ca6311461062957806370a082311461063d57806379cc6790146106735780637ecebe001461069357806382c03da5146106c05780638b96412b146106d557005b8063313ce567116101ec57806340c10f19116101a857806340c10f191461057457806342966c68146105945780634f189cb2146105b457806357a3a31b146105c957806357ad5ff6146105e95780635bfe4da01461060957005b8063313ce567146104ac578063355274ea146104ce5780633644e515146104e3578063392e53cd146104f95780633950935114610518578063397b37431461053857005b806318160ddd1161023b57806318160ddd146103d9578063191c918a146103f857806323b872dd1461041857806325b00243146104385780633092afd51461045857806330adf81f1461047857005b80627ffb781461027457806301e88208146102ab57806306fdde03146102fb578063095ea7b31461031d578063160a79251461034d575b005b34801561028057600080fd5b50600c546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b757600080fd5b506102e46102c6366004613569565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102a2565b34801561030757600080fd5b50610310610937565b6040516102a291906135de565b34801561032957600080fd5b5061033d6103383660046135f1565b6109c9565b60405190151581526020016102a2565b34801561035957600080fd5b506103ba610368366004613569565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102a2565b3480156103e557600080fd5b506002545b6040519081526020016102a2565b34801561040457600080fd5b5061027261041336600461362b565b6109df565b34801561042457600080fd5b5061033d61043336600461368a565b610b3a565b34801561044457600080fd5b50610272610453366004613569565b610be6565b34801561046457600080fd5b50610272610473366004613569565b610c80565b34801561048457600080fd5b506103ea7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104b857600080fd5b5060125b60405160ff90911681526020016102a2565b3480156104da57600080fd5b50600a546103ea565b3480156104ef57600080fd5b506103ea60115481565b34801561050557600080fd5b50600b54600160a01b900460ff1661033d565b34801561052457600080fd5b5061033d6105333660046135f1565b610d17565b34801561054457600080fd5b50600e54600f54601054604080516001600160a01b039485168152939092166020840152908201526060016102a2565b34801561058057600080fd5b5061027261058f3660046135f1565b610d53565b3480156105a057600080fd5b506102726105af3660046136cb565b610e24565b3480156105c057600080fd5b50610272610e2e565b3480156105d557600080fd5b506102726105e4366004613569565b610f15565b3480156105f557600080fd5b5061027261060436600461368a565b611057565b34801561061557600080fd5b5061028e61062436600461381e565b6111ab565b34801561063557600080fd5b5060016104bc565b34801561064957600080fd5b506103ea610658366004613569565b6001600160a01b031660009081526020819052604090205490565b34801561067f57600080fd5b5061027261068e3660046135f1565b611491565b34801561069f57600080fd5b506103ea6106ae366004613569565b60126020526000908152604090205481565b3480156106cc57600080fd5b50610272611517565b3480156106e157600080fd5b506103ea6106f03660046138a6565b611571565b34801561070157600080fd5b5061031061173e565b34801561071657600080fd5b5061033d610725366004613569565b61174d565b34801561073657600080fd5b50610272610745366004613569565b6117c8565b34801561075657600080fd5b506102726107653660046139a0565b61185f565b34801561077657600080fd5b5061033d6107853660046135f1565b611d10565b34801561079657600080fd5b5061033d6107a53660046135f1565b611da9565b3480156107b657600080fd5b5061033d6107c5366004613569565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ef57600080fd5b506102726107fe366004613569565b611db6565b34801561080f57600080fd5b5061027261081e366004613a4d565b611e4d565b34801561082f57600080fd5b506103ea611f7e565b34801561084457600080fd5b5061033d610853366004613b0b565b611f94565b34801561086457600080fd5b50610272610873366004613bfc565b6120ce565b34801561088457600080fd5b506103ea610893366004613c6a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102726122e0565b3480156108d257600080fd5b5061028e612320565b3480156108e757600080fd5b506103ea670de0b6b3a764000081565b34801561090357600080fd5b5061028e6109123660046136cb565b6123b5565b34801561092357600080fd5b5060135461028e906001600160a01b031681565b60606008805461094690613ca3565b80601f016020809104026020016040519081016040528092919081815260200182805461097290613ca3565b80156109bf5780601f10610994576101008083540402835291602001916109bf565b820191906000526020600020905b8154815290600101906020018083116109a257829003601f168201915b5050505050905090565b60006109d63384846123df565b50600192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d9190613cde565b60200151610a765760405162461bcd60e51b8152600401610a6d90613d63565b60405180910390fd5b60026007541415610a995760405162461bcd60e51b8152600401610a6d90613d98565b6002600755601354604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050508115610b2e57610b2e85612503565b50506001600755505050565b6000610b47848484612605565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bcc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a6d565b610bd985338584036123df565b60019150505b9392505050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190613cde565b60200151610c745760405162461bcd60e51b8152600401610a6d90613d63565b610c7d816127d5565b50565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190613cde565b60200151610d0e5760405162461bcd60e51b8152600401610a6d90613d63565b610c7d81612836565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109d6918590610d4e908690613de5565b6123df565b3360009081526005602052604090205460ff16610db25760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610a6d565b600a54610dc882610dc260025490565b90612896565b1115610e165760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610a6d565b610e2082826128a2565b5050565b610c7d3382612981565b600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015610e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b9190613dfd565b6001600160a01b0316336001600160a01b031614610efb5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610a6d565b610f03612acf565b600d80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff1680610fa65750600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa19190613cde565b602001515b6110065760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610a6d565b61100f81612b7e565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600e546001600160a01b031633146110c45760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610a6d565b6001600160a01b03831661112b5760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610a6d565b600e80546001600160a01b038581166001600160a01b03199283168117909355600f80549186169190921681179091556010839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af11580156111f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121a9190613cde565b6020015161123a5760405162461bcd60e51b8152600401610a6d90613d63565b600254156112965760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610a6d565b6112b9826000815181106112ac576112ac613e1a565b6020026020010151612503565b62250490846003815181106112d0576112d0613e1a565b6020026020010151116113375760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b6064820152608401610a6d565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061136f5761136f613e1a565b60209081029190910101516001600160a01b0390811690915260135460405163ee3bc63560e01b8152929350169063ee3bc635906113b7908490899089908990600401613ea4565b6020604051808303816000875af11580156113d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fa9190613dfd565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b967828460008151811061143157611431613e1a565b60200260200101518560018151811061144c5761144c613e1a565b6020026020010151604051611481939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061149d8333610893565b9050818110156114fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610a6d565b61150883338484036123df565b6115128383612981565b505050565b600c546001600160a01b03163314610efb5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610a6d565b600c5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af11580156115bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e09190613cde565b602001516116005760405162461bcd60e51b8152600401610a6d90613d63565b600260075414156116235760405162461bcd60e51b8152600401610a6d90613d98565b6002600755601354604051638244937560e01b81526001600160a01b039091169063824493759061165c90879087908790600401613f0f565b6020604051808303816000875af115801561167b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169f9190613f4f565b90506000826004815181106116b6576116b6613e1a565b602002602001015111156116cd576116cd84612503565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e6165818460008151811061170257611702613e1a565b602002602001015160405161172a9291909182526001600160a01b0316602082015260400190565b60405180910390a160016007559392505050565b60606009805461094690613ca3565b600c5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af115801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190613cde565b6020015192915050565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118369190613cde565b602001516118565760405162461bcd60e51b8152600401610a6d90613d63565b610c7d81612503565b600260075414156118825760405162461bcd60e51b8152600401610a6d90613d98565b600260075533600090815260208190526040812054670de0b6b3a764000091908211156118ff5760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b6064820152608401610a6d565b600e5460408051338152602081018590529081018c90524260608201524360808201526001600160a01b03918216918d16907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a3600060105411801561197a5750600f546001600160a01b031615155b80156119905750600e546001600160a01b031615155b15611abb57601054600f546119b4916001600160a01b039091169033903090612ba0565b6010546119c2906064612c0b565b600e546010549192506119f8916001600160a01b03909116906119e59084612c17565b600f546001600160a01b03169190612c23565b600f54600e546010546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b490611a3d9085612c17565b60405190815260200160405180910390a38015611abb57600b54600f54611a71916001600160a01b03918216911683612c23565b600f54600b546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b60006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081858c8c8c604051602001611b0f9493929190613f68565b60405160208183030381529060405280519060200120604051602001611b36929190613fae565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8c1692840192909252606083018a9052608083018990529092509060019060a0016020604051602081039080840390855afa158015611ba1573d6000803e3d6000fd5b5050506020604051035190508b6001600160a01b0316816001600160a01b031614611c055760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610a6d565b8a6001600160a01b03168c6001600160a01b03167f144fc6ed7d0a617ba44a01131b1f724d0370297a3640b6201f343e081ada64468c898d8d8d604051611c50959493929190613fd0565b60405180910390a360008a118015611c7057506001600160a01b038b1615155b8015611c8457506001600160a01b038c1615155b15611c9e57611c9e6001600160a01b038c16338e8d612ba0565b611caf611ca9612320565b86611da9565b611cfb5760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f2073656e6420445420746f207075626c697368657200006044820152606401610a6d565b50506001600755505050505050505050505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611d925760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a6d565b611d9f33858584036123df565b5060019392505050565b60006109d6338484612605565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e249190613cde565b60200151611e445760405162461bcd60e51b8152600401610a6d90613d63565b610c7d81612c53565b600c5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebb9190613cde565b60200151611edb5760405162461bcd60e51b8152600401610a6d90613d63565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600c546301caf8fd60e31b83529092506001600160a01b031690630e57c7e890611f4790849087908790600401614009565b600060405180830381600087803b158015611f6157600080fd5b505af1158015611f75573d6000803e3d6000fd5b50505050505050565b611f916064670de0b6b3a764000061403f565b81565b600b54600090600160a01b900460ff161561200b5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610a6d565b6120bf6120188b8d614061565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506120ba92508991508a90506140e9565b612d61565b9b9a5050505050505050505050565b438410156121115760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610a6d565b6011546001600160a01b038816600090815260126020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761216483614151565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016121dd92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612248573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061227e5750886001600160a01b0316816001600160a01b0316145b6122ca5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610a6d565b6122d58989896123df565b505050505050505050565b6122e8612320565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610c7d573d6000803e3d6000fd5b600d546000906001600160a01b03166123a557600c546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa15801561237c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a09190613dfd565b905090565b50600d546001600160a01b031690565b600681815481106123c557600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0383166124415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a6d565b6001600160a01b0382166124a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a6d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff161561256d5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610a6d565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166126695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a6d565b6001600160a01b0382166126cb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a6d565b6001600160a01b038316600090815260208190526040902054818110156127435760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a6d565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061277a908490613de5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127c691815260200190565b60405180910390a35b50505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906125f99042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906125f99042904390918252602082015260400190565b6000610bdf8284613de5565b6001600160a01b0382166128f85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a6d565b806002600082825461290a9190613de5565b90915550506001600160a01b03821660009081526020819052604081208054839290612937908490613de5565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166129e15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a6d565b6001600160a01b03821660009081526020819052604090205481811015612a555760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a6d565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612a8490849061416c565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612b355760006005600060068481548110612af557612af5613e1a565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612b2d81614151565b915050612ad2565b50612b426006600061349d565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03808516602483015283166044820152606481018290526127cf9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613253565b6000610bdf828461403f565b6000610bdf828461416c565b6040516001600160a01b03831660248201526044810182905261151290849063a9059cbb60e01b90606401612bd4565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612ccd5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610a6d565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016125f9565b60008084600081518110612d7757612d77613e1a565b60200260200101519050600085600181518110612d9657612d96613e1a565b6020026020010151905060006001600160a01b0316826001600160a01b03161415612e185760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610a6d565b6001600160a01b038116612e945760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610a6d565b84600081518110612ea757612ea7613e1a565b602002602001015160001415612f0b5760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610a6d565b84600081518110612f1e57612f1e613e1a565b6020026020010151600a8190555087600081518110612f3f57612f3f613e1a565b602002602001015160089080519060200190612f5c9291906134bb565b5087600181518110612f7057612f70613e1a565b602002602001015160099080519060200190612f8d9291906134bb565b50600c80546001600160a01b0319166001600160a01b038416179055855186906002908110612fbe57612fbe613e1a565b6020908102919091010151601380546001600160a01b039283166001600160a01b0319909116179055600b80546001600160a81b03191691831691909117600160a01b179055865161301b9088906000906112ac576112ac613e1a565b60006001600160a01b03168760018151811061303957613039613e1a565b60200260200101516001600160a01b0316146130e3576130728760018151811061306557613065613e1a565b6020026020010151612b7e565b8660018151811061308557613085613e1a565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516130da929190918252602082015260400190565b60405180910390a35b866002815181106130f6576130f6613e1a565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061313757613137613e1a565b6020026020010151600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061317857613178613e1a565b602002602001015160108190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60086040516131bb9190614183565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206011555050600b54600160a01b900460ff16979650505050505050565b60006132a8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133259092919063ffffffff16565b80519091501561151257808060200190518101906132c6919061421f565b6115125760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a6d565b6060613334848460008561333c565b949350505050565b60608247101561339d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a6d565b843b6133eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a6d565b600080866001600160a01b03168587604051613407919061423c565b60006040518083038185875af1925050503d8060008114613444576040519150601f19603f3d011682016040523d82523d6000602084013e613449565b606091505b5091509150613459828286613464565b979650505050505050565b60608315613473575081610bdf565b8251156134835782518084602001fd5b8160405162461bcd60e51b8152600401610a6d91906135de565b5080546000825590600052602060002090810190610c7d919061353f565b8280546134c790613ca3565b90600052602060002090601f0160209004810192826134e9576000855561352f565b82601f1061350257805160ff191683800117855561352f565b8280016001018555821561352f579182015b8281111561352f578251825591602001919060010190613514565b5061353b92915061353f565b5090565b5b8082111561353b5760008155600101613540565b6001600160a01b0381168114610c7d57600080fd5b60006020828403121561357b57600080fd5b8135610bdf81613554565b60005b838110156135a1578181015183820152602001613589565b838111156127cf5750506000910152565b600081518084526135ca816020860160208601613586565b601f01601f19169290920160200192915050565b602081526000610bdf60208301846135b2565b6000806040838503121561360457600080fd5b823561360f81613554565b946020939093013593505050565b8015158114610c7d57600080fd5b600080600080600060a0868803121561364357600080fd5b853561364e81613554565b94506020860135935060408601359250606086013561366c8161361d565b9150608086013561367c81613554565b809150509295509295909350565b60008060006060848603121561369f57600080fd5b83356136aa81613554565b925060208401356136ba81613554565b929592945050506040919091013590565b6000602082840312156136dd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613723576137236136e4565b604052919050565b600067ffffffffffffffff821115613745576137456136e4565b5060051b60200190565b600082601f83011261376057600080fd5b813560206137756137708361372b565b6136fa565b82815260059290921b8401810191818101908684111561379457600080fd5b8286015b848110156137af5780358352918301918301613798565b509695505050505050565b600082601f8301126137cb57600080fd5b813560206137db6137708361372b565b82815260059290921b840181019181810190868411156137fa57600080fd5b8286015b848110156137af57803561381181613554565b83529183019183016137fe565b60008060006060848603121561383357600080fd5b833567ffffffffffffffff8082111561384b57600080fd5b6138578783880161374f565b9450602086013591508082111561386d57600080fd5b6138798783880161374f565b9350604086013591508082111561388f57600080fd5b5061389c868287016137ba565b9150509250925092565b6000806000606084860312156138bb57600080fd5b83356138c681613554565b9250602084013567ffffffffffffffff808211156138e357600080fd5b6138ef878388016137ba565b9350604086013591508082111561390557600080fd5b5061389c8682870161374f565b803560ff8116811461392357600080fd5b919050565b600067ffffffffffffffff831115613942576139426136e4565b613955601f8401601f19166020016136fa565b905082815283838301111561396957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261399157600080fd5b610bdf83833560208501613928565b60008060008060008060008060006101208a8c0312156139bf57600080fd5b89356139ca81613554565b985060208a0135975060408a01356139e181613554565b965060608a01356139f181613554565b955060808a01359450613a0660a08b01613912565b935060c08a0135925060e08a013591506101008a013567ffffffffffffffff811115613a3157600080fd5b613a3d8c828d01613980565b9150509295985092959850929598565b60008060208385031215613a6057600080fd5b823567ffffffffffffffff80821115613a7857600080fd5b818501915085601f830112613a8c57600080fd5b813581811115613a9b57600080fd5b866020828501011115613aad57600080fd5b60209290920196919550909350505050565b60008083601f840112613ad157600080fd5b50813567ffffffffffffffff811115613ae957600080fd5b6020830191508360208260051b8501011115613b0457600080fd5b9250929050565b60008060008060008060008060008060a08b8d031215613b2a57600080fd5b8a3567ffffffffffffffff80821115613b4257600080fd5b613b4e8e838f01613abf565b909c509a5060208d0135915080821115613b6757600080fd5b613b738e838f01613abf565b909a50985060408d0135915080821115613b8c57600080fd5b613b988e838f01613abf565b909850965060608d0135915080821115613bb157600080fd5b613bbd8e838f01613abf565b909650945060808d0135915080821115613bd657600080fd5b50613be38d828e01613abf565b915080935050809150509295989b9194979a5092959850565b600080600080600080600060e0888a031215613c1757600080fd5b8735613c2281613554565b96506020880135613c3281613554565b95506040880135945060608801359350613c4e60808901613912565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613c7d57600080fd5b8235613c8881613554565b91506020830135613c9881613554565b809150509250929050565b600181811c90821680613cb757607f821691505b60208210811415613cd857634e487b7160e01b600052602260045260246000fd5b50919050565b600060808284031215613cf057600080fd5b6040516080810181811067ffffffffffffffff82111715613d1357613d136136e4565b6040528251613d218161361d565b81526020830151613d318161361d565b60208201526040830151613d448161361d565b60408201526060830151613d578161361d565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115613df857613df8613dcf565b500190565b600060208284031215613e0f57600080fd5b8151610bdf81613554565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015613e6057815187529582019590820190600101613e44565b509495945050505050565b600081518084526020808501945080840160005b83811015613e605781516001600160a01b031687529582019590820190600101613e7f565b60008186825b6002811015613ed25781516001600160a01b0316835260209283019290910190600101613eaa565b50505060a06040830152613ee960a0830186613e30565b8281036060840152613efb8186613e30565b905082810360808401526134598185613e6b565b6001600160a01b0384168152606060208201819052600090613f3390830185613e6b565b8281036040840152613f458185613e30565b9695505050505050565b600060208284031215613f6157600080fd5b5051919050565b60008551613f7a818460208a01613586565b6bffffffffffffffffffffffff19606096871b8116919093019081529390941b166014830152602882015260480192915050565b60008351613fc0818460208801613586565b9190910191825250602001919050565b85815260a060208201526000613fe960a08301876135b2565b60ff95909516604083015250606081019290925260809091015292915050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008261405c57634e487b7160e01b600052601260045260246000fd5b500490565b600061406f6137708461372b565b80848252602080830192508560051b85013681111561408d57600080fd5b855b818110156140dd57803567ffffffffffffffff8111156140af5760008081fd5b870136601f8201126140c15760008081fd5b6140cf368235868401613928565b86525093820193820161408f565b50919695505050505050565b60006140f76137708461372b565b80848252602080830192508560051b85013681111561411557600080fd5b855b818110156140dd57803567ffffffffffffffff8111156141375760008081fd5b61414336828a01613980565b865250938201938201614117565b600060001982141561416557614165613dcf565b5060010190565b60008282101561417e5761417e613dcf565b500390565b600080835481600182811c91508083168061419f57607f831692505b60208084108214156141bf57634e487b7160e01b86526022600452602486fd5b8180156141d357600181146141e457614211565b60ff19861689528489019650614211565b60008a81526020902060005b868110156142095781548b8201529085019083016141f0565b505084890196505b509498975050505050505050565b60006020828403121561423157600080fd5b8151610bdf8161361d565b6000825161424e818460208701613586565b919091019291505056fea2646970667358221220d238578f5cc11933648d20be9ee5e6703e39313ad340c2b000bb26ac3b3e034564736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.dbg.json b/artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.dbg.json new file mode 100644 index 000000000..50ebac313 --- /dev/null +++ b/artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json b/artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json new file mode 100644 index 000000000..7893121bd --- /dev/null +++ b/artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json @@ -0,0 +1,1530 @@ +{ + "_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": false, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + } + ], + "name": "BuyAndOrder", + "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": 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": "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" + } + ], + "name": "ProviderFees", + "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": 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": "PublishMarketFeesChanged", + "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": "serviceIndex", + "type": "uint256" + }, + { + "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": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "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": "serviceIndex", + "type": "uint256" + }, + { + "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": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "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": "uint256", + "name": "swapMarketFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "marketFeeAddress", + "type": "address" + } + ], + "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": [ + { + "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": "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": "deployer", + "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": "serviceIndex", + "type": "uint256" + }, + { + "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": "bytes", + "name": "providerData", + "type": "bytes" + } + ], + "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": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b61466c806200017f6000396000f3fe60806040526004361061027d5760003560e01c806379cc67901161014e578063ab62f0e1116100bb578063e487c2e811610077578063e487c2e8146108b1578063ec342ad0146108c6578063ee88ade1146108e2578063ef867ff414610902578063f887ea4014610922578063f94bb4211461094257005b8063ab62f0e1146107ee578063b2263a5d1461080e578063b3998be014610823578063d505accf14610843578063dd62ed3e14610863578063e086e5ec146108a957005b8063983b2d561161010a578063983b2d56146107155780639b4f44b614610735578063a457c2d714610755578063a9059cbb14610775578063aa271e1a14610795578063aa492ef9146107ce57005b806379cc67901461065e5780637ecebe001461067e57806382c03da5146106ab5780638b96412b146106c057806395d89b41146106e057806396fb3eaf146106f557005b8063355274ea116101ec57806342966c68116101a857806342966c681461059f5780634f189cb2146105bf57806357a3a31b146105d457806357ad5ff6146105f45780635d1ca6311461061457806370a082311461062857005b8063355274ea146104d95780633644e515146104ee578063392e53cd146105045780633950935114610523578063397b37431461054357806340c10f191461057f57005b806318636d3c1161023b57806318636d3c1461040357806323b872dd1461042357806325b00243146104435780633092afd51461046357806330adf81f14610483578063313ce567146104b757005b80627ffb781461027f57806301e88208146102b657806306fdde0314610306578063095ea7b314610328578063160a79251461035857806318160ddd146103e4575b005b34801561028b57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102c257600080fd5b506102ef6102d13660046137b5565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102ad565b34801561031257600080fd5b5061031b610962565b6040516102ad919061382a565b34801561033457600080fd5b5061034861034336600461383d565b6109f4565b60405190151581526020016102ad565b34801561036457600080fd5b506103c56103733660046137b5565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102ad565b3480156103f057600080fd5b506002545b6040519081526020016102ad565b34801561040f57600080fd5b5061027d61041e366004613a38565b610a0a565b34801561042f57600080fd5b5061034861043e366004613a89565b610b1b565b34801561044f57600080fd5b5061027d61045e3660046137b5565b610bc7565b34801561046f57600080fd5b5061027d61047e3660046137b5565b610c61565b34801561048f57600080fd5b506103f57f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104c357600080fd5b5060125b60405160ff90911681526020016102ad565b3480156104e557600080fd5b506009546103f5565b3480156104fa57600080fd5b506103f560105481565b34801561051057600080fd5b50600a54600160a01b900460ff16610348565b34801561052f57600080fd5b5061034861053e36600461383d565b610cf8565b34801561054f57600080fd5b50600d54600e54600f54604080516001600160a01b039485168152939092166020840152908201526060016102ad565b34801561058b57600080fd5b5061027d61059a36600461383d565b610d34565b3480156105ab57600080fd5b5061027d6105ba366004613aca565b610e05565b3480156105cb57600080fd5b5061027d610e0f565b3480156105e057600080fd5b5061027d6105ef3660046137b5565b610ef6565b34801561060057600080fd5b5061027d61060f366004613a89565b611038565b34801561062057600080fd5b5060026104c7565b34801561063457600080fd5b506103f56106433660046137b5565b6001600160a01b031660009081526020819052604090205490565b34801561066a57600080fd5b5061027d61067936600461383d565b61118c565b34801561068a57600080fd5b506103f56106993660046137b5565b60116020526000908152604090205481565b3480156106b757600080fd5b5061027d61120d565b3480156106cc57600080fd5b506103f56106db366004613b71565b611267565b3480156106ec57600080fd5b5061031b611428565b34801561070157600080fd5b506103486107103660046137b5565b611437565b34801561072157600080fd5b5061027d6107303660046137b5565b6114b2565b34801561074157600080fd5b5061027d610750366004613c46565b611549565b34801561076157600080fd5b5061034861077036600461383d565b611565565b34801561078157600080fd5b5061034861079036600461383d565b6115fe565b3480156107a157600080fd5b506103486107b03660046137b5565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107da57600080fd5b5061027d6107e93660046137b5565b61160b565b3480156107fa57600080fd5b5061027d610809366004613cf2565b6116a2565b34801561081a57600080fd5b506103f56117d3565b34801561082f57600080fd5b5061034861083e366004613dae565b6117e9565b34801561084f57600080fd5b5061027d61085e366004613e9e565b611923565b34801561086f57600080fd5b506103f561087e366004613f0c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027d611b2a565b3480156108bd57600080fd5b50610299611b6a565b3480156108d257600080fd5b506103f5670de0b6b3a764000081565b3480156108ee57600080fd5b5061027d6108fd366004613f3a565b611bff565b34801561090e57600080fd5b5061029961091d366004613aca565b611fdd565b34801561092e57600080fd5b50601254610299906001600160a01b031681565b34801561094e57600080fd5b5061027d61095d366004613fea565b612007565b60606007805461097190614034565b80601f016020809104026020016040519081016040528092919081815260200182805461099d90614034565b80156109ea5780601f106109bf576101008083540402835291602001916109ea565b820191906000526020600020905b8154815290600101906020018083116109cd57829003601f168201915b5050505050905090565b6000610a0133848461212a565b50600192915050565b604051631d746d8360e01b8152306004820152670de0b6b3a764000060248201819052336044830152906001600160a01b03831690631d746d8390606401600060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b50503360009081526020819052604090205483925090501015610ae05760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064015b60405180910390fd5b610b16836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b610100015161224e565b505050565b6000610b2884848461267e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bad5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad7565b610bba853385840361212a565b60019150505b9392505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c35919061406f565b60200151610c555760405162461bcd60e51b8152600401610ad7906140f3565b610c5e8161284c565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf919061406f565b60200151610cef5760405162461bcd60e51b8152600401610ad7906140f3565b610c5e816128b9565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a01918590610d2f90869061413e565b61212a565b3360009081526005602052604090205460ff16610d935760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610ad7565b600954610da982610da360025490565b90612919565b1115610df75760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610ad7565b610e018282612925565b5050565b610c5e3382612a04565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190614156565b6001600160a01b0316336001600160a01b031614610edc5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610ad7565b610ee4612b52565b600c80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff1680610f875750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f82919061406f565b602001515b610fe75760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610ad7565b610ff081612c01565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110a55760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610ad7565b6001600160a01b03831661110c5760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610ad7565b600d80546001600160a01b038581166001600160a01b03199283168117909355600e8054918616919092168117909155600f839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b6000611198833361087e565b9050818110156111f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610ad7565b611203833384840361212a565b610b168383612a04565b600b546001600160a01b03163314610edc5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610ad7565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af11580156112b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d6919061406f565b602001516112f65760405162461bcd60e51b8152600401610ad7906140f3565b308360038151811061130a5761130a614173565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b815291169063824493759061134b90879087908790600401614189565b6020604051808303816000875af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e919061421d565b90506000826004815181106113a5576113a5614173565b602002602001015111156113bc576113bc84612c23565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106113f1576113f1614173565b60200260200101516040516114199291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461097190614034565b600b5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a8919061406f565b6020015192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611520919061406f565b602001516115405760405162461bcd60e51b8152600401610ad7906140f3565b610c5e81612c23565b61155a89898989898989898961224e565b505050505050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115e75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad7565b6115f4338585840361212a565b5060019392505050565b6000610a0133848461267e565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611679919061406f565b602001516116995760405162461bcd60e51b8152600401610ad7906140f3565b610c5e81612d1d565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611710919061406f565b602001516117305760405162461bcd60e51b8152600401610ad7906140f3565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061179c90849087908790600401614236565b600060405180830381600087803b1580156117b657600080fd5b505af11580156117ca573d6000803e3d6000fd5b50505050505050565b6117e66064670de0b6b3a764000061426c565b81565b600a54600090600160a01b900460ff16156118605760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610ad7565b61191461186d8b8d61428e565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061190f92508991508a9050614315565b612e2b565b9b9a5050505050505050505050565b438410156119665760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610ad7565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876119b98361437c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611a3292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a9d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611ad35750886001600160a01b0316816001600160a01b0316145b611b1f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610ad7565b61155a89898961212a565b611b32611b6a565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610c5e573d6000803e3d6000fd5b600c546000906001600160a01b0316611bef57600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea9190614156565b905090565b50600c546001600160a01b031690565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d91611c3a9160040190815260200190565b61018060405180830381865afa158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c9190614397565b5050505050505050935050925050306001600160a01b0316826001600160a01b031614611cfb5760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b6064820152608401610ad7565b8251602084015160405163c99733a760e01b81526004810191909152670de0b6b3a7640000602482015260009182916001600160a01b039091169063c99733a790604401608060405180830381865afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d809190614454565b5050915091508460400151821115611dea5760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610ad7565b6000670de0b6b3a7640000866060015183611e05919061448a565b611e0f919061426c565b9050611e1b818461413e565b9250611e326001600160a01b03851633308661332a565b8551611e49906001600160a01b0386169085613395565b8551602087015160405163412dae6b60e11b81526004810191909152670de0b6b3a76400006024820152604481018590526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505030600090815260208190526040902054670de0b6b3a7640000925090501015611f2a5760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d20466978656452617465006044820152606401610ad7565b611f3d3033670de0b6b3a764000061267e565b611f738760000151886020015189604001518a606001518b608001518c60a001518d60c001518e60e001518f610100015161224e565b8015611f93576080860151611f93906001600160a01b0386169083613447565b60408051338152602081018590529081018290527fe89458a7527f4bf466ab18794ab8b1ca208b478483a1a87bcf0d976d421b4aff9060600160405180910390a150505050505050565b60068181548110611fed57600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612075919061406f565b602001516120955760405162461bcd60e51b8152600401610ad7906140f3565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b1580156120fd57600080fd5b505af1158015612111573d6000803e3d6000fd5b5050505080156121245761212484612c23565b50505050565b6001600160a01b03831661218c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad7565b6001600160a01b0382166121ed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33600090815260208190526040812054670de0b6b3a764000091908211156122c65760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b6064820152608401610ad7565b600d5460408051338152602081018590529081018c90524260608201524360808201526001600160a01b03918216918d16907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000600f541180156123415750600e546001600160a01b031615155b80156123575750600d546001600160a01b031615155b1561248257600f54600e5461237b916001600160a01b03909116903390309061332a565b600f54612389906064613477565b600d54600f549192506123bf916001600160a01b03909116906123ac9084613483565b600e546001600160a01b03169190613447565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906124049085613483565b60405190815260200160405180910390a3801561248257600a54600e54612438916001600160a01b03918216911683613447565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b60006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081858c8c8c6040516020016124d694939291906144a9565b604051602081830303815290604052805190602001206040516020016124fd9291906144ef565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8c1692840192909252606083018a9052608083018990529092509060019060a0016020604051602081039080840390855afa158015612568573d6000803e3d6000fd5b5050506020604051035190508b6001600160a01b0316816001600160a01b0316146125cc5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610ad7565b8a6001600160a01b03168c6001600160a01b03167f144fc6ed7d0a617ba44a01131b1f724d0370297a3640b6201f343e081ada64468c898d8d8d604051612617959493929190614511565b60405180910390a360008a11801561263757506001600160a01b038b1615155b801561264b57506001600160a01b038c1615155b15612665576126656001600160a01b038c16338e8d61332a565b61266e85610e05565b5050505050505050505050505050565b6001600160a01b0383166126e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad7565b6001600160a01b0382166127445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad7565b6001600160a01b038316600090815260208190526040902054818110156127bc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad7565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906127f390849061413e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161283f91815260200190565b60405180910390a3612124565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906128ad9042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906128ad9042904390918252602082015260400190565b6000610bc0828461413e565b6001600160a01b03821661297b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad7565b806002600082825461298d919061413e565b90915550506001600160a01b038216600090815260208190526040812080548392906129ba90849061413e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612a645760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad7565b6001600160a01b03821660009081526020819052604090205481811015612ad85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad7565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612b0790849061454a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612bb85760006005600060068481548110612b7857612b78614173565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612bb08161437c565b915050612b55565b50612bc5600660006136d9565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff1615612c8d5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610ad7565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591016128ad565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612d975760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610ad7565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016128ad565b60008084600081518110612e4157612e41614173565b60200260200101519050600085600181518110612e6057612e60614173565b6020026020010151905060006001600160a01b0316826001600160a01b03161415612ee25760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610ad7565b6001600160a01b038116612f5e5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610ad7565b84600081518110612f7157612f71614173565b602002602001015160001415612fd55760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610ad7565b84600081518110612fe857612fe8614173565b60200260200101516009819055508760008151811061300957613009614173565b6020026020010151600790805190602001906130269291906136f7565b508760018151811061303a5761303a614173565b6020026020010151600890805190602001906130579291906136f7565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061308857613088614173565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516130f29088906000906130e5576130e5614173565b6020026020010151612c23565b60006001600160a01b03168760018151811061311057613110614173565b60200260200101516001600160a01b0316146131ba576131498760018151811061313c5761313c614173565b6020026020010151612c01565b8660018151811061315c5761315c614173565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516131b1929190918252602082015260400190565b60405180910390a35b866002815181106131cd576131cd614173565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061320e5761320e614173565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061324f5761324f614173565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516132929190614561565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526121249085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261348f565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156133e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340a919061421d565b613414919061413e565b6040516001600160a01b03851660248201526044810182905290915061212490859063095ea7b360e01b9060640161335e565b6040516001600160a01b038316602482015260448101829052610b1690849063a9059cbb60e01b9060640161335e565b6000610bc0828461426c565b6000610bc0828461454a565b60006134e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135619092919063ffffffff16565b805190915015610b16578080602001905181019061350291906145fd565b610b165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ad7565b60606135708484600085613578565b949350505050565b6060824710156135d95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ad7565b843b6136275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad7565b600080866001600160a01b03168587604051613643919061461a565b60006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b50915091506136958282866136a0565b979650505050505050565b606083156136af575081610bc0565b8251156136bf5782518084602001fd5b8160405162461bcd60e51b8152600401610ad7919061382a565b5080546000825590600052602060002090810190610c5e919061377b565b82805461370390614034565b90600052602060002090601f016020900481019282613725576000855561376b565b82601f1061373e57805160ff191683800117855561376b565b8280016001018555821561376b579182015b8281111561376b578251825591602001919060010190613750565b5061377792915061377b565b5090565b5b80821115613777576000815560010161377c565b6001600160a01b0381168114610c5e57600080fd5b80356137b081613790565b919050565b6000602082840312156137c757600080fd5b8135610bc081613790565b60005b838110156137ed5781810151838201526020016137d5565b838111156121245750506000910152565b600081518084526138168160208601602086016137d2565b601f01601f19169290920160200192915050565b602081526000610bc060208301846137fe565b6000806040838503121561385057600080fd5b823561385b81613790565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156138a2576138a2613869565b60405290565b60405160a081016001600160401b03811182821017156138a2576138a2613869565b604051601f8201601f191681016001600160401b03811182821017156138f2576138f2613869565b604052919050565b803560ff811681146137b057600080fd5b60006001600160401b0383111561392457613924613869565b613937601f8401601f19166020016138ca565b905082815283838301111561394b57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261397357600080fd5b610bc08383356020850161390b565b6000610120828403121561399557600080fd5b61399d61387f565b90506139a8826137a5565b8152602082013560208201526139c0604083016137a5565b60408201526139d1606083016137a5565b6060820152608082013560808201526139ec60a083016138fa565b60a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b03811115613a2057600080fd5b613a2c85828601613962565b82840152505092915050565b60008060408385031215613a4b57600080fd5b82356001600160401b03811115613a6157600080fd5b613a6d85828601613982565b9250506020830135613a7e81613790565b809150509250929050565b600080600060608486031215613a9e57600080fd5b8335613aa981613790565b92506020840135613ab981613790565b929592945050506040919091013590565b600060208284031215613adc57600080fd5b5035919050565b60006001600160401b03821115613afc57613afc613869565b5060051b60200190565b600082601f830112613b1757600080fd5b81356020613b2c613b2783613ae3565b6138ca565b82815260059290921b84018101918181019086841115613b4b57600080fd5b8286015b84811015613b665780358352918301918301613b4f565b509695505050505050565b600080600060608486031215613b8657600080fd5b8335613b9181613790565b92506020848101356001600160401b0380821115613bae57600080fd5b818701915087601f830112613bc257600080fd5b8135613bd0613b2782613ae3565b81815260059190911b8301840190848101908a831115613bef57600080fd5b938501935b82851015613c16578435613c0781613790565b82529385019390850190613bf4565b965050506040870135925080831115613c2e57600080fd5b5050613c3c86828701613b06565b9150509250925092565b60008060008060008060008060006101208a8c031215613c6557600080fd5b8935613c7081613790565b985060208a0135975060408a0135613c8781613790565b965060608a0135613c9781613790565b955060808a01359450613cac60a08b016138fa565b935060c08a0135925060e08a013591506101008a01356001600160401b03811115613cd657600080fd5b613ce28c828d01613962565b9150509295985092959850929598565b60008060208385031215613d0557600080fd5b82356001600160401b0380821115613d1c57600080fd5b818501915085601f830112613d3057600080fd5b813581811115613d3f57600080fd5b866020828501011115613d5157600080fd5b60209290920196919550909350505050565b60008083601f840112613d7557600080fd5b5081356001600160401b03811115613d8c57600080fd5b6020830191508360208260051b8501011115613da757600080fd5b9250929050565b60008060008060008060008060008060a08b8d031215613dcd57600080fd5b8a356001600160401b0380821115613de457600080fd5b613df08e838f01613d63565b909c509a5060208d0135915080821115613e0957600080fd5b613e158e838f01613d63565b909a50985060408d0135915080821115613e2e57600080fd5b613e3a8e838f01613d63565b909850965060608d0135915080821115613e5357600080fd5b613e5f8e838f01613d63565b909650945060808d0135915080821115613e7857600080fd5b50613e858d828e01613d63565b915080935050809150509295989b9194979a5092959850565b600080600080600080600060e0888a031215613eb957600080fd5b8735613ec481613790565b96506020880135613ed481613790565b95506040880135945060608801359350613ef0608089016138fa565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613f1f57600080fd5b8235613f2a81613790565b91506020830135613a7e81613790565b60008082840360c0811215613f4e57600080fd5b83356001600160401b03811115613f6457600080fd5b613f7086828701613982565b93505060a0601f1982011215613f8557600080fd5b50613f8e6138a8565b6020840135613f9c81613790565b8082525060408401356020820152606084013560408201526080840135606082015260a0840135613fcc81613790565b6080820152919491935090915050565b8015158114610c5e57600080fd5b6000806000806080858703121561400057600080fd5b843561400b81613790565b93506020850135925060408501359150606085013561402981613fdc565b939692955090935050565b600181811c9082168061404857607f821691505b6020821081141561406957634e487b7160e01b600052602260045260246000fd5b50919050565b60006080828403121561408157600080fd5b604051608081018181106001600160401b03821117156140a3576140a3613869565b60405282516140b181613fdc565b815260208301516140c181613fdc565b602082015260408301516140d481613fdc565b604082015260608301516140e781613fdc565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561415157614151614128565b500190565b60006020828403121561416857600080fd5b8151610bc081613790565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156141d75785518516835294830194918301916001016141b9565b5050858103604087015286518082529082019350915080860160005b8381101561420f578151855293820193908201906001016141f3565b509298975050505050505050565b60006020828403121561422f57600080fd5b5051919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008261428957634e487b7160e01b600052601260045260246000fd5b500490565b600061429c613b2784613ae3565b80848252602080830192508560051b8501368111156142ba57600080fd5b855b818110156143095780356001600160401b038111156142db5760008081fd5b870136601f8201126142ed5760008081fd5b6142fb36823586840161390b565b8652509382019382016142bc565b50919695505050505050565b6000614323613b2784613ae3565b80848252602080830192508560051b85013681111561434157600080fd5b855b818110156143095780356001600160401b038111156143625760008081fd5b61436e36828a01613962565b865250938201938201614343565b600060001982141561439057614390614128565b5060010190565b6000806000806000806000806000806000806101808d8f0312156143ba57600080fd5b8c516143c581613790565b60208e0151909c506143d681613790565b60408e015160608f0151919c509a506143ee81613790565b8099505060808d0151975060a08d0151965060c08d015161440e81613fdc565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d015161444081613fdc565b809150509295989b509295989b509295989b565b6000806000806080858703121561446a57600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008160001904831182151516156144a4576144a4614128565b500290565b600085516144bb818460208a016137d2565b6bffffffffffffffffffffffff19606096871b8116919093019081529390941b166014830152602882015260480192915050565b600083516145018184602088016137d2565b9190910191825250602001919050565b85815260a06020820152600061452a60a08301876137fe565b60ff95909516604083015250606081019290925260809091015292915050565b60008282101561455c5761455c614128565b500390565b600080835481600182811c91508083168061457d57607f831692505b602080841082141561459d57634e487b7160e01b86526022600452602486fd5b8180156145b157600181146145c2576145ef565b60ff198616895284890196506145ef565b60008a81526020902060005b868110156145e75781548b8201529085019083016145ce565b505084890196505b509498975050505050505050565b60006020828403121561460f57600080fd5b8151610bc081613fdc565b6000825161462c8184602087016137d2565b919091019291505056fea26469706673582212209041cd5099503a2e31e599b01c0c938b713c90fa811d0e03aacc28d1251e8ce164736f6c634300080a0033", + "deployedBytecode": "0x60806040526004361061027d5760003560e01c806379cc67901161014e578063ab62f0e1116100bb578063e487c2e811610077578063e487c2e8146108b1578063ec342ad0146108c6578063ee88ade1146108e2578063ef867ff414610902578063f887ea4014610922578063f94bb4211461094257005b8063ab62f0e1146107ee578063b2263a5d1461080e578063b3998be014610823578063d505accf14610843578063dd62ed3e14610863578063e086e5ec146108a957005b8063983b2d561161010a578063983b2d56146107155780639b4f44b614610735578063a457c2d714610755578063a9059cbb14610775578063aa271e1a14610795578063aa492ef9146107ce57005b806379cc67901461065e5780637ecebe001461067e57806382c03da5146106ab5780638b96412b146106c057806395d89b41146106e057806396fb3eaf146106f557005b8063355274ea116101ec57806342966c68116101a857806342966c681461059f5780634f189cb2146105bf57806357a3a31b146105d457806357ad5ff6146105f45780635d1ca6311461061457806370a082311461062857005b8063355274ea146104d95780633644e515146104ee578063392e53cd146105045780633950935114610523578063397b37431461054357806340c10f191461057f57005b806318636d3c1161023b57806318636d3c1461040357806323b872dd1461042357806325b00243146104435780633092afd51461046357806330adf81f14610483578063313ce567146104b757005b80627ffb781461027f57806301e88208146102b657806306fdde0314610306578063095ea7b314610328578063160a79251461035857806318160ddd146103e4575b005b34801561028b57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102c257600080fd5b506102ef6102d13660046137b5565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152016102ad565b34801561031257600080fd5b5061031b610962565b6040516102ad919061382a565b34801561033457600080fd5b5061034861034336600461383d565b6109f4565b60405190151581526020016102ad565b34801561036457600080fd5b506103c56103733660046137b5565b6040805180820190915260008082526020820152506001600160a01b031660009081526005602090815260409182902082518084019093525460ff808216151584526101009091041615159082015290565b60408051825115158152602092830151151592810192909252016102ad565b3480156103f057600080fd5b506002545b6040519081526020016102ad565b34801561040f57600080fd5b5061027d61041e366004613a38565b610a0a565b34801561042f57600080fd5b5061034861043e366004613a89565b610b1b565b34801561044f57600080fd5b5061027d61045e3660046137b5565b610bc7565b34801561046f57600080fd5b5061027d61047e3660046137b5565b610c61565b34801561048f57600080fd5b506103f57f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b3480156104c357600080fd5b5060125b60405160ff90911681526020016102ad565b3480156104e557600080fd5b506009546103f5565b3480156104fa57600080fd5b506103f560105481565b34801561051057600080fd5b50600a54600160a01b900460ff16610348565b34801561052f57600080fd5b5061034861053e36600461383d565b610cf8565b34801561054f57600080fd5b50600d54600e54600f54604080516001600160a01b039485168152939092166020840152908201526060016102ad565b34801561058b57600080fd5b5061027d61059a36600461383d565b610d34565b3480156105ab57600080fd5b5061027d6105ba366004613aca565b610e05565b3480156105cb57600080fd5b5061027d610e0f565b3480156105e057600080fd5b5061027d6105ef3660046137b5565b610ef6565b34801561060057600080fd5b5061027d61060f366004613a89565b611038565b34801561062057600080fd5b5060026104c7565b34801561063457600080fd5b506103f56106433660046137b5565b6001600160a01b031660009081526020819052604090205490565b34801561066a57600080fd5b5061027d61067936600461383d565b61118c565b34801561068a57600080fd5b506103f56106993660046137b5565b60116020526000908152604090205481565b3480156106b757600080fd5b5061027d61120d565b3480156106cc57600080fd5b506103f56106db366004613b71565b611267565b3480156106ec57600080fd5b5061031b611428565b34801561070157600080fd5b506103486107103660046137b5565b611437565b34801561072157600080fd5b5061027d6107303660046137b5565b6114b2565b34801561074157600080fd5b5061027d610750366004613c46565b611549565b34801561076157600080fd5b5061034861077036600461383d565b611565565b34801561078157600080fd5b5061034861079036600461383d565b6115fe565b3480156107a157600080fd5b506103486107b03660046137b5565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107da57600080fd5b5061027d6107e93660046137b5565b61160b565b3480156107fa57600080fd5b5061027d610809366004613cf2565b6116a2565b34801561081a57600080fd5b506103f56117d3565b34801561082f57600080fd5b5061034861083e366004613dae565b6117e9565b34801561084f57600080fd5b5061027d61085e366004613e9e565b611923565b34801561086f57600080fd5b506103f561087e366004613f0c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027d611b2a565b3480156108bd57600080fd5b50610299611b6a565b3480156108d257600080fd5b506103f5670de0b6b3a764000081565b3480156108ee57600080fd5b5061027d6108fd366004613f3a565b611bff565b34801561090e57600080fd5b5061029961091d366004613aca565b611fdd565b34801561092e57600080fd5b50601254610299906001600160a01b031681565b34801561094e57600080fd5b5061027d61095d366004613fea565b612007565b60606007805461097190614034565b80601f016020809104026020016040519081016040528092919081815260200182805461099d90614034565b80156109ea5780601f106109bf576101008083540402835291602001916109ea565b820191906000526020600020905b8154815290600101906020018083116109cd57829003601f168201915b5050505050905090565b6000610a0133848461212a565b50600192915050565b604051631d746d8360e01b8152306004820152670de0b6b3a764000060248201819052336044830152906001600160a01b03831690631d746d8390606401600060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b50503360009081526020819052604090205483925090501015610ae05760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064015b60405180910390fd5b610b16836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b610100015161224e565b505050565b6000610b2884848461267e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bad5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad7565b610bba853385840361212a565b60019150505b9392505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c35919061406f565b60200151610c555760405162461bcd60e51b8152600401610ad7906140f3565b610c5e8161284c565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf919061406f565b60200151610cef5760405162461bcd60e51b8152600401610ad7906140f3565b610c5e816128b9565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a01918590610d2f90869061413e565b61212a565b3360009081526005602052604090205460ff16610d935760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610ad7565b600954610da982610da360025490565b90612919565b1115610df75760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610ad7565b610e018282612925565b5050565b610c5e3382612a04565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190614156565b6001600160a01b0316336001600160a01b031614610edc5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610ad7565b610ee4612b52565b600c80546001600160a01b0319169055565b33600090815260056020526040902054610100900460ff1680610f875750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015610f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f82919061406f565b602001515b610fe75760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b6064820152608401610ad7565b610ff081612c01565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110a55760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610ad7565b6001600160a01b03831661110c5760405162461bcd60e51b815260206004820152602860248201527f496e76616c6964205f7075626c6973684d61726b657446656541646472657373604482015267206164647265737360c01b6064820152608401610ad7565b600d80546001600160a01b038581166001600160a01b03199283168117909355600e8054918616919092168117909155600f839055604080513381526020810193909352820152606081018290527fe0b85b6f04fa914cf57f6401c5672a83a32b1c388d194c3d78e17f2897d46f439060800160405180910390a1505050565b6000611198833361087e565b9050818110156111f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610ad7565b611203833384840361212a565b610b168383612a04565b600b546001600160a01b03163314610edc5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610ad7565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a7925906024016080604051808303816000875af11580156112b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d6919061406f565b602001516112f65760405162461bcd60e51b8152600401610ad7906140f3565b308360038151811061130a5761130a614173565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b815291169063824493759061134b90879087908790600401614189565b6020604051808303816000875af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e919061421d565b90506000826004815181106113a5576113a5614173565b602002602001015111156113bc576113bc84612c23565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106113f1576113f1614173565b60200260200101516040516114199291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461097190614034565b600b5460405163160a792560e01b81526001600160a01b038381166004830152600092169063160a7925906024016080604051808303816000875af1158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a8919061406f565b6020015192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611520919061406f565b602001516115405760405162461bcd60e51b8152600401610ad7906140f3565b610c5e81612c23565b61155a89898989898989898961224e565b505050505050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115e75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad7565b6115f4338585840361212a565b5060019392505050565b6000610a0133848461267e565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015611655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611679919061406f565b602001516116995760405162461bcd60e51b8152600401610ad7906140f3565b610c5e81612d1d565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af11580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611710919061406f565b602001516117305760405162461bcd60e51b8152600401610ad7906140f3565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061179c90849087908790600401614236565b600060405180830381600087803b1580156117b657600080fd5b505af11580156117ca573d6000803e3d6000fd5b50505050505050565b6117e66064670de0b6b3a764000061426c565b81565b600a54600090600160a01b900460ff16156118605760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610ad7565b61191461186d8b8d61428e565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061190f92508991508a9050614315565b612e2b565b9b9a5050505050505050505050565b438410156119665760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610ad7565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876119b98361437c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611a3292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611a9d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611ad35750886001600160a01b0316816001600160a01b0316145b611b1f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610ad7565b61155a89898961212a565b611b32611b6a565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610c5e573d6000803e3d6000fd5b600c546000906001600160a01b0316611bef57600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e90602401602060405180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea9190614156565b905090565b50600c546001600160a01b031690565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d91611c3a9160040190815260200190565b61018060405180830381865afa158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c9190614397565b5050505050505050935050925050306001600160a01b0316826001600160a01b031614611cfb5760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b6064820152608401610ad7565b8251602084015160405163c99733a760e01b81526004810191909152670de0b6b3a7640000602482015260009182916001600160a01b039091169063c99733a790604401608060405180830381865afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d809190614454565b5050915091508460400151821115611dea5760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610ad7565b6000670de0b6b3a7640000866060015183611e05919061448a565b611e0f919061426c565b9050611e1b818461413e565b9250611e326001600160a01b03851633308661332a565b8551611e49906001600160a01b0386169085613395565b8551602087015160405163412dae6b60e11b81526004810191909152670de0b6b3a76400006024820152604481018590526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b505030600090815260208190526040902054670de0b6b3a7640000925090501015611f2a5760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d20466978656452617465006044820152606401610ad7565b611f3d3033670de0b6b3a764000061267e565b611f738760000151886020015189604001518a606001518b608001518c60a001518d60c001518e60e001518f610100015161224e565b8015611f93576080860151611f93906001600160a01b0386169083613447565b60408051338152602081018590529081018290527fe89458a7527f4bf466ab18794ab8b1ca208b478483a1a87bcf0d976d421b4aff9060600160405180910390a150505050505050565b60068181548110611fed57600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a7925906024016080604051808303816000875af1158015612051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612075919061406f565b602001516120955760405162461bcd60e51b8152600401610ad7906140f3565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b1580156120fd57600080fd5b505af1158015612111573d6000803e3d6000fd5b5050505080156121245761212484612c23565b50505050565b6001600160a01b03831661218c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad7565b6001600160a01b0382166121ed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33600090815260208190526040812054670de0b6b3a764000091908211156122c65760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b6064820152608401610ad7565b600d5460408051338152602081018590529081018c90524260608201524360808201526001600160a01b03918216918d16907fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9060a00160405180910390a36000600f541180156123415750600e546001600160a01b031615155b80156123575750600d546001600160a01b031615155b1561248257600f54600e5461237b916001600160a01b03909116903390309061332a565b600f54612389906064613477565b600d54600f549192506123bf916001600160a01b03909116906123ac9084613483565b600e546001600160a01b03169190613447565b600e54600d54600f546001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b4906124049085613483565b60405190815260200160405180910390a3801561248257600a54600e54612438916001600160a01b03918216911683613447565b600e54600a546040518381526001600160a01b0392831692909116907ff666b31c81334b6085802ba4149907fa724689d43bc31df6de1a51291ddc55b49060200160405180910390a35b60006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081858c8c8c6040516020016124d694939291906144a9565b604051602081830303815290604052805190602001206040516020016124fd9291906144ef565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8c1692840192909252606083018a9052608083018990529092509060019060a0016020604051602081039080840390855afa158015612568573d6000803e3d6000fd5b5050506020604051035190508b6001600160a01b0316816001600160a01b0316146125cc5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070726f76696465722066656560601b6044820152606401610ad7565b8a6001600160a01b03168c6001600160a01b03167f144fc6ed7d0a617ba44a01131b1f724d0370297a3640b6201f343e081ada64468c898d8d8d604051612617959493929190614511565b60405180910390a360008a11801561263757506001600160a01b038b1615155b801561264b57506001600160a01b038c1615155b15612665576126656001600160a01b038c16338e8d61332a565b61266e85610e05565b5050505050505050505050505050565b6001600160a01b0383166126e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad7565b6001600160a01b0382166127445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad7565b6001600160a01b038316600090815260208190526040902054818110156127bc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad7565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906127f390849061413e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161283f91815260200190565b60405180910390a3612124565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906128ad9042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906128ad9042904390918252602082015260400190565b6000610bc0828461413e565b6001600160a01b03821661297b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad7565b806002600082825461298d919061413e565b90915550506001600160a01b038216600090815260208190526040812080548392906129ba90849061413e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612a645760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad7565b6001600160a01b03821660009081526020819052604090205481811015612ad85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad7565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612b0790849061454a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612bb85760006005600060068481548110612b7857612b78614173565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612bb08161437c565b915050612b55565b50612bc5600660006136d9565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff1615612c8d5760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610ad7565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591016128ad565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612d975760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610ad7565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016128ad565b60008084600081518110612e4157612e41614173565b60200260200101519050600085600181518110612e6057612e60614173565b6020026020010151905060006001600160a01b0316826001600160a01b03161415612ee25760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610ad7565b6001600160a01b038116612f5e5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610ad7565b84600081518110612f7157612f71614173565b602002602001015160001415612fd55760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610ad7565b84600081518110612fe857612fe8614173565b60200260200101516009819055508760008151811061300957613009614173565b6020026020010151600790805190602001906130269291906136f7565b508760018151811061303a5761303a614173565b6020026020010151600890805190602001906130579291906136f7565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061308857613088614173565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516130f29088906000906130e5576130e5614173565b6020026020010151612c23565b60006001600160a01b03168760018151811061311057613110614173565b60200260200101516001600160a01b0316146131ba576131498760018151811061313c5761313c614173565b6020026020010151612c01565b8660018151811061315c5761315c614173565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516131b1929190918252602082015260400190565b60405180910390a35b866002815181106131cd576131cd614173565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061320e5761320e614173565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061324f5761324f614173565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516132929190614561565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526121249085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261348f565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156133e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340a919061421d565b613414919061413e565b6040516001600160a01b03851660248201526044810182905290915061212490859063095ea7b360e01b9060640161335e565b6040516001600160a01b038316602482015260448101829052610b1690849063a9059cbb60e01b9060640161335e565b6000610bc0828461426c565b6000610bc0828461454a565b60006134e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135619092919063ffffffff16565b805190915015610b16578080602001905181019061350291906145fd565b610b165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ad7565b60606135708484600085613578565b949350505050565b6060824710156135d95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ad7565b843b6136275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad7565b600080866001600160a01b03168587604051613643919061461a565b60006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b50915091506136958282866136a0565b979650505050505050565b606083156136af575081610bc0565b8251156136bf5782518084602001fd5b8160405162461bcd60e51b8152600401610ad7919061382a565b5080546000825590600052602060002090810190610c5e919061377b565b82805461370390614034565b90600052602060002090601f016020900481019282613725576000855561376b565b82601f1061373e57805160ff191683800117855561376b565b8280016001018555821561376b579182015b8281111561376b578251825591602001919060010190613750565b5061377792915061377b565b5090565b5b80821115613777576000815560010161377c565b6001600160a01b0381168114610c5e57600080fd5b80356137b081613790565b919050565b6000602082840312156137c757600080fd5b8135610bc081613790565b60005b838110156137ed5781810151838201526020016137d5565b838111156121245750506000910152565b600081518084526138168160208601602086016137d2565b601f01601f19169290920160200192915050565b602081526000610bc060208301846137fe565b6000806040838503121561385057600080fd5b823561385b81613790565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156138a2576138a2613869565b60405290565b60405160a081016001600160401b03811182821017156138a2576138a2613869565b604051601f8201601f191681016001600160401b03811182821017156138f2576138f2613869565b604052919050565b803560ff811681146137b057600080fd5b60006001600160401b0383111561392457613924613869565b613937601f8401601f19166020016138ca565b905082815283838301111561394b57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261397357600080fd5b610bc08383356020850161390b565b6000610120828403121561399557600080fd5b61399d61387f565b90506139a8826137a5565b8152602082013560208201526139c0604083016137a5565b60408201526139d1606083016137a5565b6060820152608082013560808201526139ec60a083016138fa565b60a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b03811115613a2057600080fd5b613a2c85828601613962565b82840152505092915050565b60008060408385031215613a4b57600080fd5b82356001600160401b03811115613a6157600080fd5b613a6d85828601613982565b9250506020830135613a7e81613790565b809150509250929050565b600080600060608486031215613a9e57600080fd5b8335613aa981613790565b92506020840135613ab981613790565b929592945050506040919091013590565b600060208284031215613adc57600080fd5b5035919050565b60006001600160401b03821115613afc57613afc613869565b5060051b60200190565b600082601f830112613b1757600080fd5b81356020613b2c613b2783613ae3565b6138ca565b82815260059290921b84018101918181019086841115613b4b57600080fd5b8286015b84811015613b665780358352918301918301613b4f565b509695505050505050565b600080600060608486031215613b8657600080fd5b8335613b9181613790565b92506020848101356001600160401b0380821115613bae57600080fd5b818701915087601f830112613bc257600080fd5b8135613bd0613b2782613ae3565b81815260059190911b8301840190848101908a831115613bef57600080fd5b938501935b82851015613c16578435613c0781613790565b82529385019390850190613bf4565b965050506040870135925080831115613c2e57600080fd5b5050613c3c86828701613b06565b9150509250925092565b60008060008060008060008060006101208a8c031215613c6557600080fd5b8935613c7081613790565b985060208a0135975060408a0135613c8781613790565b965060608a0135613c9781613790565b955060808a01359450613cac60a08b016138fa565b935060c08a0135925060e08a013591506101008a01356001600160401b03811115613cd657600080fd5b613ce28c828d01613962565b9150509295985092959850929598565b60008060208385031215613d0557600080fd5b82356001600160401b0380821115613d1c57600080fd5b818501915085601f830112613d3057600080fd5b813581811115613d3f57600080fd5b866020828501011115613d5157600080fd5b60209290920196919550909350505050565b60008083601f840112613d7557600080fd5b5081356001600160401b03811115613d8c57600080fd5b6020830191508360208260051b8501011115613da757600080fd5b9250929050565b60008060008060008060008060008060a08b8d031215613dcd57600080fd5b8a356001600160401b0380821115613de457600080fd5b613df08e838f01613d63565b909c509a5060208d0135915080821115613e0957600080fd5b613e158e838f01613d63565b909a50985060408d0135915080821115613e2e57600080fd5b613e3a8e838f01613d63565b909850965060608d0135915080821115613e5357600080fd5b613e5f8e838f01613d63565b909650945060808d0135915080821115613e7857600080fd5b50613e858d828e01613d63565b915080935050809150509295989b9194979a5092959850565b600080600080600080600060e0888a031215613eb957600080fd5b8735613ec481613790565b96506020880135613ed481613790565b95506040880135945060608801359350613ef0608089016138fa565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613f1f57600080fd5b8235613f2a81613790565b91506020830135613a7e81613790565b60008082840360c0811215613f4e57600080fd5b83356001600160401b03811115613f6457600080fd5b613f7086828701613982565b93505060a0601f1982011215613f8557600080fd5b50613f8e6138a8565b6020840135613f9c81613790565b8082525060408401356020820152606084013560408201526080840135606082015260a0840135613fcc81613790565b6080820152919491935090915050565b8015158114610c5e57600080fd5b6000806000806080858703121561400057600080fd5b843561400b81613790565b93506020850135925060408501359150606085013561402981613fdc565b939692955090935050565b600181811c9082168061404857607f821691505b6020821081141561406957634e487b7160e01b600052602260045260246000fd5b50919050565b60006080828403121561408157600080fd5b604051608081018181106001600160401b03821117156140a3576140a3613869565b60405282516140b181613fdc565b815260208301516140c181613fdc565b602082015260408301516140d481613fdc565b604082015260608301516140e781613fdc565b60608201529392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561415157614151614128565b500190565b60006020828403121561416857600080fd5b8151610bc081613790565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b818110156141d75785518516835294830194918301916001016141b9565b5050858103604087015286518082529082019350915080860160005b8381101561420f578151855293820193908201906001016141f3565b509298975050505050505050565b60006020828403121561422f57600080fd5b5051919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008261428957634e487b7160e01b600052601260045260246000fd5b500490565b600061429c613b2784613ae3565b80848252602080830192508560051b8501368111156142ba57600080fd5b855b818110156143095780356001600160401b038111156142db5760008081fd5b870136601f8201126142ed5760008081fd5b6142fb36823586840161390b565b8652509382019382016142bc565b50919695505050505050565b6000614323613b2784613ae3565b80848252602080830192508560051b85013681111561434157600080fd5b855b818110156143095780356001600160401b038111156143625760008081fd5b61436e36828a01613962565b865250938201938201614343565b600060001982141561439057614390614128565b5060010190565b6000806000806000806000806000806000806101808d8f0312156143ba57600080fd5b8c516143c581613790565b60208e0151909c506143d681613790565b60408e015160608f0151919c509a506143ee81613790565b8099505060808d0151975060a08d0151965060c08d015161440e81613fdc565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d015161444081613fdc565b809150509295989b509295989b509295989b565b6000806000806080858703121561446a57600080fd5b505082516020840151604085015160609095015191969095509092509050565b60008160001904831182151516156144a4576144a4614128565b500290565b600085516144bb818460208a016137d2565b6bffffffffffffffffffffffff19606096871b8116919093019081529390941b166014830152602882015260480192915050565b600083516145018184602088016137d2565b9190910191825250602001919050565b85815260a06020820152600061452a60a08301876137fe565b60ff95909516604083015250606081019290925260809091015292915050565b60008282101561455c5761455c614128565b500390565b600080835481600182811c91508083168061457d57607f831692505b602080841082141561459d57634e487b7160e01b86526022600452602486fd5b8180156145b157600181146145c2576145ef565b60ff198616895284890196506145ef565b60008a81526020902060005b868110156145e75781548b8201529085019083016145ce565b505084890196505b509498975050505050505050565b60006020828403121561460f57600080fd5b8151610bc081613fdc565b6000825161462c8184602087016137d2565b919091019291505056fea26469706673582212209041cd5099503a2e31e599b01c0c938b713c90fa811d0e03aacc28d1251e8ce164736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/templates/ERC721Template.sol/ERC721Template.dbg.json b/artifacts/templates/ERC721Template.sol/ERC721Template.dbg.json new file mode 100644 index 000000000..50ebac313 --- /dev/null +++ b/artifacts/templates/ERC721Template.sol/ERC721Template.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/templates/ERC721Template.sol/ERC721Template.json b/artifacts/templates/ERC721Template.sol/ERC721Template.json new file mode 100644 index 000000000..94bc875be --- /dev/null +++ b/artifacts/templates/ERC721Template.sol/ERC721Template.json @@ -0,0 +1,1534 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721Template", + "sourceName": "contracts/templates/ERC721Template.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": "AddedManager", + "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": "AddedTo725StoreList", + "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": "AddedToCreateERC20List", + "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": "AddedToMetadataList", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "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": "contractAddress", + "type": "address" + } + ], + "name": "ContractCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "value", + "type": "bytes" + } + ], + "name": "DataChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_operation", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "Executed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "createdBy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "state", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "decryptorUrl", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "flags", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "metaDataHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "MetadataCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "updatedBy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "state", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "MetadataState", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "updatedBy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "state", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "decryptorUrl", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "flags", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "metaDataHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "MetadataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "validator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "metaDataHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "MetadataValidated", + "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": "RemovedFrom725StoreList", + "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": "RemovedFromCreateERC20List", + "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": "RemovedFromMetadataList", + "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": "RemovedManager", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newTokenAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "templateAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "cap", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "creator", + "type": "address" + } + ], + "name": "TokenCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "updatedBy", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "tokenURI", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "TokenURIUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_managerAddress", + "type": "address" + } + ], + "name": "addManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "addTo725StoreList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "addToCreateERC20List", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "addToMetadataList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "auth", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cleanPermissions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_templateIndex", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "strings", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytess", + "type": "bytes[]" + } + ], + "name": "createERC20", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_operation", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "executeCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_key", + "type": "bytes32" + } + ], + "name": "getData", + "outputs": [ + { + "internalType": "bytes", + "name": "_value", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getMetaData", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + }, + { + "internalType": "string", + "name": "", + "type": "string" + }, + { + "internalType": "uint8", + "name": "", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getPermissions", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "manager", + "type": "bool" + }, + { + "internalType": "bool", + "name": "deployERC20", + "type": "bool" + }, + { + "internalType": "bool", + "name": "updateMetadata", + "type": "bool" + }, + { + "internalType": "bool", + "name": "store", + "type": "bool" + } + ], + "internalType": "struct ERC721RolesAddress.Roles", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokensList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasMetaData", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "address", + "name": "tokenFactory", + "type": "address" + }, + { + "internalType": "address", + "name": "additionalERC20Deployer", + "type": "address" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "datatoken", + "type": "address" + } + ], + "name": "isDeployed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "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": [], + "name": "metaDataDecryptorAddress", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "metaDataDecryptorUrl", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "metaDataState", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "removeFrom725StoreList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "removeFromCreateERC20List", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_allowedAddress", + "type": "address" + } + ], + "name": "removeFromMetadataList", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_managerAddress", + "type": "address" + } + ], + "name": "removeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_baseURI", + "type": "string" + } + ], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_key", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_value", + "type": "bytes" + } + ], + "name": "setDataERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_metaDataState", + "type": "uint8" + }, + { + "internalType": "string", + "name": "_metaDataDecryptorUrl", + "type": "string" + }, + { + "internalType": "string", + "name": "_metaDataDecryptorAddress", + "type": "string" + }, + { + "internalType": "bytes", + "name": "flags", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "_metaDataHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "validatorAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct ERC721Template.metaDataProof[]", + "name": "_metadataProofs", + "type": "tuple[]" + } + ], + "name": "setMetaData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "_metaDataState", + "type": "uint8" + } + ], + "name": "setMetaDataState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_key", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_value", + "type": "bytes" + } + ], + "name": "setNewData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "tokenURI", + "type": "string" + } + ], + "name": "setTokenURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ssContract", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252600881526754656d706c61746560c01b60208083019182528351808501909452600e84526d15195b5c1b185d1954de5b589bdb60921b908401528151919291620000689160009162000136565b5080516200007e90600190602084019062000136565b50620000959150632260147f60e11b9050620000b2565b620000a7632bd57b7360e01b620000b2565b6001600c5562000219565b6001600160e01b03198082161415620001115760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600a60205260409020805460ff19166001179055565b8280546200014490620001dc565b90600052602060002090601f016020900481019282620001685760008555620001b3565b82601f106200018357805160ff1916838001178555620001b3565b82800160010185558215620001b3579182015b82811115620001b357825182559160200191906001019062000196565b50620001c1929150620001c5565b5090565b5b80821115620001c15760008155600101620001c6565b600181811c90821680620001f157607f821691505b602082108114156200021357634e487b7160e01b600052602260045260246000fd5b50919050565b6143cc80620002296000396000f3fe60806040526004361061025d5760003560e01c806354f6127f11610143578063a22cb465116100bb578063d2786ba411610077578063d2786ba41461082d578063d8053ad314610852578063e086e5ec14610871578063e38d7cad14610879578063e985e9c514610899578063fe1ec880146108e257005b8063a22cb46514610780578063ac18de43146107a0578063b0c41ead146107c0578063c55f8126146107e0578063c87b56dd146107f3578063ccd7d4761461081357005b806370a082311161010a57806370a082311461069157806370c166d7146106bf57806382cf129d146106df57806390184b02146106f457806395d89b411461072d57806396fb3eaf1461074257005b806354f6127f146105ef57806355f804b31461060f5780635d1ca6311461062f5780636352211e1461065157806367530a611461067157005b806323b872dd116101d6578063431053ac1161019d578063431053ac14610538578063466bca0214610558578063467c97f51461057a5780634a63740a1461059a5780634b2ee5e9146105ba5780634f189cb2146105da57005b806323b872dd146104a0578063273e06b3146104c05780632d06177a146104e0578063392e53cd1461050057806342842e0e1461051857005b80630e57c7e8116102255780630e57c7e81461032357806310c558bf14610343578063160a792514610363578063162094c41461044057806319c186e5146104605780631aa3adf91461048057005b806301ffc9a71461025f57806306fdde0314610294578063081812fc146102b6578063095ea7b3146102ee5780630e05662e1461030e575b005b34801561026b57600080fd5b5061027f61027a366004613545565b610902565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610942565b60405161028b91906135c1565b3480156102c257600080fd5b506102d66102d13660046135d4565b6109d4565b6040516001600160a01b03909116815260200161028b565b3480156102fa57600080fd5b5061025d610309366004613602565b610a6e565b34801561031a57600080fd5b506102a9610b84565b34801561032f57600080fd5b5061025d61033e366004613676565b610c12565b34801561034f57600080fd5b5061025d61035e3660046136c1565b610c87565b34801561036f57600080fd5b5061040561037e3660046136c1565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600860209081526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b60405161028b919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b34801561044c57600080fd5b5061025d61045b3660046137bb565b610d5a565b34801561046c57600080fd5b5061025d61047b3660046136c1565b610de9565b34801561048c57600080fd5b5061025d61049b3660046138de565b610eb2565b3480156104ac57600080fd5b5061025d6104bb3660046139e5565b6112f0565b3480156104cc57600080fd5b5061025d6104db3660046136c1565b6113c2565b3480156104ec57600080fd5b5061025d6104fb3660046136c1565b6114fb565b34801561050c57600080fd5b50600f5460ff1661027f565b34801561052457600080fd5b5061025d6105333660046139e5565b61153e565b34801561054457600080fd5b5061025d6105533660046136c1565b6115e4565b34801561056457600080fd5b5061056d611719565b60405161028b9190613a26565b34801561058657600080fd5b5061025d610595366004613a73565b61177a565b3480156105a657600080fd5b5061025d6105b53660046136c1565b611805565b3480156105c657600080fd5b506014546102d6906001600160a01b031681565b3480156105e657600080fd5b5061025d6118ca565b3480156105fb57600080fd5b506102a961060a3660046135d4565b61190e565b34801561061b57600080fd5b5061025d61062a366004613a8e565b6119b0565b34801561063b57600080fd5b5060015b60405160ff909116815260200161028b565b34801561065d57600080fd5b506102d661066c3660046135d4565b611a01565b34801561067d57600080fd5b5061025d61068c366004613676565b611a78565b34801561069d57600080fd5b506106b16106ac3660046136c1565b611ae8565b60405190815260200161028b565b3480156106cb57600080fd5b5061027f6106da366004613ac2565b611b6f565b3480156106eb57600080fd5b506102a9611c8c565b34801561070057600080fd5b5061027f61070f3660046136c1565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561073957600080fd5b506102a9611c99565b34801561074e57600080fd5b5061027f61075d3660046136c1565b6001600160a01b0316600090815260086020526040902054610100900460ff1690565b34801561078c57600080fd5b5061025d61079b366004613b90565b611ca8565b3480156107ac57600080fd5b5061025d6107bb3660046136c1565b611d66565b3480156107cc57600080fd5b506102d66107db3660046135d4565b611da9565b61025d6107ee366004613bce565b611dd3565b3480156107ff57600080fd5b506102a961080e3660046135d4565b611e1b565b34801561081f57600080fd5b5060125461063f9060ff1681565b34801561083957600080fd5b50610842611f79565b60405161028b9493929190613c37565b34801561085e57600080fd5b50600f5461027f90610100900460ff1681565b61025d6120c9565b34801561088557600080fd5b506102d6610894366004613cbc565b61210b565b3480156108a557600080fd5b5061027f6108b4366004613d8b565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156108ee57600080fd5b5061025d6108fd3660046136c1565b6122db565b60006301ffc9a760e01b6001600160e01b03198316148061093c57506001600160e01b031982166000908152600a602052604090205460ff165b92915050565b6060600d805461095190613db9565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90613db9565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610a525760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610a7982611a01565b9050806001600160a01b0316836001600160a01b03161415610ae75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a49565b336001600160a01b0382161480610b035750610b0381336108b4565b610b755760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a49565b610b7f838361240b565b505050565b60118054610b9190613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90613db9565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081565b3360009081526015602052604090205460ff16610c7c5760405162461bcd60e51b815260206004820152602260248201527f45524337323154656d706c6174653a204e4f5420455243323020436f6e74726160448201526118dd60f21b6064820152608401610a49565b610b7f838383612479565b3360009081526008602052604090205460ff161515600114610cbb5760405162461bcd60e51b8152600401610a4990613df4565b6001600160a01b038116600081815260086020526040808220805462ff000019166201000017815560098054600181018255935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa490610d4e9042904390918252602082015260400190565b60405180910390a35050565b610d646001611a01565b6001600160a01b0316336001600160a01b031614610d945760405162461bcd60e51b8152600401610a4990613e2b565b610d9e82826124d2565b336001600160a01b03167f6de6cd3982065cbd31e789e3109106f4d76d1c8a46e85262045cf947fb3fd4ed82844243604051610ddd9493929190613e62565b60405180910390a25050565b3360009081526008602052604090205460ff161515600114610e1d5760405162461bcd60e51b8152600401610a4990613df4565b6001600160a01b038116600081815260086020526040808220805463ff0000001916630100000017815560098054600181018255935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee90610d4e9042904390918252602082015260400190565b3360009081526008602052604090205462010000900460ff16610ee75760405162461bcd60e51b8152600401610a4990613e91565b6012805460ff191660ff8d16179055610f0260108b8b613408565b50610f0f60118989613408565b50600f54610100900460ff16610f8657336001600160a01b03167f5463569dcc320958360074a9ab27e809e8a6942c394fb151d139b5f7b4ecb1bd8c8c8c8a8a8a8a8a4243604051610f6a9a99989796959493929190613efb565b60405180910390a2600f805461ff001916610100179055610fd8565b60125460405133917fe5c4cf86b1815151e6f453e1e133d4454ae3b0b07145db39f2e0178685deac8491610fcf9160ff16908e908e908c908c908c908c908c9042904390613efb565b60405180910390a25b60328151111561101c5760405162461bcd60e51b815260206004820152600f60248201526e546f6f204d616e792050726f6f667360881b6044820152606401610a49565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260005b82518110156112e15760006001600160a01b031683828151811061107957611079613f63565b6020026020010151600001516001600160a01b0316146111fb57600082856040516020016110a8929190613f79565b60405160208183030381529060405280519060200120905060006001828685815181106110d7576110d7613f63565b6020026020010151602001518786815181106110f5576110f5613f63565b60200260200101516040015188878151811061111357611113613f63565b60200260200101516060015160405160008152602001604052604051611155949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015611177573d6000803e3d6000fd5b50505060206040510351905084838151811061119557611195613f63565b6020026020010151600001516001600160a01b0316816001600160a01b0316146111f85760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b210383937b7b31039b4b3b732b960611b6044820152606401610a49565b50505b82818151811061120d5761120d613f63565b6020026020010151600001516001600160a01b03167f2819d8badf5cff2c9220b8ee99dacc14d67058e343d7f0c2c444d198507fe9418585848151811061125657611256613f63565b60200260200101516020015186858151811061127457611274613f63565b60200260200101516040015187868151811061129257611292613f63565b6020026020010151606001516040516112c7949392919093845260ff9290921660208401526040830152606082015260800190565b60405180910390a2806112d981613fb1565b915050611053565b50505050505050505050505050565b806001146113105760405162461bcd60e51b8152600401610a4990613fcc565b61137a611375601380548060200260200160405190810160405280929190818152602001828054801561136c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161134e575b50505050505190565b61256c565b6113826125fd565b61138d8383836126ae565b611396826126ef565b506001600160a01b03166000908152600860205260409020805463ffffff001916630101010017905550565b3360009081526008602052604090205460ff161515600114806114135750336001600160a01b0382161480156114135750336000908152600860205260409020546301000000900460ff1615156001145b1561147b576001600160a01b03811660008181526008602052604090819020805463ff000000191681559051909133917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf390610d4e9042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610a49565b50565b6115056001611a01565b6001600160a01b0316336001600160a01b0316146115355760405162461bcd60e51b8152600401610a4990613e2b565b6114f8816126ef565b8060011461155e5760405162461bcd60e51b8152600401610a4990613fcc565b6115c1611375601380548060200260200160405190810160405280929190818152602001828054801561136c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161134e5750505050505190565b6115c96125fd565b61138d83838360405180602001604052806000815250612780565b3360009081526008602052604090205460ff161515600114806116345750336001600160a01b03821614801561163457503360009081526008602052604090205462010000900460ff1615156001145b1561169b576001600160a01b03811660008181526008602052604090819020805462ff0000191681559051909133917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b90610d4e9042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610a49565b606060138054806020026020016040519081016040528092919081815260200182805480156109ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611753575050505050905090565b3360009081526008602052604090205462010000900460ff166117af5760405162461bcd60e51b8152600401610a4990613e91565b6012805460ff191660ff831690811790915560408051918252426020830152439082015233907fa8336411cc72db0e5bdc4dff989eeb35879bafaceffb59b54b37645c3395adb99060600160405180910390a250565b3360009081526008602052604090205460ff1615156001146118395760405162461bcd60e51b8152600401610a4990613df4565b6001600160a01b038116600081815260086020526040808220805461ff00191661010017815560098054600181018255935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f90610d4e9042904390918252602082015260400190565b6118d46001611a01565b6001600160a01b0316336001600160a01b0316146119045760405162461bcd60e51b8152600401610a4990613e2b565b61190c6125fd565b565b6000818152600b6020526040902080546060919061192b90613db9565b80601f016020809104026020016040519081016040528092919081815260200182805461195790613db9565b80156119a45780601f10611979576101008083540402835291602001916119a4565b820191906000526020600020905b81548152906001019060200180831161198757829003601f168201915b50505050509050919050565b6119ba6001611a01565b6001600160a01b0316336001600160a01b0316146119ea5760405162461bcd60e51b8152600401610a4990613e2b565b80516119fd90600290602084019061348c565b5050565b6000818152600360205260408120546001600160a01b03168061093c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a49565b336000908152600860205260409020546301000000900460ff16610c7c5760405162461bcd60e51b815260206004820152602160248201527f45524337323154656d706c6174653a204e4f542053544f5245205550444154456044820152602960f91b6064820152608401610a49565b60006001600160a01b038216611b535760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a49565b506001600160a01b031660009081526004602052604090205490565b600f5460009060ff1615611be05760405162461bcd60e51b815260206004820152603260248201527f45524337323154656d706c6174653a20746f6b656e20696e7374616e636520616044820152711b1c9958591e481a5b9a5d1a585b1a5e995960721b6064820152608401610a49565b6000611c5a8a8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152508b92508991506127b89050565b9050808015611c7157506001600160a01b03841615155b15611c7f57611c7f84611839565b9998505050505050505050565b60108054610b9190613db9565b6060600e805461095190613db9565b6001600160a01b038216331415611d015760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a49565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610d4e565b611d706001611a01565b6001600160a01b0316336001600160a01b031614611da05760405162461bcd60e51b8152600401610a4990613e2b565b6114f8816128f8565b60098181548110611db957600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff161515600114611e075760405162461bcd60e51b8152600401610a4990613df4565b611e148585858585612958565b5050505050565b6000818152600360205260409020546060906001600160a01b0316611e9a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a49565b60008281526007602052604081208054611eb390613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054611edf90613db9565b8015611f2c5780601f10611f0157610100808354040283529160200191611f2c565b820191906000526020600020905b815481529060010190602001808311611f0f57829003601f168201915b505050505090506000611f3d612b81565b825190915015611f72578082604051602001611f5a929190614018565b60405160208183030381529060405292505050919050565b5092915050565b60608060008060106011601260009054906101000a900460ff16600f60019054906101000a900460ff16838054611faf90613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054611fdb90613db9565b80156120285780601f10611ffd57610100808354040283529160200191612028565b820191906000526020600020905b81548152906001019060200180831161200b57829003601f168201915b5050505050935082805461203b90613db9565b80601f016020809104026020016040519081016040528092919081815260200182805461206790613db9565b80156120b45780601f10612089576101008083540402835291602001916120b4565b820191906000526020600020905b81548152906001019060200180831161209757829003601f168201915b50505050509250935093509350935090919293565b6120d36001611a01565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156114f8573d6000803e3d6000fd5b60006002600c5414156121605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a49565b6002600c5533600090815260086020526040902054610100900460ff166121d85760405162461bcd60e51b815260206004820152602660248201527f45524337323154656d706c6174653a204e4f542045524332304445504c4f5945604482015265525f524f4c4560d01b6064820152608401610a49565b601254604051630557fcfb60e41b815260009161010090046001600160a01b03169063557fcfb09061221e908e908e908e908e908e908e908e908e908e90600401614168565b6020604051808303816000875af115801561223d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122619190614219565b6001600160a01b0381166000818152601560205260408120805460ff191660019081179091556013805491820181559091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b03191690911790559150506001600c559998505050505050505050565b3360009081526008602052604090205460ff1615156001148061232b5750336001600160a01b03821614801561232b57503360009081526008602052604090205460ff6101009091041615156001145b15612391576001600160a01b03811660008181526008602052604090819020805461ff00191681559051909133917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899790610d4e9042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610a49565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061244082611a01565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000838152600b60205260409020612492908383613408565b50827fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b283836040516124c5929190614236565b60405180910390a2505050565b6000828152600360205260409020546001600160a01b031661254d5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a49565b60008281526007602090815260409091208251610b7f9284019061348c565b60005b818110156119fd576013818154811061258a5761258a613f63565b6000918252602082200154604080516382c03da560e01b815290516001600160a01b03909216926382c03da59260048084019382900301818387803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b5050505080806125f590613fb1565b91505061256f565b60005b600954811015612665576000600860006009848154811061262357612623613f63565b60009182526020808320909101546001600160a01b031683528201929092526040019020805463ffffffff19169055508061265d81613fb1565b915050612600565b5061267260096000613500565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6126b83382612b90565b6126d45760405162461bcd60e51b8152600401610a499061424a565b610b7f83838360405180602001604052806000815250612780565b6001600160a01b038116600081815260086020526040808220805460ff19166001908117825560098054918201815590935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917faf8fc8b6726138c96881c895390a08e9d91a94c288f06281e7f9821c49c7155b90610d4e9042904390918252602082015260400190565b61278a3383612b90565b6127a65760405162461bcd60e51b8152600401610a499061424a565b6127b284848484612c87565b50505050565b60006001600160a01b0386166128275760405162461bcd60e51b815260206004820152602e60248201527f45524337323154656d706c6174653a3a20496e76616c6964206d696e7465722c60448201526d20207a65726f206164647265737360901b6064820152608401610a49565b845161283a90600d90602088019061348c565b50835161284e90600e90602087019061348c565b5060128054610100600160a81b0319166101006001600160a01b0386160217905560408051602081019182905260009081905261288d9160029161348c565b50600f805461ffff191660019081179091556128aa908790612cba565b6128b3866126ef565b6001600160a01b0386166000908152600860205260409020805463ffffff00191663010101001781556128e76001846124d2565b5050600f5460ff1695945050505050565b6001600160a01b03811660008181526008602052604090819020805460ff191681559051909133917fb572db0e6da4924b771ed1712b980d48b5992b9a1c27aede55fbb3318c48996a90610d4e9042904390918252602082015260400190565b82846001600160a01b0316867f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b88585604051612995929190614236565b60405180910390a460006109c45a6129ad919061429b565b9050856129fd576129f7858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612cd4915050565b50612b79565b6003861415612a46576129f78484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612cec92505050565b6002861415612b3a576000612a9d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a9892506020915087905061429b565b612d88565b90506000612aec85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612ae79150602090508861429b565b612de6565b90506000612afb878484612ef3565b6040519091506001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a2505050612b79565b60405162461bcd60e51b815260206004820152601460248201527357726f6e67206f7065726174696f6e207479706560601b6044820152606401610a49565b505050505050565b60606002805461095190613db9565b6000818152600360205260408120546001600160a01b0316612c095760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a49565b6000612c1483611a01565b9050806001600160a01b0316846001600160a01b03161480612c4f5750836001600160a01b0316612c44846109d4565b6001600160a01b0316145b80612c7f57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b612c92848484612ff5565b612c9e84848484613195565b6127b25760405162461bcd60e51b8152600401610a49906142b2565b6119fd828260405180602001604052806000815250613293565b6000806000845160208601878987f195945050505050565b600081516020830184f090506001600160a01b038116612d4e5760405162461bcd60e51b815260206004820152601960248201527f436f756c64206e6f74206465706c6f7920636f6e7472616374000000000000006044820152606401610a49565b6040516001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a292915050565b6000612d95826020614304565b83511015612ddd5760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610a49565b50016020015190565b606081612df481601f614304565b1015612e335760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a49565b612e3d8284614304565b84511015612e815760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a49565b606082158015612ea05760405191506000825260208201604052612eea565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612ed9578051835260209283019201612ec1565b5050858452601f01601f1916604052505b50949350505050565b60008084471015612f465760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610a49565b8251612f945760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610a49565b8383516020850187f590506001600160a01b038116612c7f5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610a49565b826001600160a01b031661300882611a01565b6001600160a01b0316146130705760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a49565b6001600160a01b0382166130d25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a49565b6130dd60008261240b565b6001600160a01b038316600090815260046020526040812080546001929061310690849061429b565b90915550506001600160a01b0382166000908152600460205260408120805460019290613134908490614304565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b1561328857604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906131d990339089908890889060040161431c565b6020604051808303816000875af1925050508015613214575060408051601f3d908101601f1916820190925261321191810190614359565b60015b61326e573d808015613242576040519150601f19603f3d011682016040523d82523d6000602084013e613247565b606091505b5080516132665760405162461bcd60e51b8152600401610a49906142b2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612c7f565b506001949350505050565b61329d83836132c6565b6132aa6000848484613195565b610b7f5760405162461bcd60e51b8152600401610a49906142b2565b6001600160a01b03821661331c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a49565b6000818152600360205260409020546001600160a01b0316156133815760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a49565b6001600160a01b03821660009081526004602052604081208054600192906133aa908490614304565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461341490613db9565b90600052602060002090601f016020900481019282613436576000855561347c565b82601f1061344f5782800160ff1982351617855561347c565b8280016001018555821561347c579182015b8281111561347c578235825591602001919060010190613461565b5061348892915061351a565b5090565b82805461349890613db9565b90600052602060002090601f0160209004810192826134ba576000855561347c565b82601f106134d357805160ff191683800117855561347c565b8280016001018555821561347c579182015b8281111561347c5782518255916020019190600101906134e5565b50805460008255906000526020600020908101906114f891905b5b80821115613488576000815560010161351b565b6001600160e01b0319811681146114f857600080fd5b60006020828403121561355757600080fd5b81356135628161352f565b9392505050565b60005b8381101561358457818101518382015260200161356c565b838111156127b25750506000910152565b600081518084526135ad816020860160208601613569565b601f01601f19169290920160200192915050565b6020815260006135626020830184613595565b6000602082840312156135e657600080fd5b5035919050565b6001600160a01b03811681146114f857600080fd5b6000806040838503121561361557600080fd5b8235613620816135ed565b946020939093013593505050565b60008083601f84011261364057600080fd5b5081356001600160401b0381111561365757600080fd5b60208301915083602082850101111561366f57600080fd5b9250929050565b60008060006040848603121561368b57600080fd5b8335925060208401356001600160401b038111156136a857600080fd5b6136b48682870161362e565b9497909650939450505050565b6000602082840312156136d357600080fd5b8135613562816135ed565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715613716576137166136de565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613744576137446136de565b604052919050565b600082601f83011261375d57600080fd5b81356001600160401b03811115613776576137766136de565b613789601f8201601f191660200161371c565b81815284602083860101111561379e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156137ce57600080fd5b8235915060208301356001600160401b038111156137eb57600080fd5b6137f78582860161374c565b9150509250929050565b803560ff8116811461381257600080fd5b919050565b600082601f83011261382857600080fd5b813560206001600160401b03821115613843576138436136de565b613851818360051b0161371c565b82815260079290921b8401810191818101908684111561387057600080fd5b8286015b848110156138d3576080818903121561388d5760008081fd5b6138956136f4565b81356138a0816135ed565b81526138ad828601613801565b818601526040828101359082015260608083013590820152835291830191608001613874565b509695505050505050565b600080600080600080600080600080600060e08c8e0312156138ff57600080fd5b6139088c613801565b9a506001600160401b038060208e0135111561392357600080fd5b6139338e60208f01358f0161362e565b909b50995060408d013581101561394957600080fd5b6139598e60408f01358f0161362e565b909950975060608d013581101561396f57600080fd5b61397f8e60608f01358f0161362e565b909750955060808d013581101561399557600080fd5b6139a58e60808f01358f0161362e565b909550935060a08d0135925060c08d01358110156139c257600080fd5b506139d38d60c08e01358e01613817565b90509295989b509295989b9093969950565b6000806000606084860312156139fa57600080fd5b8335613a05816135ed565b92506020840135613a15816135ed565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015613a675783516001600160a01b031683529284019291840191600101613a42565b50909695505050505050565b600060208284031215613a8557600080fd5b61356282613801565b600060208284031215613aa057600080fd5b81356001600160401b03811115613ab657600080fd5b612c7f8482850161374c565b60008060008060008060008060c0898b031215613ade57600080fd5b8835613ae9816135ed565b975060208901356001600160401b0380821115613b0557600080fd5b613b118c838d0161362e565b909950975060408b0135915080821115613b2a57600080fd5b613b368c838d0161362e565b909750955060608b01359150613b4b826135ed565b90935060808a013590613b5d826135ed565b90925060a08a01359080821115613b7357600080fd5b50613b808b828c0161374c565b9150509295985092959890939650565b60008060408385031215613ba357600080fd5b8235613bae816135ed565b915060208301358015158114613bc357600080fd5b809150509250929050565b600080600080600060808688031215613be657600080fd5b853594506020860135613bf8816135ed565b93506040860135925060608601356001600160401b03811115613c1a57600080fd5b613c268882890161362e565b969995985093965092949392505050565b608081526000613c4a6080830187613595565b8281036020840152613c5c8187613595565b60ff959095166040840152505090151560609091015292915050565b60008083601f840112613c8a57600080fd5b5081356001600160401b03811115613ca157600080fd5b6020830191508360208260051b850101111561366f57600080fd5b600080600080600080600080600060a08a8c031215613cda57600080fd5b8935985060208a01356001600160401b0380821115613cf857600080fd5b613d048d838e01613c78565b909a50985060408c0135915080821115613d1d57600080fd5b613d298d838e01613c78565b909850965060608c0135915080821115613d4257600080fd5b613d4e8d838e01613c78565b909650945060808c0135915080821115613d6757600080fd5b50613d748c828d01613c78565b915080935050809150509295985092959850929598565b60008060408385031215613d9e57600080fd5b8235613da9816135ed565b91506020830135613bc3816135ed565b600181811c90821680613dcd57607f821691505b60208210811415613dee57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e4147455200604082015260600190565b6020808252601c908201527f45524337323154656d706c6174653a206e6f74204e46544f776e657200000000604082015260600190565b608081526000613e756080830187613595565b6020830195909552506040810192909252606090910152919050565b60208082526021908201527f45524337323154656d706c6174653a204e4f54204d455441444154415f524f4c6040820152604560f81b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60ff8b16815260e060208201526000613f1860e083018b8d613ed2565b8281036040840152613f2b818a8c613ed2565b90508281036060840152613f4081888a613ed2565b6080840196909652505060a081019290925260c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008351613f8b818460208801613569565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613fc557613fc5613f9b565b5060010190565b6020808252602c908201527f45524337323154656d706c6174653a2043616e6e6f74207472616e736665722060408201526b1d1a1a5cc81d1bdad95b925960a21b606082015260800190565b6000835161402a818460208801613569565b83519083019061403e818360208801613569565b01949350505050565b6000808335601e1984360301811261405e57600080fd5b83016020810192503590506001600160401b0381111561407d57600080fd5b80360383131561366f57600080fd5b8183526000602080850194508260005b858110156140ca5781356140af816135ed565b6001600160a01b03168752958201959082019060010161409c565b509495945050505050565b81835260006001600160fb1b038311156140ee57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b8781101561415b57828403895261413c8288614047565b614147868284613ed2565b9a87019a9550505090840190600101614125565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156141c95785840360bf190183526141a7828f614047565b6141b2868284613ed2565b95505050602092830192919091019060010161418c565b50505082810360408401526141df81898b61408c565b905082810360608401526141f48187896140d5565b9050828103608084015261420981858761410b565b9c9b505050505050505050505050565b60006020828403121561422b57600080fd5b8151613562816135ed565b602081526000612c7f602083018486613ed2565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000828210156142ad576142ad613f9b565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000821982111561431757614317613f9b565b500190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061434f90830184613595565b9695505050505050565b60006020828403121561436b57600080fd5b81516135628161352f56fe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212206d0bc2d2cba31628d81338472b8edc29d561d59a0f52686f6ad9fb78da838a2264736f6c634300080a0033", + "deployedBytecode": "0x60806040526004361061025d5760003560e01c806354f6127f11610143578063a22cb465116100bb578063d2786ba411610077578063d2786ba41461082d578063d8053ad314610852578063e086e5ec14610871578063e38d7cad14610879578063e985e9c514610899578063fe1ec880146108e257005b8063a22cb46514610780578063ac18de43146107a0578063b0c41ead146107c0578063c55f8126146107e0578063c87b56dd146107f3578063ccd7d4761461081357005b806370a082311161010a57806370a082311461069157806370c166d7146106bf57806382cf129d146106df57806390184b02146106f457806395d89b411461072d57806396fb3eaf1461074257005b806354f6127f146105ef57806355f804b31461060f5780635d1ca6311461062f5780636352211e1461065157806367530a611461067157005b806323b872dd116101d6578063431053ac1161019d578063431053ac14610538578063466bca0214610558578063467c97f51461057a5780634a63740a1461059a5780634b2ee5e9146105ba5780634f189cb2146105da57005b806323b872dd146104a0578063273e06b3146104c05780632d06177a146104e0578063392e53cd1461050057806342842e0e1461051857005b80630e57c7e8116102255780630e57c7e81461032357806310c558bf14610343578063160a792514610363578063162094c41461044057806319c186e5146104605780631aa3adf91461048057005b806301ffc9a71461025f57806306fdde0314610294578063081812fc146102b6578063095ea7b3146102ee5780630e05662e1461030e575b005b34801561026b57600080fd5b5061027f61027a366004613545565b610902565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610942565b60405161028b91906135c1565b3480156102c257600080fd5b506102d66102d13660046135d4565b6109d4565b6040516001600160a01b03909116815260200161028b565b3480156102fa57600080fd5b5061025d610309366004613602565b610a6e565b34801561031a57600080fd5b506102a9610b84565b34801561032f57600080fd5b5061025d61033e366004613676565b610c12565b34801561034f57600080fd5b5061025d61035e3660046136c1565b610c87565b34801561036f57600080fd5b5061040561037e3660046136c1565b604080516080810182526000808252602082018190529181018290526060810191909152506001600160a01b03166000908152600860209081526040918290208251608081018452905460ff808216151583526101008204811615159383019390935262010000810483161515938201939093526301000000909204161515606082015290565b60405161028b919081511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b34801561044c57600080fd5b5061025d61045b3660046137bb565b610d5a565b34801561046c57600080fd5b5061025d61047b3660046136c1565b610de9565b34801561048c57600080fd5b5061025d61049b3660046138de565b610eb2565b3480156104ac57600080fd5b5061025d6104bb3660046139e5565b6112f0565b3480156104cc57600080fd5b5061025d6104db3660046136c1565b6113c2565b3480156104ec57600080fd5b5061025d6104fb3660046136c1565b6114fb565b34801561050c57600080fd5b50600f5460ff1661027f565b34801561052457600080fd5b5061025d6105333660046139e5565b61153e565b34801561054457600080fd5b5061025d6105533660046136c1565b6115e4565b34801561056457600080fd5b5061056d611719565b60405161028b9190613a26565b34801561058657600080fd5b5061025d610595366004613a73565b61177a565b3480156105a657600080fd5b5061025d6105b53660046136c1565b611805565b3480156105c657600080fd5b506014546102d6906001600160a01b031681565b3480156105e657600080fd5b5061025d6118ca565b3480156105fb57600080fd5b506102a961060a3660046135d4565b61190e565b34801561061b57600080fd5b5061025d61062a366004613a8e565b6119b0565b34801561063b57600080fd5b5060015b60405160ff909116815260200161028b565b34801561065d57600080fd5b506102d661066c3660046135d4565b611a01565b34801561067d57600080fd5b5061025d61068c366004613676565b611a78565b34801561069d57600080fd5b506106b16106ac3660046136c1565b611ae8565b60405190815260200161028b565b3480156106cb57600080fd5b5061027f6106da366004613ac2565b611b6f565b3480156106eb57600080fd5b506102a9611c8c565b34801561070057600080fd5b5061027f61070f3660046136c1565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561073957600080fd5b506102a9611c99565b34801561074e57600080fd5b5061027f61075d3660046136c1565b6001600160a01b0316600090815260086020526040902054610100900460ff1690565b34801561078c57600080fd5b5061025d61079b366004613b90565b611ca8565b3480156107ac57600080fd5b5061025d6107bb3660046136c1565b611d66565b3480156107cc57600080fd5b506102d66107db3660046135d4565b611da9565b61025d6107ee366004613bce565b611dd3565b3480156107ff57600080fd5b506102a961080e3660046135d4565b611e1b565b34801561081f57600080fd5b5060125461063f9060ff1681565b34801561083957600080fd5b50610842611f79565b60405161028b9493929190613c37565b34801561085e57600080fd5b50600f5461027f90610100900460ff1681565b61025d6120c9565b34801561088557600080fd5b506102d6610894366004613cbc565b61210b565b3480156108a557600080fd5b5061027f6108b4366004613d8b565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156108ee57600080fd5b5061025d6108fd3660046136c1565b6122db565b60006301ffc9a760e01b6001600160e01b03198316148061093c57506001600160e01b031982166000908152600a602052604090205460ff165b92915050565b6060600d805461095190613db9565b80601f016020809104026020016040519081016040528092919081815260200182805461097d90613db9565b80156109ca5780601f1061099f576101008083540402835291602001916109ca565b820191906000526020600020905b8154815290600101906020018083116109ad57829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b0316610a525760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610a7982611a01565b9050806001600160a01b0316836001600160a01b03161415610ae75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610a49565b336001600160a01b0382161480610b035750610b0381336108b4565b610b755760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610a49565b610b7f838361240b565b505050565b60118054610b9190613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90613db9565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b505050505081565b3360009081526015602052604090205460ff16610c7c5760405162461bcd60e51b815260206004820152602260248201527f45524337323154656d706c6174653a204e4f5420455243323020436f6e74726160448201526118dd60f21b6064820152608401610a49565b610b7f838383612479565b3360009081526008602052604090205460ff161515600114610cbb5760405162461bcd60e51b8152600401610a4990613df4565b6001600160a01b038116600081815260086020526040808220805462ff000019166201000017815560098054600181018255935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917fc2a42571a74ce1442c8c44d375ba9442e7d55d94b37afeace261c83c62128fa490610d4e9042904390918252602082015260400190565b60405180910390a35050565b610d646001611a01565b6001600160a01b0316336001600160a01b031614610d945760405162461bcd60e51b8152600401610a4990613e2b565b610d9e82826124d2565b336001600160a01b03167f6de6cd3982065cbd31e789e3109106f4d76d1c8a46e85262045cf947fb3fd4ed82844243604051610ddd9493929190613e62565b60405180910390a25050565b3360009081526008602052604090205460ff161515600114610e1d5760405162461bcd60e51b8152600401610a4990613df4565b6001600160a01b038116600081815260086020526040808220805463ff0000001916630100000017815560098054600181018255935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917feb09276310ed110a7e565d64966d0ff68a47112d2dd5eeb6cbd7451836ce35ee90610d4e9042904390918252602082015260400190565b3360009081526008602052604090205462010000900460ff16610ee75760405162461bcd60e51b8152600401610a4990613e91565b6012805460ff191660ff8d16179055610f0260108b8b613408565b50610f0f60118989613408565b50600f54610100900460ff16610f8657336001600160a01b03167f5463569dcc320958360074a9ab27e809e8a6942c394fb151d139b5f7b4ecb1bd8c8c8c8a8a8a8a8a4243604051610f6a9a99989796959493929190613efb565b60405180910390a2600f805461ff001916610100179055610fd8565b60125460405133917fe5c4cf86b1815151e6f453e1e133d4454ae3b0b07145db39f2e0178685deac8491610fcf9160ff16908e908e908c908c908c908c908c9042904390613efb565b60405180910390a25b60328151111561101c5760405162461bcd60e51b815260206004820152600f60248201526e546f6f204d616e792050726f6f667360881b6044820152606401610a49565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a333200000000602082015260005b82518110156112e15760006001600160a01b031683828151811061107957611079613f63565b6020026020010151600001516001600160a01b0316146111fb57600082856040516020016110a8929190613f79565b60405160208183030381529060405280519060200120905060006001828685815181106110d7576110d7613f63565b6020026020010151602001518786815181106110f5576110f5613f63565b60200260200101516040015188878151811061111357611113613f63565b60200260200101516060015160405160008152602001604052604051611155949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015611177573d6000803e3d6000fd5b50505060206040510351905084838151811061119557611195613f63565b6020026020010151600001516001600160a01b0316816001600160a01b0316146111f85760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b210383937b7b31039b4b3b732b960611b6044820152606401610a49565b50505b82818151811061120d5761120d613f63565b6020026020010151600001516001600160a01b03167f2819d8badf5cff2c9220b8ee99dacc14d67058e343d7f0c2c444d198507fe9418585848151811061125657611256613f63565b60200260200101516020015186858151811061127457611274613f63565b60200260200101516040015187868151811061129257611292613f63565b6020026020010151606001516040516112c7949392919093845260ff9290921660208401526040830152606082015260800190565b60405180910390a2806112d981613fb1565b915050611053565b50505050505050505050505050565b806001146113105760405162461bcd60e51b8152600401610a4990613fcc565b61137a611375601380548060200260200160405190810160405280929190818152602001828054801561136c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161134e575b50505050505190565b61256c565b6113826125fd565b61138d8383836126ae565b611396826126ef565b506001600160a01b03166000908152600860205260409020805463ffffff001916630101010017905550565b3360009081526008602052604090205460ff161515600114806114135750336001600160a01b0382161480156114135750336000908152600860205260409020546301000000900460ff1615156001145b1561147b576001600160a01b03811660008181526008602052604090819020805463ff000000191681559051909133917fc929b18b08ffea86a1f95e29384dbe8968f2fcbd70cfd735df3aba1cc548cbf390610d4e9042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604660248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2037323553746f6064820152651c99531a5cdd60d21b608482015260a401610a49565b50565b6115056001611a01565b6001600160a01b0316336001600160a01b0316146115355760405162461bcd60e51b8152600401610a4990613e2b565b6114f8816126ef565b8060011461155e5760405162461bcd60e51b8152600401610a4990613fcc565b6115c1611375601380548060200260200160405190810160405280929190818152602001828054801561136c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161134e5750505050505190565b6115c96125fd565b61138d83838360405180602001604052806000815250612780565b3360009081526008602052604090205460ff161515600114806116345750336001600160a01b03821614801561163457503360009081526008602052604090205462010000900460ff1615156001145b1561169b576001600160a01b03811660008181526008602052604090819020805462ff0000191681559051909133917f9b41e1311fa819e825bc77fa2568492112e15ea92d173f3f8ee1c8ec3c1c562b90610d4e9042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604760248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d206d65746164616064820152661d18481b1a5cdd60ca1b608482015260a401610a49565b606060138054806020026020016040519081016040528092919081815260200182805480156109ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611753575050505050905090565b3360009081526008602052604090205462010000900460ff166117af5760405162461bcd60e51b8152600401610a4990613e91565b6012805460ff191660ff831690811790915560408051918252426020830152439082015233907fa8336411cc72db0e5bdc4dff989eeb35879bafaceffb59b54b37645c3395adb99060600160405180910390a250565b3360009081526008602052604090205460ff1615156001146118395760405162461bcd60e51b8152600401610a4990613df4565b6001600160a01b038116600081815260086020526040808220805461ff00191661010017815560098054600181018255935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917f0572d56343be407a66810f01449212e8545e14ff5049c479d34be944cdfd0d4f90610d4e9042904390918252602082015260400190565b6118d46001611a01565b6001600160a01b0316336001600160a01b0316146119045760405162461bcd60e51b8152600401610a4990613e2b565b61190c6125fd565b565b6000818152600b6020526040902080546060919061192b90613db9565b80601f016020809104026020016040519081016040528092919081815260200182805461195790613db9565b80156119a45780601f10611979576101008083540402835291602001916119a4565b820191906000526020600020905b81548152906001019060200180831161198757829003601f168201915b50505050509050919050565b6119ba6001611a01565b6001600160a01b0316336001600160a01b0316146119ea5760405162461bcd60e51b8152600401610a4990613e2b565b80516119fd90600290602084019061348c565b5050565b6000818152600360205260408120546001600160a01b03168061093c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610a49565b336000908152600860205260409020546301000000900460ff16610c7c5760405162461bcd60e51b815260206004820152602160248201527f45524337323154656d706c6174653a204e4f542053544f5245205550444154456044820152602960f91b6064820152608401610a49565b60006001600160a01b038216611b535760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610a49565b506001600160a01b031660009081526004602052604090205490565b600f5460009060ff1615611be05760405162461bcd60e51b815260206004820152603260248201527f45524337323154656d706c6174653a20746f6b656e20696e7374616e636520616044820152711b1c9958591e481a5b9a5d1a585b1a5e995960721b6064820152608401610a49565b6000611c5a8a8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b90819084018382808284376000920191909152508b92508991506127b89050565b9050808015611c7157506001600160a01b03841615155b15611c7f57611c7f84611839565b9998505050505050505050565b60108054610b9190613db9565b6060600e805461095190613db9565b6001600160a01b038216331415611d015760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a49565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610d4e565b611d706001611a01565b6001600160a01b0316336001600160a01b031614611da05760405162461bcd60e51b8152600401610a4990613e2b565b6114f8816128f8565b60098181548110611db957600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526008602052604090205460ff161515600114611e075760405162461bcd60e51b8152600401610a4990613df4565b611e148585858585612958565b5050505050565b6000818152600360205260409020546060906001600160a01b0316611e9a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a49565b60008281526007602052604081208054611eb390613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054611edf90613db9565b8015611f2c5780601f10611f0157610100808354040283529160200191611f2c565b820191906000526020600020905b815481529060010190602001808311611f0f57829003601f168201915b505050505090506000611f3d612b81565b825190915015611f72578082604051602001611f5a929190614018565b60405160208183030381529060405292505050919050565b5092915050565b60608060008060106011601260009054906101000a900460ff16600f60019054906101000a900460ff16838054611faf90613db9565b80601f0160208091040260200160405190810160405280929190818152602001828054611fdb90613db9565b80156120285780601f10611ffd57610100808354040283529160200191612028565b820191906000526020600020905b81548152906001019060200180831161200b57829003601f168201915b5050505050935082805461203b90613db9565b80601f016020809104026020016040519081016040528092919081815260200182805461206790613db9565b80156120b45780601f10612089576101008083540402835291602001916120b4565b820191906000526020600020905b81548152906001019060200180831161209757829003601f168201915b50505050509250935093509350935090919293565b6120d36001611a01565b6001600160a01b03166108fc479081150290604051600060405180830381858888f193505050501580156114f8573d6000803e3d6000fd5b60006002600c5414156121605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a49565b6002600c5533600090815260086020526040902054610100900460ff166121d85760405162461bcd60e51b815260206004820152602660248201527f45524337323154656d706c6174653a204e4f542045524332304445504c4f5945604482015265525f524f4c4560d01b6064820152608401610a49565b601254604051630557fcfb60e41b815260009161010090046001600160a01b03169063557fcfb09061221e908e908e908e908e908e908e908e908e908e90600401614168565b6020604051808303816000875af115801561223d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122619190614219565b6001600160a01b0381166000818152601560205260408120805460ff191660019081179091556013805491820181559091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b03191690911790559150506001600c559998505050505050505050565b3360009081526008602052604090205460ff1615156001148061232b5750336001600160a01b03821614801561232b57503360009081526008602052604090205460ff6101009091041615156001145b15612391576001600160a01b03811660008181526008602052604090819020805461ff00191681559051909133917f59bd33f4c27cc16a2d74450e1fa43d7896020be9aecea4bee009db9294de899790610d4e9042904390918252602082015260400190565b60405162461bcd60e51b815260206004820152604360248201527f455243373231526f6c6573416464726573733a204e6f7420656e6f756768207060448201527f65726d697373696f6e7320746f2072656d6f76652066726f6d2045524332304c6064820152621a5cdd60ea1b608482015260a401610a49565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061244082611a01565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000838152600b60205260409020612492908383613408565b50827fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b283836040516124c5929190614236565b60405180910390a2505050565b6000828152600360205260409020546001600160a01b031661254d5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610a49565b60008281526007602090815260409091208251610b7f9284019061348c565b60005b818110156119fd576013818154811061258a5761258a613f63565b6000918252602082200154604080516382c03da560e01b815290516001600160a01b03909216926382c03da59260048084019382900301818387803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b5050505080806125f590613fb1565b91505061256f565b60005b600954811015612665576000600860006009848154811061262357612623613f63565b60009182526020808320909101546001600160a01b031683528201929092526040019020805463ffffffff19169055508061265d81613fb1565b915050612600565b5061267260096000613500565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6126b83382612b90565b6126d45760405162461bcd60e51b8152600401610a499061424a565b610b7f83838360405180602001604052806000815250612780565b6001600160a01b038116600081815260086020526040808220805460ff19166001908117825560098054918201815590935260008051602061437783398151915290920180546001600160a01b0319168417905551909133917faf8fc8b6726138c96881c895390a08e9d91a94c288f06281e7f9821c49c7155b90610d4e9042904390918252602082015260400190565b61278a3383612b90565b6127a65760405162461bcd60e51b8152600401610a499061424a565b6127b284848484612c87565b50505050565b60006001600160a01b0386166128275760405162461bcd60e51b815260206004820152602e60248201527f45524337323154656d706c6174653a3a20496e76616c6964206d696e7465722c60448201526d20207a65726f206164647265737360901b6064820152608401610a49565b845161283a90600d90602088019061348c565b50835161284e90600e90602087019061348c565b5060128054610100600160a81b0319166101006001600160a01b0386160217905560408051602081019182905260009081905261288d9160029161348c565b50600f805461ffff191660019081179091556128aa908790612cba565b6128b3866126ef565b6001600160a01b0386166000908152600860205260409020805463ffffff00191663010101001781556128e76001846124d2565b5050600f5460ff1695945050505050565b6001600160a01b03811660008181526008602052604090819020805460ff191681559051909133917fb572db0e6da4924b771ed1712b980d48b5992b9a1c27aede55fbb3318c48996a90610d4e9042904390918252602082015260400190565b82846001600160a01b0316867f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b88585604051612995929190614236565b60405180910390a460006109c45a6129ad919061429b565b9050856129fd576129f7858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612cd4915050565b50612b79565b6003861415612a46576129f78484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612cec92505050565b6002861415612b3a576000612a9d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a9892506020915087905061429b565b612d88565b90506000612aec85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250612ae79150602090508861429b565b612de6565b90506000612afb878484612ef3565b6040519091506001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a2505050612b79565b60405162461bcd60e51b815260206004820152601460248201527357726f6e67206f7065726174696f6e207479706560601b6044820152606401610a49565b505050505050565b60606002805461095190613db9565b6000818152600360205260408120546001600160a01b0316612c095760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610a49565b6000612c1483611a01565b9050806001600160a01b0316846001600160a01b03161480612c4f5750836001600160a01b0316612c44846109d4565b6001600160a01b0316145b80612c7f57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b612c92848484612ff5565b612c9e84848484613195565b6127b25760405162461bcd60e51b8152600401610a49906142b2565b6119fd828260405180602001604052806000815250613293565b6000806000845160208601878987f195945050505050565b600081516020830184f090506001600160a01b038116612d4e5760405162461bcd60e51b815260206004820152601960248201527f436f756c64206e6f74206465706c6f7920636f6e7472616374000000000000006044820152606401610a49565b6040516001600160a01b038216907fcf78cf0d6f3d8371e1075c69c492ab4ec5d8cf23a1a239b6a51a1d00be7ca31290600090a292915050565b6000612d95826020614304565b83511015612ddd5760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606401610a49565b50016020015190565b606081612df481601f614304565b1015612e335760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a49565b612e3d8284614304565b84511015612e815760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a49565b606082158015612ea05760405191506000825260208201604052612eea565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612ed9578051835260209283019201612ec1565b5050858452601f01601f1916604052505b50949350505050565b60008084471015612f465760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610a49565b8251612f945760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610a49565b8383516020850187f590506001600160a01b038116612c7f5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610a49565b826001600160a01b031661300882611a01565b6001600160a01b0316146130705760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610a49565b6001600160a01b0382166130d25760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a49565b6130dd60008261240b565b6001600160a01b038316600090815260046020526040812080546001929061310690849061429b565b90915550506001600160a01b0382166000908152600460205260408120805460019290613134908490614304565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160a01b0384163b1561328857604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906131d990339089908890889060040161431c565b6020604051808303816000875af1925050508015613214575060408051601f3d908101601f1916820190925261321191810190614359565b60015b61326e573d808015613242576040519150601f19603f3d011682016040523d82523d6000602084013e613247565b606091505b5080516132665760405162461bcd60e51b8152600401610a49906142b2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612c7f565b506001949350505050565b61329d83836132c6565b6132aa6000848484613195565b610b7f5760405162461bcd60e51b8152600401610a49906142b2565b6001600160a01b03821661331c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a49565b6000818152600360205260409020546001600160a01b0316156133815760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a49565b6001600160a01b03821660009081526004602052604081208054600192906133aa908490614304565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461341490613db9565b90600052602060002090601f016020900481019282613436576000855561347c565b82601f1061344f5782800160ff1982351617855561347c565b8280016001018555821561347c579182015b8281111561347c578235825591602001919060010190613461565b5061348892915061351a565b5090565b82805461349890613db9565b90600052602060002090601f0160209004810192826134ba576000855561347c565b82601f106134d357805160ff191683800117855561347c565b8280016001018555821561347c579182015b8281111561347c5782518255916020019190600101906134e5565b50805460008255906000526020600020908101906114f891905b5b80821115613488576000815560010161351b565b6001600160e01b0319811681146114f857600080fd5b60006020828403121561355757600080fd5b81356135628161352f565b9392505050565b60005b8381101561358457818101518382015260200161356c565b838111156127b25750506000910152565b600081518084526135ad816020860160208601613569565b601f01601f19169290920160200192915050565b6020815260006135626020830184613595565b6000602082840312156135e657600080fd5b5035919050565b6001600160a01b03811681146114f857600080fd5b6000806040838503121561361557600080fd5b8235613620816135ed565b946020939093013593505050565b60008083601f84011261364057600080fd5b5081356001600160401b0381111561365757600080fd5b60208301915083602082850101111561366f57600080fd5b9250929050565b60008060006040848603121561368b57600080fd5b8335925060208401356001600160401b038111156136a857600080fd5b6136b48682870161362e565b9497909650939450505050565b6000602082840312156136d357600080fd5b8135613562816135ed565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715613716576137166136de565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613744576137446136de565b604052919050565b600082601f83011261375d57600080fd5b81356001600160401b03811115613776576137766136de565b613789601f8201601f191660200161371c565b81815284602083860101111561379e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156137ce57600080fd5b8235915060208301356001600160401b038111156137eb57600080fd5b6137f78582860161374c565b9150509250929050565b803560ff8116811461381257600080fd5b919050565b600082601f83011261382857600080fd5b813560206001600160401b03821115613843576138436136de565b613851818360051b0161371c565b82815260079290921b8401810191818101908684111561387057600080fd5b8286015b848110156138d3576080818903121561388d5760008081fd5b6138956136f4565b81356138a0816135ed565b81526138ad828601613801565b818601526040828101359082015260608083013590820152835291830191608001613874565b509695505050505050565b600080600080600080600080600080600060e08c8e0312156138ff57600080fd5b6139088c613801565b9a506001600160401b038060208e0135111561392357600080fd5b6139338e60208f01358f0161362e565b909b50995060408d013581101561394957600080fd5b6139598e60408f01358f0161362e565b909950975060608d013581101561396f57600080fd5b61397f8e60608f01358f0161362e565b909750955060808d013581101561399557600080fd5b6139a58e60808f01358f0161362e565b909550935060a08d0135925060c08d01358110156139c257600080fd5b506139d38d60c08e01358e01613817565b90509295989b509295989b9093969950565b6000806000606084860312156139fa57600080fd5b8335613a05816135ed565b92506020840135613a15816135ed565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b81811015613a675783516001600160a01b031683529284019291840191600101613a42565b50909695505050505050565b600060208284031215613a8557600080fd5b61356282613801565b600060208284031215613aa057600080fd5b81356001600160401b03811115613ab657600080fd5b612c7f8482850161374c565b60008060008060008060008060c0898b031215613ade57600080fd5b8835613ae9816135ed565b975060208901356001600160401b0380821115613b0557600080fd5b613b118c838d0161362e565b909950975060408b0135915080821115613b2a57600080fd5b613b368c838d0161362e565b909750955060608b01359150613b4b826135ed565b90935060808a013590613b5d826135ed565b90925060a08a01359080821115613b7357600080fd5b50613b808b828c0161374c565b9150509295985092959890939650565b60008060408385031215613ba357600080fd5b8235613bae816135ed565b915060208301358015158114613bc357600080fd5b809150509250929050565b600080600080600060808688031215613be657600080fd5b853594506020860135613bf8816135ed565b93506040860135925060608601356001600160401b03811115613c1a57600080fd5b613c268882890161362e565b969995985093965092949392505050565b608081526000613c4a6080830187613595565b8281036020840152613c5c8187613595565b60ff959095166040840152505090151560609091015292915050565b60008083601f840112613c8a57600080fd5b5081356001600160401b03811115613ca157600080fd5b6020830191508360208260051b850101111561366f57600080fd5b600080600080600080600080600060a08a8c031215613cda57600080fd5b8935985060208a01356001600160401b0380821115613cf857600080fd5b613d048d838e01613c78565b909a50985060408c0135915080821115613d1d57600080fd5b613d298d838e01613c78565b909850965060608c0135915080821115613d4257600080fd5b613d4e8d838e01613c78565b909650945060808c0135915080821115613d6757600080fd5b50613d748c828d01613c78565b915080935050809150509295985092959850929598565b60008060408385031215613d9e57600080fd5b8235613da9816135ed565b91506020830135613bc3816135ed565b600181811c90821680613dcd57607f821691505b60208210811415613dee57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f455243373231526f6c6573416464726573733a204e4f54204d414e4147455200604082015260600190565b6020808252601c908201527f45524337323154656d706c6174653a206e6f74204e46544f776e657200000000604082015260600190565b608081526000613e756080830187613595565b6020830195909552506040810192909252606090910152919050565b60208082526021908201527f45524337323154656d706c6174653a204e4f54204d455441444154415f524f4c6040820152604560f81b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60ff8b16815260e060208201526000613f1860e083018b8d613ed2565b8281036040840152613f2b818a8c613ed2565b90508281036060840152613f4081888a613ed2565b6080840196909652505060a081019290925260c090910152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008351613f8b818460208801613569565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415613fc557613fc5613f9b565b5060010190565b6020808252602c908201527f45524337323154656d706c6174653a2043616e6e6f74207472616e736665722060408201526b1d1a1a5cc81d1bdad95b925960a21b606082015260800190565b6000835161402a818460208801613569565b83519083019061403e818360208801613569565b01949350505050565b6000808335601e1984360301811261405e57600080fd5b83016020810192503590506001600160401b0381111561407d57600080fd5b80360383131561366f57600080fd5b8183526000602080850194508260005b858110156140ca5781356140af816135ed565b6001600160a01b03168752958201959082019060010161409c565b509495945050505050565b81835260006001600160fb1b038311156140ee57600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835260006020808501808196508560051b810191508460005b8781101561415b57828403895261413c8288614047565b614147868284613ed2565b9a87019a9550505090840190600101614125565b5091979650505050505050565b89815260a0602082018190528101889052600060c060058a901b830181019083018b835b8c8110156141c95785840360bf190183526141a7828f614047565b6141b2868284613ed2565b95505050602092830192919091019060010161418c565b50505082810360408401526141df81898b61408c565b905082810360608401526141f48187896140d5565b9050828103608084015261420981858761410b565b9c9b505050505050505050505050565b60006020828403121561422b57600080fd5b8151613562816135ed565b602081526000612c7f602083018486613ed2565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000828210156142ad576142ad613f9b565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000821982111561431757614317613f9b565b500190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061434f90830184613595565b9695505050505050565b60006020828403121561436b57600080fd5b81516135628161352f56fe6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7afa26469706673582212206d0bc2d2cba31628d81338472b8edc29d561d59a0f52686f6ad9fb78da838a2264736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/utils/mock/MockERC20.sol/MockERC20.dbg.json b/artifacts/utils/mock/MockERC20.sol/MockERC20.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/utils/mock/MockERC20.sol/MockERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/utils/mock/MockERC20.sol/MockERC20.json b/artifacts/utils/mock/MockERC20.sol/MockERC20.json new file mode 100644 index 000000000..46f16a5c4 --- /dev/null +++ b/artifacts/utils/mock/MockERC20.sol/MockERC20.json @@ -0,0 +1,302 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockERC20", + "sourceName": "contracts/utils/mock/MockERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "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": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "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": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000ca838038062000ca88339810160408190526200003491620002e6565b8151829082906200004d90600390602085019062000173565b5080516200006390600490602084019062000173565b505050620000828369152d02c7e14af68000006200008b60201b60201c565b505050620003d4565b6001600160a01b038216620000e65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000fa919062000370565b90915550506001600160a01b038216600090815260208190526040812080548392906200012990849062000370565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001819062000397565b90600052602060002090601f016020900481019282620001a55760008555620001f0565b82601f10620001c057805160ff1916838001178555620001f0565b82800160010185558215620001f0579182015b82811115620001f0578251825591602001919060010190620001d3565b50620001fe92915062000202565b5090565b5b80821115620001fe576000815560010162000203565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200024157600080fd5b81516001600160401b03808211156200025e576200025e62000219565b604051601f8301601f19908116603f0116810190828211818310171562000289576200028962000219565b81604052838152602092508683858801011115620002a657600080fd5b600091505b83821015620002ca5785820183015181830184015290820190620002ab565b83821115620002dc5760008385830101525b9695505050505050565b600080600060608486031215620002fc57600080fd5b83516001600160a01b03811681146200031457600080fd5b60208501519093506001600160401b03808211156200033257600080fd5b62000340878388016200022f565b935060408601519150808211156200035757600080fd5b5062000366868287016200022f565b9150509250925092565b600082198211156200039257634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003ac57607f821691505b60208210811415620003ce57634e487b7160e01b600052602260045260246000fd5b50919050565b6108c480620003e46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c39190610701565b60405180910390f35b6100df6100da366004610772565b610258565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461079c565b61026e565b604051601281526020016100c3565b6100df610131366004610772565b61031d565b6100f36101443660046107d8565b6001600160a01b031660009081526020819052604090205490565b6100b6610359565b6100df610175366004610772565b610368565b6100df610188366004610772565b610401565b6100f361019b3660046107fa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101d59061082d565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061082d565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b600061026533848461040e565b50600192915050565b600061027b848484610532565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610312853385840361040e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610265918590610354908690610868565b61040e565b6060600480546101d59061082d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102fc565b6103f7338585840361040e565b5060019392505050565b6000610265338484610532565b6001600160a01b0383166104705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102fc565b6001600160a01b0382166104d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102fc565b6001600160a01b0382166105f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102fc565b6001600160a01b038316600090815260208190526040902054818110156106705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102fc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106a7908490610868565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106f391815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561072e57858101830151858201604001528201610712565b81811115610740576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076d57600080fd5b919050565b6000806040838503121561078557600080fd5b61078e83610756565b946020939093013593505050565b6000806000606084860312156107b157600080fd5b6107ba84610756565b92506107c860208501610756565b9150604084013590509250925092565b6000602082840312156107ea57600080fd5b6107f382610756565b9392505050565b6000806040838503121561080d57600080fd5b61081683610756565b915061082460208401610756565b90509250929050565b600181811c9082168061084157607f821691505b6020821081141561086257634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088957634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122079d51b06ec18b8902232be4e1a8364e3397c366b4ed8e5ba0e55e3f76d79dfc364736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c39190610701565b60405180910390f35b6100df6100da366004610772565b610258565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461079c565b61026e565b604051601281526020016100c3565b6100df610131366004610772565b61031d565b6100f36101443660046107d8565b6001600160a01b031660009081526020819052604090205490565b6100b6610359565b6100df610175366004610772565b610368565b6100df610188366004610772565b610401565b6100f361019b3660046107fa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101d59061082d565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061082d565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b600061026533848461040e565b50600192915050565b600061027b848484610532565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610312853385840361040e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610265918590610354908690610868565b61040e565b6060600480546101d59061082d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102fc565b6103f7338585840361040e565b5060019392505050565b6000610265338484610532565b6001600160a01b0383166104705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102fc565b6001600160a01b0382166104d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102fc565b6001600160a01b0382166105f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102fc565b6001600160a01b038316600090815260208190526040902054818110156106705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102fc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106a7908490610868565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106f391815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561072e57858101830151858201604001528201610712565b81811115610740576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076d57600080fd5b919050565b6000806040838503121561078557600080fd5b61078e83610756565b946020939093013593505050565b6000806000606084860312156107b157600080fd5b6107ba84610756565b92506107c860208501610756565b9150604084013590509250925092565b6000602082840312156107ea57600080fd5b6107f382610756565b9392505050565b6000806040838503121561080d57600080fd5b61081683610756565b915061082460208401610756565b90509250929050565b600181811c9082168061084157607f821691505b6020821081141561086257634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088957634e487b7160e01b600052601160045260246000fd5b50019056fea264697066735822122079d51b06ec18b8902232be4e1a8364e3397c366b4ed8e5ba0e55e3f76d79dfc364736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.dbg.json b/artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json b/artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json new file mode 100644 index 000000000..2b8cefbfb --- /dev/null +++ b/artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json @@ -0,0 +1,302 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockERC20Decimals", + "sourceName": "contracts/utils/mock/MockERC20Decimals.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "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": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "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": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000cac38038062000cac8339810160408190526200003491620002e9565b82516200004990600390602086019062000176565b5081516200005f90600490602085019062000176565b506005805460ff191660ff8316179055620000853369152d02c7e14af68000006200008e565b505050620003d2565b6001600160a01b038216620000e95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000fd91906200036e565b90915550506001600160a01b038216600090815260208190526040812080548392906200012c9084906200036e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001849062000395565b90600052602060002090601f016020900481019282620001a85760008555620001f3565b82601f10620001c357805160ff1916838001178555620001f3565b82800160010185558215620001f3579182015b82811115620001f3578251825591602001919060010190620001d6565b506200020192915062000205565b5090565b5b8082111562000201576000815560010162000206565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200024457600080fd5b81516001600160401b03808211156200026157620002616200021c565b604051601f8301601f19908116603f011681019082821181831017156200028c576200028c6200021c565b81604052838152602092508683858801011115620002a957600080fd5b600091505b83821015620002cd5785820183015181830184015290820190620002ae565b83821115620002df5760008385830101525b9695505050505050565b600080600060608486031215620002ff57600080fd5b83516001600160401b03808211156200031757600080fd5b620003258783880162000232565b945060208601519150808211156200033c57600080fd5b506200034b8682870162000232565b925050604084015160ff811681146200036357600080fd5b809150509250925092565b600082198211156200039057634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003aa57607f821691505b60208210811415620003cc57634e487b7160e01b600052602260045260246000fd5b50919050565b6108ca80620003e26000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012957806370a082311461013c57806395d89b4114610165578063a457c2d71461016d578063a9059cbb14610180578063dd62ed3e1461019357600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101cc565b6040516100c39190610707565b60405180910390f35b6100df6100da366004610778565b61025e565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f3660046107a2565b610274565b60055460405160ff90911681526020016100c3565b6100df610137366004610778565b610323565b6100f361014a3660046107de565b6001600160a01b031660009081526020819052604090205490565b6100b661035f565b6100df61017b366004610778565b61036e565b6100df61018e366004610778565b610407565b6100f36101a1366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101db90610833565b80601f016020809104026020016040519081016040528092919081815260200182805461020790610833565b80156102545780601f1061022957610100808354040283529160200191610254565b820191906000526020600020905b81548152906001019060200180831161023757829003601f168201915b5050505050905090565b600061026b338484610414565b50600192915050565b6000610281848484610538565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561030b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103188533858403610414565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161026b91859061035a90869061086e565b610414565b6060600480546101db90610833565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610302565b6103fd3385858403610414565b5060019392505050565b600061026b338484610538565b6001600160a01b0383166104765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610302565b6001600160a01b0382166104d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610302565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661059c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610302565b6001600160a01b0382166105fe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610302565b6001600160a01b038316600090815260208190526040902054818110156106765760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610302565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106ad90849061086e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106f991815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561073457858101830151858201604001528201610718565b81811115610746576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b6020821081141561086857634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088f57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d2617625dd3370f1a23f5f078d13d4b29db45d4b61cbad4c17b2d8aadf9c75bb64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012957806370a082311461013c57806395d89b4114610165578063a457c2d71461016d578063a9059cbb14610180578063dd62ed3e1461019357600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101cc565b6040516100c39190610707565b60405180910390f35b6100df6100da366004610778565b61025e565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f3660046107a2565b610274565b60055460405160ff90911681526020016100c3565b6100df610137366004610778565b610323565b6100f361014a3660046107de565b6001600160a01b031660009081526020819052604090205490565b6100b661035f565b6100df61017b366004610778565b61036e565b6100df61018e366004610778565b610407565b6100f36101a1366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101db90610833565b80601f016020809104026020016040519081016040528092919081815260200182805461020790610833565b80156102545780601f1061022957610100808354040283529160200191610254565b820191906000526020600020905b81548152906001019060200180831161023757829003601f168201915b5050505050905090565b600061026b338484610414565b50600192915050565b6000610281848484610538565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561030b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103188533858403610414565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161026b91859061035a90869061086e565b610414565b6060600480546101db90610833565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610302565b6103fd3385858403610414565b5060019392505050565b600061026b338484610538565b6001600160a01b0383166104765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610302565b6001600160a01b0382166104d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610302565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661059c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610302565b6001600160a01b0382166105fe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610302565b6001600160a01b038316600090815260208190526040902054818110156106765760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610302565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106ad90849061086e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106f991815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561073457858101830151858201604001528201610718565b81811115610746576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b6020821081141561086857634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088f57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d2617625dd3370f1a23f5f078d13d4b29db45d4b61cbad4c17b2d8aadf9c75bb64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/utils/mock/MockExchange.sol/MockExchange.dbg.json b/artifacts/utils/mock/MockExchange.sol/MockExchange.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/utils/mock/MockExchange.sol/MockExchange.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/utils/mock/MockExchange.sol/MockExchange.json b/artifacts/utils/mock/MockExchange.sol/MockExchange.json new file mode 100644 index 000000000..1ec9b5be4 --- /dev/null +++ b/artifacts/utils/mock/MockExchange.sol/MockExchange.json @@ -0,0 +1,67 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockExchange", + "sourceName": "contracts/utils/mock/MockExchange.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "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": "depositWithPermit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506102e8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806312a62cff1461003b57806347e7ef2414610050575b600080fd5b61004e6100493660046101ff565b610063565b005b61004e61005e36600461025f565b610167565b60405163d505accf60e01b8152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290526001600160a01b0387169063d505accf9060e401600060405180830381600087803b1580156100cf57600080fd5b505af11580156100e3573d6000803e3d6000fd5b50506040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b03891692506323b872dd91506064016020604051808303816000875af115801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610289565b50505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156101ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101de9190610289565b505050565b80356001600160a01b03811681146101fa57600080fd5b919050565b60008060008060008060c0878903121561021857600080fd5b610221876101e3565b95506020870135945060408701359350606087013560ff8116811461024557600080fd5b9598949750929560808101359460a0909101359350915050565b6000806040838503121561027257600080fd5b61027b836101e3565b946020939093013593505050565b60006020828403121561029b57600080fd5b815180151581146102ab57600080fd5b939250505056fea2646970667358221220413785285224ec23d369be80a34c0820e2cdcf4c8f03a284784e42e616a50d3664736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806312a62cff1461003b57806347e7ef2414610050575b600080fd5b61004e6100493660046101ff565b610063565b005b61004e61005e36600461025f565b610167565b60405163d505accf60e01b8152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c481018290526001600160a01b0387169063d505accf9060e401600060405180830381600087803b1580156100cf57600080fd5b505af11580156100e3573d6000803e3d6000fd5b50506040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b03891692506323b872dd91506064016020604051808303816000875af115801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610289565b50505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156101ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101de9190610289565b505050565b80356001600160a01b03811681146101fa57600080fd5b919050565b60008060008060008060c0878903121561021857600080fd5b610221876101e3565b95506020870135945060408701359350606087013560ff8116811461024557600080fd5b9598949750929560808101359460a0909101359350915050565b6000806040838503121561027257600080fd5b61027b836101e3565b946020939093013593505050565b60006020828403121561029b57600080fd5b815180151581146102ab57600080fd5b939250505056fea2646970667358221220413785285224ec23d369be80a34c0820e2cdcf4c8f03a284784e42e616a50d3664736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/utils/mock/MockOcean.sol/MockOcean.dbg.json b/artifacts/utils/mock/MockOcean.sol/MockOcean.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/utils/mock/MockOcean.sol/MockOcean.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/utils/mock/MockOcean.sol/MockOcean.json b/artifacts/utils/mock/MockOcean.sol/MockOcean.json new file mode 100644 index 000000000..d3bd37f6f --- /dev/null +++ b/artifacts/utils/mock/MockOcean.sol/MockOcean.json @@ -0,0 +1,292 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockOcean", + "sourceName": "contracts/utils/mock/MockOcean.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "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": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "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": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000ba838038062000ba883398101604081905262000034916200023e565b60408051808201825260058082526427b1b2b0b760d91b602080840182815285518087019096529285528401528151919291620000749160039162000198565b5080516200008a90600490602084019062000198565b505050620000a98169152d02c7e14af6800000620000b060201b60201c565b50620002d4565b6001600160a01b0382166200010b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200011f919062000270565b90915550506001600160a01b038216600090815260208190526040812080548392906200014e90849062000270565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001a69062000297565b90600052602060002090601f016020900481019282620001ca576000855562000215565b82601f10620001e557805160ff191683800117855562000215565b8280016001018555821562000215579182015b8281111562000215578251825591602001919060010190620001f8565b506200022392915062000227565b5090565b5b8082111562000223576000815560010162000228565b6000602082840312156200025157600080fd5b81516001600160a01b03811681146200026957600080fd5b9392505050565b600082198211156200029257634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002ac57607f821691505b60208210811415620002ce57634e487b7160e01b600052602260045260246000fd5b50919050565b6108c480620002e46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c39190610701565b60405180910390f35b6100df6100da366004610772565b610258565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461079c565b61026e565b604051601281526020016100c3565b6100df610131366004610772565b61031d565b6100f36101443660046107d8565b6001600160a01b031660009081526020819052604090205490565b6100b6610359565b6100df610175366004610772565b610368565b6100df610188366004610772565b610401565b6100f361019b3660046107fa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101d59061082d565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061082d565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b600061026533848461040e565b50600192915050565b600061027b848484610532565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610312853385840361040e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610265918590610354908690610868565b61040e565b6060600480546101d59061082d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102fc565b6103f7338585840361040e565b5060019392505050565b6000610265338484610532565b6001600160a01b0383166104705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102fc565b6001600160a01b0382166104d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102fc565b6001600160a01b0382166105f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102fc565b6001600160a01b038316600090815260208190526040902054818110156106705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102fc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106a7908490610868565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106f391815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561072e57858101830151858201604001528201610712565b81811115610740576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076d57600080fd5b919050565b6000806040838503121561078557600080fd5b61078e83610756565b946020939093013593505050565b6000806000606084860312156107b157600080fd5b6107ba84610756565b92506107c860208501610756565b9150604084013590509250925092565b6000602082840312156107ea57600080fd5b6107f382610756565b9392505050565b6000806040838503121561080d57600080fd5b61081683610756565b915061082460208401610756565b90509250929050565b600181811c9082168061084157607f821691505b6020821081141561086257634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088957634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212207b53d35701c549fb1087fb8787f0a8bd4aef1c0a4631ef76d0b995a68dd9ccaf64736f6c634300080a0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c39190610701565b60405180910390f35b6100df6100da366004610772565b610258565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f36600461079c565b61026e565b604051601281526020016100c3565b6100df610131366004610772565b61031d565b6100f36101443660046107d8565b6001600160a01b031660009081526020819052604090205490565b6100b6610359565b6100df610175366004610772565b610368565b6100df610188366004610772565b610401565b6100f361019b3660046107fa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101d59061082d565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061082d565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b600061026533848461040e565b50600192915050565b600061027b848484610532565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610312853385840361040e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610265918590610354908690610868565b61040e565b6060600480546101d59061082d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102fc565b6103f7338585840361040e565b5060019392505050565b6000610265338484610532565b6001600160a01b0383166104705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102fc565b6001600160a01b0382166104d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102fc565b6001600160a01b0382166105f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102fc565b6001600160a01b038316600090815260208190526040902054818110156106705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102fc565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106a7908490610868565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106f391815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561072e57858101830151858201604001528201610712565b81811115610740576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076d57600080fd5b919050565b6000806040838503121561078557600080fd5b61078e83610756565b946020939093013593505050565b6000806000606084860312156107b157600080fd5b6107ba84610756565b92506107c860208501610756565b9150604084013590509250925092565b6000602082840312156107ea57600080fd5b6107f382610756565b9392505050565b6000806040838503121561080d57600080fd5b61081683610756565b915061082460208401610756565b90509250929050565b600181811c9082168061084157607f821691505b6020821081141561086257634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561088957634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212207b53d35701c549fb1087fb8787f0a8bd4aef1c0a4631ef76d0b995a68dd9ccaf64736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/artifacts/utils/mock/MockOldDT.sol/MockOldDT.dbg.json b/artifacts/utils/mock/MockOldDT.sol/MockOldDT.dbg.json new file mode 100644 index 000000000..145541ef6 --- /dev/null +++ b/artifacts/utils/mock/MockOldDT.sol/MockOldDT.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/7a9d7fe2079496b67c21873719ee8ecc.json" +} diff --git a/artifacts/utils/mock/MockOldDT.sol/MockOldDT.json b/artifacts/utils/mock/MockOldDT.sol/MockOldDT.json new file mode 100644 index 000000000..f67c9b8b9 --- /dev/null +++ b/artifacts/utils/mock/MockOldDT.sol/MockOldDT.json @@ -0,0 +1,688 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockOldDT", + "sourceName": "contracts/utils/mock/MockOldDT.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": 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": "orderTxId", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "OrderFinished", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": true, + "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": "mrktFeeCollector", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFee", + "type": "uint256" + } + ], + "name": "OrderStarted", + "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" + }, + { + "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": "BASE_MARKET_FEE_PERCENTAGE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "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": [], + "name": "approveMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "blob", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feePercentage", + "type": "uint256" + } + ], + "name": "calculateFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "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": "bytes32", + "name": "orderTxId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "finishOrder", + "outputs": [], + "stateMutability": "nonpayable", + "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": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "minterAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cap_", + "type": "uint256" + }, + { + "internalType": "string", + "name": "blob_", + "type": "string" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + } + ], + "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": "minter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "proposeMinter", + "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": "mrktFeeCollector", + "type": "address" + } + ], + "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" + } + ], + "bytecode": "0x60c060405260086080819052671353d0d2d58cd11560c21b60a09081526200002b916005919062000525565b5060408051808201909152600480825263158cd11560e21b6020909201918252620000599160069162000525565b5060408051808201909152600480825263313637b160e11b6020909201918252620000879160079162000525565b50683635c9adc5dea00000600855600980546001600160a81b0319169055348015620000b257600080fd5b50604080518082018252600481526315195cdd60e21b60208083019182528351808501909452600a845269151154d514d6535093d360b21b908401528151919291620001019160039162000525565b5080516200011790600490602084019062000525565b505050620002e8600580546200012d90620005cb565b80601f01602080910402602001604051908101604052809291908181526020018280546200015b90620005cb565b8015620001ac5780601f106200018057610100808354040283529160200191620001ac565b820191906000526020600020905b8154815290600101906020018083116200018e57829003601f168201915b505050505060068054620001c090620005cb565b80601f0160208091040260200160405190810160405280929190818152602001828054620001ee90620005cb565b80156200023f5780601f1062000213576101008083540402835291602001916200023f565b820191906000526020600020905b8154815290600101906020018083116200022157829003601f168201915b505050505033600854600780546200025790620005cb565b80601f01602080910402602001604051908101604052809291908181526020018280546200028590620005cb565b8015620002d65780601f10620002aa57610100808354040283529160200191620002d6565b820191906000526020600020905b815481529060010190602001808311620002b857829003601f168201915b505050505033620002ef60201b60201c565b5062000608565b60006001600160a01b038516620003555760405162461bcd60e51b8152602060048201526030602482015260008051602062001c4283398151915260448201526f722c20207a65726f206164647265737360801b60648201526084015b60405180910390fd5b600a546001600160a01b031615620003b75760405162461bcd60e51b815260206004820152602f602482015260008051602062001c4283398151915260448201526e722c207a65726f206164647265737360881b60648201526084016200034c565b6001600160a01b03821662000437576040805162461bcd60e51b81526020600482015260248101919091527f44617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d7560448201527f6e6974792066656520636f6c6c6563746f722c207a65726f206164647265737360648201526084016200034c565b83620004925760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016200034c565b60088490558651620004ac9060059060208a019062000525565b508251620004c290600790602086019062000525565b508551620004d890600690602089019062000525565b5050600a80546001600160a01b039586166001600160a01b0319909116179055600980546001600160a81b0319169190941617600160a01b9081179384905590920460ff16949350505050565b8280546200053390620005cb565b90600052602060002090601f016020900481019282620005575760008555620005a2565b82601f106200057257805160ff1916838001178555620005a2565b82800160010185558215620005a2579182015b82811115620005a257825182559160200191906001019062000585565b50620005b0929150620005b4565b5090565b5b80821115620005b05760008155600101620005b5565b600181811c90821680620005e057607f821691505b602082108114156200060257634e487b7160e01b600052602260045260246000fd5b50919050565b61162a80620006186000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063aa271e1a11610097578063dd62ed3e11610071578063dd62ed3e14610345578063eb40024b1461037e578063ec342ad014610386578063fde0e7a81461039557600080fd5b8063aa271e1a14610310578063ab63d2b214610332578063b2263a5d1461021457600080fd5b806370a08231146102935780638ca0c059146102bc5780639070d2f8146102cf57806395d89b41146102e2578063a457c2d7146102ea578063a9059cbb146102fd57600080fd5b8063313ce5671161014b578063392e53cd11610125578063392e53cd14610246578063395093511461025857806340c10f191461026b57806350d2fcc41461028057600080fd5b8063313ce5671461021c57806334e731221461022b578063355274ea1461023e57600080fd5b806306fdde031461019357806307546172146101b1578063095ea7b3146101cc57806318160ddd146101ef57806323b872dd14610201578063294541c714610214575b600080fd5b61019b61039d565b6040516101a8919061121a565b60405180910390f35b600a546040516001600160a01b0390911681526020016101a8565b6101df6101da36600461128b565b61042f565b60405190151581526020016101a8565b6002545b6040519081526020016101a8565b6101df61020f3660046112b5565b610446565b6101f36104f5565b604051601281526020016101a8565b6101f36102393660046112f1565b61050c565b6008546101f3565b600954600160a01b900460ff166101df565b6101df61026636600461128b565b61054b565b61027e61027936600461128b565b610587565b005b61027e61028e366004611313565b610623565b6101f36102a1366004611313565b6001600160a01b031660009081526020819052604090205490565b61027e6102ca36600461132e565b6106a8565b6101df6102dd3660046113b2565b610771565b61019b6108a7565b6101df6102f836600461128b565b6108b6565b6101df61030b36600461128b565b61094f565b6101df61031e366004611313565b600a546001600160a01b0390811691161490565b61027e610340366004611479565b61095c565b6101f36103533660046114bf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027e610a51565b6101f3670de0b6b3a764000081565b61019b610b38565b6060600380546103ac906114f2565b80601f01602080910402602001604051908101604052809291908181526020018280546103d8906114f2565b80156104255780601f106103fa57610100808354040283529160200191610425565b820191906000526020600020905b81548152906001019060200180831161040857829003601f168201915b5050505050905090565b600061043c338484610b47565b5060015b92915050565b6000610453848484610c6b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104dd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104ea8533858403610b47565b506001949350505050565b6105096103e8670de0b6b3a7640000611543565b81565b60008261051b57506000610440565b8161052857506000610440565b610544670de0b6b3a764000061053e8585610e2c565b90610e38565b9392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161043c918590610582908690611565565b610b47565b600a546001600160a01b031633146105b15760405162461bcd60e51b81526004016104d49061157d565b6008546105c7826105c160025490565b90610e44565b11156106155760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016104d4565b61061f8282610e50565b5050565b600a546001600160a01b0316331461064d5760405162461bcd60e51b81526004016104d49061157d565b600b80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527fa24c529cc8b2d85b7dfb2ed0b4d7e9a816546212138b5d223bee13481e21be6b910160405180910390a150565b8115610716576106b8838361094f565b6107165760405162461bcd60e51b815260206004820152602960248201527f44617461546f6b656e54656d706c6174653a206661696c656420746f2066696e60448201526834b9b41037b93232b960b91b60648201526084016104d4565b604080518581526020810184905290810182905242606082015233906001600160a01b038516907f46872661d5d7765097d3a97ca99b7cbfa68b54b6d51904168974901ee607a26d906080015b60405180910390a350505050565b600954600090600160a01b900460ff16156107ec5760405162461bcd60e51b815260206004820152603560248201527f44617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636044820152741948185b1c9958591e481a5b9a5d1a585b1a5e9959605a1b60648201526084016104d4565b6108998a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525050604080516020601f8b018190048102820181019092528981528c93508b9250908a908a90819084018382808284376000920191909152508a9250610f2f915050565b9a9950505050505050505050565b6060600480546103ac906114f2565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d4565b6109453385858403610b47565b5060019392505050565b600061043c338484610c6b565b600080610977856102396103e8670de0b6b3a7640000611543565b600954909150610990906001600160a01b03168261094f565b506001600160a01b038316156109c6576109b8856102396103e8670de0b6b3a7640000611543565b91506109c4838361094f565b505b60006109d28284610e44565b600a549091506109ef906001600160a01b031661030b8884611175565b50604080518781526020810187905242818301526060810185905290516001600160a01b03868116923392918b16917fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9181900360800190a450505050505050565b600b546001600160a01b03163314610ac65760405162461bcd60e51b815260206004820152603260248201527f44617461546f6b656e54656d706c6174653a20696e76616c69642070726f706f604482015271736564206d696e746572206164647265737360701b60648201526084016104d4565b600a54600b54604080516001600160a01b0393841681529290911660208301527f96ab0400119a548d3cc4c74e857d0d9c427fe9df20d3d0d99af10cc292e6c886910160405180910390a1600b8054600a80546001600160a01b03199081166001600160a01b03841617909155169055565b6060600780546103ac906114f2565b6001600160a01b038316610ba95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d4565b6001600160a01b038216610c0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ccf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d4565b6001600160a01b038216610d315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d4565b6001600160a01b03831660009081526020819052604090205481811015610da95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610de0908490611565565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161076391815260200190565b600061054482846115be565b60006105448284611543565b60006105448284611565565b6001600160a01b038216610ea65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d4565b8060026000828254610eb89190611565565b90915550506001600160a01b03821660009081526020819052604081208054839290610ee5908490611565565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006001600160a01b038516610fa05760405162461bcd60e51b815260206004820152603060248201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e746560448201526f722c20207a65726f206164647265737360801b60648201526084016104d4565b600a546001600160a01b0316156110115760405162461bcd60e51b815260206004820152602f60248201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e746560448201526e722c207a65726f206164647265737360881b60648201526084016104d4565b6001600160a01b03821661108f576040805162461bcd60e51b81526020600482015260248101919091527f44617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d7560448201527f6e6974792066656520636f6c6c6563746f722c207a65726f206164647265737360648201526084016104d4565b836110e85760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016104d4565b600884905586516111009060059060208a0190611181565b508251611114906007906020860190611181565b508551611128906006906020890190611181565b5050600a80546001600160a01b039586166001600160a01b0319909116179055600980546001600160a81b0319169190941617600160a01b9081179384905590920460ff16949350505050565b600061054482846115dd565b82805461118d906114f2565b90600052602060002090601f0160209004810192826111af57600085556111f5565b82601f106111c857805160ff19168380011785556111f5565b828001600101855582156111f5579182015b828111156111f55782518255916020019190600101906111da565b50611201929150611205565b5090565b5b808211156112015760008155600101611206565b600060208083528351808285015260005b818110156112475785810183015185820160400152820161122b565b81811115611259576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461128657600080fd5b919050565b6000806040838503121561129e57600080fd5b6112a78361126f565b946020939093013593505050565b6000806000606084860312156112ca57600080fd5b6112d38461126f565b92506112e16020850161126f565b9150604084013590509250925092565b6000806040838503121561130457600080fd5b50508035926020909101359150565b60006020828403121561132557600080fd5b6105448261126f565b6000806000806080858703121561134457600080fd5b843593506113546020860161126f565b93969395505050506040820135916060013590565b60008083601f84011261137b57600080fd5b50813567ffffffffffffffff81111561139357600080fd5b6020830191508360208285010111156113ab57600080fd5b9250929050565b600080600080600080600080600060c08a8c0312156113d057600080fd5b893567ffffffffffffffff808211156113e857600080fd5b6113f48d838e01611369565b909b50995060208c013591508082111561140d57600080fd5b6114198d838e01611369565b909950975087915061142d60408d0161126f565b965060608c0135955060808c013591508082111561144a57600080fd5b506114578c828d01611369565b909450925061146a905060a08b0161126f565b90509295985092959850929598565b6000806000806080858703121561148f57600080fd5b6114988561126f565b935060208501359250604085013591506114b46060860161126f565b905092959194509250565b600080604083850312156114d257600080fd5b6114db8361126f565b91506114e96020840161126f565b90509250929050565b600181811c9082168061150657607f821691505b6020821081141561152757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261156057634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156115785761157861152d565b500190565b60208082526021908201527f44617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74656040820152603960f91b606082015260800190565b60008160001904831182151516156115d8576115d861152d565b500290565b6000828210156115ef576115ef61152d565b50039056fea2646970667358221220713acc380b15cea41807e25750e6f232d6d4398c296234af194c6497d43ff0c064736f6c634300080a003344617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063aa271e1a11610097578063dd62ed3e11610071578063dd62ed3e14610345578063eb40024b1461037e578063ec342ad014610386578063fde0e7a81461039557600080fd5b8063aa271e1a14610310578063ab63d2b214610332578063b2263a5d1461021457600080fd5b806370a08231146102935780638ca0c059146102bc5780639070d2f8146102cf57806395d89b41146102e2578063a457c2d7146102ea578063a9059cbb146102fd57600080fd5b8063313ce5671161014b578063392e53cd11610125578063392e53cd14610246578063395093511461025857806340c10f191461026b57806350d2fcc41461028057600080fd5b8063313ce5671461021c57806334e731221461022b578063355274ea1461023e57600080fd5b806306fdde031461019357806307546172146101b1578063095ea7b3146101cc57806318160ddd146101ef57806323b872dd14610201578063294541c714610214575b600080fd5b61019b61039d565b6040516101a8919061121a565b60405180910390f35b600a546040516001600160a01b0390911681526020016101a8565b6101df6101da36600461128b565b61042f565b60405190151581526020016101a8565b6002545b6040519081526020016101a8565b6101df61020f3660046112b5565b610446565b6101f36104f5565b604051601281526020016101a8565b6101f36102393660046112f1565b61050c565b6008546101f3565b600954600160a01b900460ff166101df565b6101df61026636600461128b565b61054b565b61027e61027936600461128b565b610587565b005b61027e61028e366004611313565b610623565b6101f36102a1366004611313565b6001600160a01b031660009081526020819052604090205490565b61027e6102ca36600461132e565b6106a8565b6101df6102dd3660046113b2565b610771565b61019b6108a7565b6101df6102f836600461128b565b6108b6565b6101df61030b36600461128b565b61094f565b6101df61031e366004611313565b600a546001600160a01b0390811691161490565b61027e610340366004611479565b61095c565b6101f36103533660046114bf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027e610a51565b6101f3670de0b6b3a764000081565b61019b610b38565b6060600380546103ac906114f2565b80601f01602080910402602001604051908101604052809291908181526020018280546103d8906114f2565b80156104255780601f106103fa57610100808354040283529160200191610425565b820191906000526020600020905b81548152906001019060200180831161040857829003601f168201915b5050505050905090565b600061043c338484610b47565b5060015b92915050565b6000610453848484610c6b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104dd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104ea8533858403610b47565b506001949350505050565b6105096103e8670de0b6b3a7640000611543565b81565b60008261051b57506000610440565b8161052857506000610440565b610544670de0b6b3a764000061053e8585610e2c565b90610e38565b9392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161043c918590610582908690611565565b610b47565b600a546001600160a01b031633146105b15760405162461bcd60e51b81526004016104d49061157d565b6008546105c7826105c160025490565b90610e44565b11156106155760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016104d4565b61061f8282610e50565b5050565b600a546001600160a01b0316331461064d5760405162461bcd60e51b81526004016104d49061157d565b600b80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527fa24c529cc8b2d85b7dfb2ed0b4d7e9a816546212138b5d223bee13481e21be6b910160405180910390a150565b8115610716576106b8838361094f565b6107165760405162461bcd60e51b815260206004820152602960248201527f44617461546f6b656e54656d706c6174653a206661696c656420746f2066696e60448201526834b9b41037b93232b960b91b60648201526084016104d4565b604080518581526020810184905290810182905242606082015233906001600160a01b038516907f46872661d5d7765097d3a97ca99b7cbfa68b54b6d51904168974901ee607a26d906080015b60405180910390a350505050565b600954600090600160a01b900460ff16156107ec5760405162461bcd60e51b815260206004820152603560248201527f44617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636044820152741948185b1c9958591e481a5b9a5d1a585b1a5e9959605a1b60648201526084016104d4565b6108998a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525050604080516020601f8b018190048102820181019092528981528c93508b9250908a908a90819084018382808284376000920191909152508a9250610f2f915050565b9a9950505050505050505050565b6060600480546103ac906114f2565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d4565b6109453385858403610b47565b5060019392505050565b600061043c338484610c6b565b600080610977856102396103e8670de0b6b3a7640000611543565b600954909150610990906001600160a01b03168261094f565b506001600160a01b038316156109c6576109b8856102396103e8670de0b6b3a7640000611543565b91506109c4838361094f565b505b60006109d28284610e44565b600a549091506109ef906001600160a01b031661030b8884611175565b50604080518781526020810187905242818301526060810185905290516001600160a01b03868116923392918b16917fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9181900360800190a450505050505050565b600b546001600160a01b03163314610ac65760405162461bcd60e51b815260206004820152603260248201527f44617461546f6b656e54656d706c6174653a20696e76616c69642070726f706f604482015271736564206d696e746572206164647265737360701b60648201526084016104d4565b600a54600b54604080516001600160a01b0393841681529290911660208301527f96ab0400119a548d3cc4c74e857d0d9c427fe9df20d3d0d99af10cc292e6c886910160405180910390a1600b8054600a80546001600160a01b03199081166001600160a01b03841617909155169055565b6060600780546103ac906114f2565b6001600160a01b038316610ba95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d4565b6001600160a01b038216610c0a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ccf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d4565b6001600160a01b038216610d315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d4565b6001600160a01b03831660009081526020819052604090205481811015610da95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610de0908490611565565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161076391815260200190565b600061054482846115be565b60006105448284611543565b60006105448284611565565b6001600160a01b038216610ea65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d4565b8060026000828254610eb89190611565565b90915550506001600160a01b03821660009081526020819052604081208054839290610ee5908490611565565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006001600160a01b038516610fa05760405162461bcd60e51b815260206004820152603060248201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e746560448201526f722c20207a65726f206164647265737360801b60648201526084016104d4565b600a546001600160a01b0316156110115760405162461bcd60e51b815260206004820152602f60248201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e746560448201526e722c207a65726f206164647265737360881b60648201526084016104d4565b6001600160a01b03821661108f576040805162461bcd60e51b81526020600482015260248101919091527f44617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d7560448201527f6e6974792066656520636f6c6c6563746f722c207a65726f206164647265737360648201526084016104d4565b836110e85760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016104d4565b600884905586516111009060059060208a0190611181565b508251611114906007906020860190611181565b508551611128906006906020890190611181565b5050600a80546001600160a01b039586166001600160a01b0319909116179055600980546001600160a81b0319169190941617600160a01b9081179384905590920460ff16949350505050565b600061054482846115dd565b82805461118d906114f2565b90600052602060002090601f0160209004810192826111af57600085556111f5565b82601f106111c857805160ff19168380011785556111f5565b828001600101855582156111f5579182015b828111156111f55782518255916020019190600101906111da565b50611201929150611205565b5090565b5b808211156112015760008155600101611206565b600060208083528351808285015260005b818110156112475785810183015185820160400152820161122b565b81811115611259576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461128657600080fd5b919050565b6000806040838503121561129e57600080fd5b6112a78361126f565b946020939093013593505050565b6000806000606084860312156112ca57600080fd5b6112d38461126f565b92506112e16020850161126f565b9150604084013590509250925092565b6000806040838503121561130457600080fd5b50508035926020909101359150565b60006020828403121561132557600080fd5b6105448261126f565b6000806000806080858703121561134457600080fd5b843593506113546020860161126f565b93969395505050506040820135916060013590565b60008083601f84011261137b57600080fd5b50813567ffffffffffffffff81111561139357600080fd5b6020830191508360208285010111156113ab57600080fd5b9250929050565b600080600080600080600080600060c08a8c0312156113d057600080fd5b893567ffffffffffffffff808211156113e857600080fd5b6113f48d838e01611369565b909b50995060208c013591508082111561140d57600080fd5b6114198d838e01611369565b909950975087915061142d60408d0161126f565b965060608c0135955060808c013591508082111561144a57600080fd5b506114578c828d01611369565b909450925061146a905060a08b0161126f565b90509295985092959850929598565b6000806000806080858703121561148f57600080fd5b6114988561126f565b935060208501359250604085013591506114b46060860161126f565b905092959194509250565b600080604083850312156114d257600080fd5b6114db8361126f565b91506114e96020840161126f565b90509250929050565b600181811c9082168061150657607f821691505b6020821081141561152757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008261156057634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156115785761157861152d565b500190565b60208082526021908201527f44617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74656040820152603960f91b606082015260800190565b60008160001904831182151516156115d8576115d861152d565b500290565b6000828210156115ef576115ef61152d565b50039056fea2646970667358221220713acc380b15cea41807e25750e6f232d6d4398c296234af194c6497d43ff0c064736f6c634300080a0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/package.json b/package.json index 8a49675b5..93af85a29 100644 --- a/package.json +++ b/package.json @@ -53,18 +53,11 @@ "web3": ">=1.3.5" }, "dependencies": { - "@ethereum-navigator/navigator": "^0.5.3", - "@oceanprotocol/contracts": "github:oceanprotocol/contracts#v4main_postaudit", "cross-fetch": "^3.1.4", "crypto-js": "^4.0.0", "decimal.js": "^10.2.1", - "ethereumjs-util": "^7.1.3", "fs": "0.0.1-security", - "lzma": "^2.3.2", - "node-abort-controller": "^2.0.0", "save-file": "^2.3.1", - "underscore": "^1.13.1", - "uuid": "^8.3.2", "web3": ">=1.3.5", "web3-core": "^1.6.1", "web3-eth-contract": "^1.6.1" diff --git a/src/factories/NFTFactory.ts b/src/factories/NFTFactory.ts index 98060bf31..dba36082b 100644 --- a/src/factories/NFTFactory.ts +++ b/src/factories/NFTFactory.ts @@ -2,7 +2,7 @@ import { Contract } from 'web3-eth-contract' import Web3 from 'web3' import { TransactionReceipt } from 'web3-core' import { AbiItem } from 'web3-utils' -import defaultFactory721Abi from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' +import defaultFactory721Abi from '../../artifacts/ERC721Factory.sol/ERC721Factory.json' import { LoggerInstance, getFairGasPrice, diff --git a/src/pools/Router.ts b/src/pools/Router.ts index 9f77bba0f..24b9c414a 100644 --- a/src/pools/Router.ts +++ b/src/pools/Router.ts @@ -2,7 +2,7 @@ import { Contract } from 'web3-eth-contract' import Web3 from 'web3' import { TransactionReceipt } from 'web3-core' import { AbiItem } from 'web3-utils' -import defaultRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' +import defaultRouter from '../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' import { getFairGasPrice } from '../utils' import { Operation } from '../interfaces/RouterInterface' diff --git a/src/pools/balancer/Pool.ts b/src/pools/balancer/Pool.ts index f94799a07..5f58cda32 100644 --- a/src/pools/balancer/Pool.ts +++ b/src/pools/balancer/Pool.ts @@ -4,8 +4,8 @@ import { TransactionReceipt } from 'web3-core' import { Contract } from 'web3-eth-contract' import { Logger, getFairGasPrice, LoggerInstance } from '../../utils' import BigNumber from 'bignumber.js' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import defaultErc20Abi from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' +import PoolTemplate from '../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import defaultErc20Abi from '../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' import Decimal from 'decimal.js' import { CurrentFees, diff --git a/src/pools/dispenser/Dispenser.ts b/src/pools/dispenser/Dispenser.ts index b615caced..16a73fac9 100644 --- a/src/pools/dispenser/Dispenser.ts +++ b/src/pools/dispenser/Dispenser.ts @@ -3,7 +3,7 @@ import { AbiItem } from 'web3-utils' import { Contract } from 'web3-eth-contract' import { TransactionReceipt } from 'web3-eth' import Decimal from 'decimal.js' -import defaultDispenserAbi from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' +import defaultDispenserAbi from '../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' import { LoggerInstance as logger, getFairGasPrice } from '../../utils/' import { Datatoken } from '../../tokens' diff --git a/src/pools/fixedRate/FixedRateExchange.ts b/src/pools/fixedRate/FixedRateExchange.ts index 98d75dd70..d9e157527 100644 --- a/src/pools/fixedRate/FixedRateExchange.ts +++ b/src/pools/fixedRate/FixedRateExchange.ts @@ -1,5 +1,5 @@ -import defaultFixedRateExchangeAbi from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import defaultErc20Abi from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' +import defaultFixedRateExchangeAbi from '../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import defaultErc20Abi from '../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' import BigNumber from 'bignumber.js' import { TransactionReceipt } from 'web3-core' import { Contract } from 'web3-eth-contract' diff --git a/src/pools/ssContracts/SideStaking.ts b/src/pools/ssContracts/SideStaking.ts index e6a55f197..6e60b3fbd 100644 --- a/src/pools/ssContracts/SideStaking.ts +++ b/src/pools/ssContracts/SideStaking.ts @@ -4,8 +4,8 @@ import { TransactionReceipt } from 'web3-core' import { Contract } from 'web3-eth-contract' import { LoggerInstance, getFairGasPrice } from '../../utils' import BigNumber from 'bignumber.js' -import SideStakingTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import defaultErc20Abi from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' +import SideStakingTemplate from '../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import defaultErc20Abi from '../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' export class SideStaking { public ssAbi: AbiItem | AbiItem[] diff --git a/src/tokens/Datatoken.ts b/src/tokens/Datatoken.ts index 746a888b2..937489438 100644 --- a/src/tokens/Datatoken.ts +++ b/src/tokens/Datatoken.ts @@ -3,8 +3,8 @@ import { AbiItem } from 'web3-utils' import { TransactionReceipt } from 'web3-eth' import { Contract } from 'web3-eth-contract' import Decimal from 'decimal.js' -import defaultDatatokensAbi from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import defaultDatatokensEnterpriseAbi from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' +import defaultDatatokensAbi from '../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import defaultDatatokensEnterpriseAbi from '../../artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' import { LoggerInstance, getFairGasPrice } from '../utils' import { FreOrderParams, FreCreationParams } from '../interfaces' import { Nft } from './NFT' diff --git a/src/tokens/NFT.ts b/src/tokens/NFT.ts index ee750750d..f6a8a5b28 100644 --- a/src/tokens/NFT.ts +++ b/src/tokens/NFT.ts @@ -1,7 +1,7 @@ import Web3 from 'web3' import { AbiItem } from 'web3-utils' import { TransactionReceipt } from 'web3-eth' -import defaultNftAbi from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' +import defaultNftAbi from '../../artifacts/templates/ERC721Template.sol/ERC721Template.json' import { LoggerInstance, getFairGasPrice, generateDtName } from '../utils' import { Contract } from 'web3-eth-contract' import { MetadataProof } from '../../src/@types' diff --git a/src/utils/ConfigHelper.ts b/src/utils/ConfigHelper.ts index 90def761d..cc5f7aa94 100644 --- a/src/utils/ConfigHelper.ts +++ b/src/utils/ConfigHelper.ts @@ -2,7 +2,7 @@ import Config from '../models/Config' import fs from 'fs' import { homedir } from 'os' // eslint-disable-next-line import/no-named-default -import { default as DefaultContractsAddresses } from '@oceanprotocol/contracts/addresses/address.json' +import { default as DefaultContractsAddresses } from '../../artifacts/addresses/address.json' import LoggerInstance from './Logger' const configHelperNetworksBase: Config = { diff --git a/test/TestContractHandler.ts b/test/TestContractHandler.ts index afb3b5aca..34b9d144c 100644 --- a/test/TestContractHandler.ts +++ b/test/TestContractHandler.ts @@ -1,7 +1,7 @@ import Web3 from 'web3' import { Contract } from 'web3-eth-contract' import { AbiItem } from 'web3-utils/types' -import MockERC20 from '@oceanprotocol/contracts/artifacts/contracts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json' +import MockERC20 from '../artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json' const oceanAddress = '0x967da4048cd07ab37855c090aaf366e4ce1b9f48' export class TestContractHandler { diff --git a/test/integration/PublishFlows.test.ts b/test/integration/PublishFlows.test.ts index e7364f7cb..ee3fafb97 100644 --- a/test/integration/PublishFlows.test.ts +++ b/test/integration/PublishFlows.test.ts @@ -1,4 +1,4 @@ -import MockERC20 from '@oceanprotocol/contracts/artifacts/contracts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json' +import MockERC20 from '../../artifacts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json' import ProviderInstance from '../../src/provider/Provider' import Aquarius from '../../src/aquarius/Aquarius' import { assert } from 'chai' diff --git a/test/unit/NftFactory.test.ts b/test/unit/NftFactory.test.ts index 5581b91ed..05deb413a 100644 --- a/test/unit/NftFactory.test.ts +++ b/test/unit/NftFactory.test.ts @@ -2,16 +2,15 @@ import { assert, expect } from 'chai' import { AbiItem } from 'web3-utils/types' import { TestContractHandler } from '../TestContractHandler' import Web3 from 'web3' -import { ecsign } from 'ethereumjs-util' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import Router from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import OPFCommunityFeeCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' +import ERC721Factory from '../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SideStaking from '../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import Router from '../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import OPFCommunityFeeCollector from '../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import PoolTemplate from '../../artifacts/pools//balancer/BPool.sol/BPool.json' import { NftFactory, NftCreateData, TokenOrder } from '../../src/factories/NFTFactory' import { FreCreationParams, diff --git a/test/unit/pools/Router.test.ts b/test/unit/pools/Router.test.ts index 0a136cc48..51fee97b4 100644 --- a/test/unit/pools/Router.test.ts +++ b/test/unit/pools/Router.test.ts @@ -2,15 +2,15 @@ import { assert, expect } from 'chai' import { AbiItem } from 'web3-utils/types' import Web3 from 'web3' import { TestContractHandler } from '../../TestContractHandler' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import OPFCommunityFeeCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' +import ERC721Factory from '../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SideStaking from '../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import FactoryRouter from '../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import OPFCommunityFeeCollector from '../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import PoolTemplate from '../../../artifacts/pools/balancer/BPool.sol/BPool.json' import { NftFactory, NftCreateData } from '../../../src/factories/NFTFactory' import { Router } from '../../../src/pools/Router' import { Erc20CreateParams, PoolCreationParams, Operation } from '../../../src/interfaces' diff --git a/test/unit/pools/balancer/Pool.test.ts b/test/unit/pools/balancer/Pool.test.ts index 5dfe1a155..0d1869a6d 100644 --- a/test/unit/pools/balancer/Pool.test.ts +++ b/test/unit/pools/balancer/Pool.test.ts @@ -3,15 +3,15 @@ import { AbiItem } from 'web3-utils/types' import { TestContractHandler } from '../../../TestContractHandler' import { Contract } from 'web3-eth-contract' import Web3 from 'web3' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import ERC721Factory from '../../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SideStaking from '../../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import FactoryRouter from '../../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import PoolTemplate from '../../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import OPFCollector from '../../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' import { LoggerInstance } from '../../../../src/utils' import { NftFactory, NftCreateData } from '../../../../src/factories/NFTFactory' import { Pool } from '../../../../src/pools/balancer/Pool' diff --git a/test/unit/pools/dispenser/Dispenser.test.ts b/test/unit/pools/dispenser/Dispenser.test.ts index 30d23937f..783a24fb4 100644 --- a/test/unit/pools/dispenser/Dispenser.test.ts +++ b/test/unit/pools/dispenser/Dispenser.test.ts @@ -1,16 +1,15 @@ import Web3 from 'web3' import { AbiItem } from 'web3-utils' import { assert, expect } from 'chai' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import DispenserTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import MockERC20 from '@oceanprotocol/contracts/artifacts/contracts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import ERC721Factory from '../../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SideStaking from '../../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import FactoryRouter from '../../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import DispenserTemplate from '../../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import PoolTemplate from '../../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import OPFCollector from '../../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' import { NftFactory, NftCreateData } from '../../../../src/factories/' import { Datatoken, DispenserParams } from '../../../../src/tokens/' import { Dispenser } from '../../../../src/pools/dispenser/' diff --git a/test/unit/pools/fixedRate/FixedRateExchange.test.ts b/test/unit/pools/fixedRate/FixedRateExchange.test.ts index aa0f83a61..bf6e04261 100644 --- a/test/unit/pools/fixedRate/FixedRateExchange.test.ts +++ b/test/unit/pools/fixedRate/FixedRateExchange.test.ts @@ -4,15 +4,15 @@ import { TestContractHandler } from '../../../TestContractHandler' import { Contract } from 'web3-eth-contract' import Web3 from 'web3' import BN from 'bn.js' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SSContract from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import ERC721Factory from '../../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SSContract from '../../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import FactoryRouter from '../../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import PoolTemplate from '../../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import OPFCollector from '../../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' import { NftFactory, NftCreateData } from '../../../../src/factories/NFTFactory' import { FixedRateExchange } from '../../../../src/pools/fixedRate/FixedRateExchange' import { FreCreationParams, Erc20CreateParams } from '../../../../src/interfaces' diff --git a/test/unit/pools/ssContracts/SideStaking.test.ts b/test/unit/pools/ssContracts/SideStaking.test.ts index 399c816d2..1c92c234c 100644 --- a/test/unit/pools/ssContracts/SideStaking.test.ts +++ b/test/unit/pools/ssContracts/SideStaking.test.ts @@ -3,15 +3,15 @@ import { AbiItem } from 'web3-utils/types' import { TestContractHandler } from '../../../TestContractHandler' import { Contract } from 'web3-eth-contract' import Web3 from 'web3' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SSContract from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import FactoryRouter from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import ERC721Factory from '../../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SSContract from '../../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import FactoryRouter from '../../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import PoolTemplate from '../../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import OPFCollector from '../../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' import { LoggerInstance } from '../../../../src/utils' import { NftFactory, NftCreateData } from '../../../../src/factories/NFTFactory' import { Pool } from '../../../../src/pools/balancer/Pool' diff --git a/test/unit/tokens/Datatoken.test.ts b/test/unit/tokens/Datatoken.test.ts index e5607ac60..20e636139 100644 --- a/test/unit/tokens/Datatoken.test.ts +++ b/test/unit/tokens/Datatoken.test.ts @@ -1,16 +1,15 @@ import { assert } from 'chai' import Web3 from 'web3' -import { ecsign } from 'ethereumjs-util' -import ERC20TemplateEnterprise from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import Router from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import ERC20TemplateEnterprise from '../../../artifacts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' +import PoolTemplate from '../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import ERC721Factory from '../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SideStaking from '../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import Router from '../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import OPFCollector from '../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' import { TestContractHandler } from '../../TestContractHandler' import { NftFactory, NftCreateData } from '../../../src/factories/NFTFactory' diff --git a/test/unit/tokens/Nft.test.ts b/test/unit/tokens/Nft.test.ts index e792b8e52..baa8cd143 100644 --- a/test/unit/tokens/Nft.test.ts +++ b/test/unit/tokens/Nft.test.ts @@ -1,14 +1,14 @@ import { assert } from 'chai' import Web3 from 'web3' -import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' -import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json' -import Router from '@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' -import FixedRate from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' -import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' +import PoolTemplate from '../../../artifacts/pools/balancer/BPool.sol/BPool.json' +import ERC721Factory from '../../../artifacts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Template from '../../../artifacts/templates/ERC721Template.sol/ERC721Template.json' +import SideStaking from '../../../artifacts/pools/ssContracts/SideStaking.sol/SideStaking.json' +import Router from '../../../artifacts/pools/FactoryRouter.sol/FactoryRouter.json' +import ERC20Template from '../../../artifacts/templates/ERC20Template.sol/ERC20Template.json' +import Dispenser from '../../../artifacts/pools/dispenser/Dispenser.sol/Dispenser.json' +import FixedRate from '../../../artifacts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' +import OPFCollector from '../../../artifacts/communityFee/OPFCommunityFeeCollector.sol/OPFCommunityFeeCollector.json' import { TestContractHandler } from '../../TestContractHandler' import { NftFactory, NftCreateData } from '../../../src/factories/NFTFactory' import { Nft } from '../../../src/tokens/NFT'