[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "baseTokenURI", "type": "string" }, { "internalType": "bytes32", "name": "_classType", "type": "bytes32" }, { "internalType": "uint256", "name": "_stakingPower", "type": "uint256" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "classType", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractClassType", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractExtraData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractStakingPower", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "extraData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "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": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" } ], "name": "massMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseMetadataURI", "type": "string" } ], "name": "setBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_classType", "type": "bytes32" } ], "name": "setClassType", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "setExtraData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_stakingPower", "type": "uint256" } ], "name": "setStakingPower", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "stakingPower", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenData", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "classType", "type": "bytes32" }, { "internalType": "uint256", "name": "stakingPower", "type": "uint256" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "internalType": "struct PEFI_ERC721_Collectible.TokenData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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" } ]
60806040523480156200001157600080fd5b5060405162002edf38038062002edf833981016040819052620000349162000480565b858585828282828282828281600290805190602001906200005792919062000323565b5080516200006d90600390602084019062000323565b50508151620000859150600990602084019062000323565b50620000936000336200013a565b505050505050620000b16301ffc9a760e01b6200017d60201b60201c565b620000c3637965db0b60e01b6200017d565b620000d5635a05180f60e01b6200017d565b620000e76380ac58cd60e01b6200017d565b620000f9635b5e139f60e01b6200017d565b6200010b63780e9d6360e01b6200017d565b505050600f839055601082905580516200012d90601190602084019062000323565b505050505050506200059e565b6200015182826200020160201b6200116c1760201c565b6000828152600160209081526040909120620001789183906200117662000211821b17901c565b505050565b6001600160e01b03198082161415620001dc5760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600e60205260409020805460ff19166001179055565b6200020d828262000231565b5050565b600062000228836001600160a01b038416620002d1565b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200020d576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200028d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546200031a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200022b565b5060006200022b565b82805462000331906200054b565b90600052602060002090601f016020900481019282620003555760008555620003a0565b82601f106200037057805160ff1916838001178555620003a0565b82800160010185558215620003a0579182015b82811115620003a057825182559160200191906001019062000383565b50620003ae929150620003b2565b5090565b5b80821115620003ae5760008155600101620003b3565b600082601f830112620003db57600080fd5b81516001600160401b0380821115620003f857620003f862000588565b604051601f8301601f19908116603f0116810190828211818310171562000423576200042362000588565b816040528381526020925086838588010111156200044057600080fd5b600091505b8382101562000464578582018301518183018401529082019062000445565b83821115620004765760008385830101525b9695505050505050565b60008060008060008060c087890312156200049a57600080fd5b86516001600160401b0380821115620004b257600080fd5b620004c08a838b01620003c9565b97506020890151915080821115620004d757600080fd5b620004e58a838b01620003c9565b96506040890151915080821115620004fc57600080fd5b6200050a8a838b01620003c9565b9550606089015194506080890151935060a08901519150808211156200052f57600080fd5b506200053e89828a01620003c9565b9150509295509295509295565b600181811c908216806200056057607f821691505b602082108114156200058257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61293180620005ae6000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c80638462151c1161013b578063b88d4fde116100b8578063d53913931161007c578063d539139314610527578063d547741f1461054e578063d598544414610561578063e3d8bbe514610576578063e985e9c51461058957600080fd5b8063b88d4fde146104dd578063bea42ea1146104f0578063c87b56dd146104f9578063ca15c8731461050c578063d31c419b1461051f57600080fd5b8063a217fddf116100ff578063a217fddf1461047a578063a22cb46514610482578063ac08c65414610495578063add076b8146104aa578063b4b5b48f146104bd57600080fd5b80638462151c146104195780639010d07c1461043957806391d148541461044c57806395d89b411461045f578063a0bcfc7f1461046757600080fd5b80632f745c59116101c95780634f6ccce71161018d5780634f6ccce7146103ba5780636352211e146103cd5780636a627842146103e057806370a08231146103f357806378025ec41461040657600080fd5b80632f745c591461036557806336568abe146103785780633c15a3b81461038b57806342842e0e1461039457806342966c68146103a757600080fd5b806318160ddd1161021057806318160ddd146102f757806323b872dd14610309578063248a9ca31461031c5780632580cc991461033f5780632f2ff15d1461035257600080fd5b806301ffc9a71461024d57806306fdde031461028f578063081812fc146102a4578063095ea7b3146102cf57806313c4e957146102e4575b600080fd5b61027a61025b36600461244f565b6001600160e01b0319166000908152600e602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102976105c5565b6040516102869190612658565b6102b76102b23660046123f1565b610657565b6040516001600160a01b039091168152602001610286565b6102e26102dd366004612313565b6106f1565b005b6102e26102f2366004612489565b610807565b600c545b604051908152602001610286565b6102e2610317366004612233565b610826565b6102fb61032a3660046123f1565b60009081526020819052604090206001015490565b6102e261034d3660046123f1565b610858565b6102e261036036600461240a565b61086a565b6102fb610373366004612313565b61088c565b6102e261038636600461240a565b610925565b6102fb60105481565b6102e26103a2366004612233565b610947565b6102e26103b53660046123f1565b610962565b6102fb6103c83660046123f1565b6109dc565b6102b76103db3660046123f1565b610a6f565b6102e26103ee3660046121e5565b610ae6565b6102fb6104013660046121e5565b610b35565b6102976104143660046123f1565b610bbc565b61042c6104273660046121e5565b610c50565b6040516102869190612614565b6102b761044736600461242d565b610d0f565b61027a61045a36600461240a565b610d2e565b610297610d57565b6102e26104753660046124be565b610d66565b6102fb600081565b6102e26104903660046122d7565b610d85565b6102fb6104a33660046123f1565b50600f5490565b6102e26104b83660046123f1565b610e4a565b6104d06104cb3660046123f1565b610e5c565b604051610286919061270e565b6102e26104eb36600461226f565b610f2e565b6102fb600f5481565b6102976105073660046123f1565b610f66565b6102fb61051a3660046123f1565b611040565b610297611057565b6102fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102e261055c36600461240a565b6110e5565b6102fb61056f3660046123f1565b5060105490565b6102e261058436600461233d565b6110ef565b61027a610597366004612200565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6060600280546105d490612813565b80601f016020809104026020016040519081016040528092919081815260200182805461060090612813565b801561064d5780601f106106225761010080835404028352916020019161064d565b820191906000526020600020905b81548152906001019060200180831161063057829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b03166106d55760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006106fc82610a6f565b9050806001600160a01b0316836001600160a01b0316141561076a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016106cc565b336001600160a01b038216148061078657506107868133610597565b6107f85760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106cc565b610802838361118b565b505050565b600061081381336111f9565b81516108029060119060208501906120b8565b610831335b8261125d565b61084d5760405162461bcd60e51b81526004016106cc906126bd565b610802838383611354565b600061086481336111f9565b50600f55565b61087482826114ff565b60008281526001602052604090206108029082611176565b600061089783610b35565b82106108f95760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016106cc565b506001600160a01b0382166000908152600a602090815260408083208484529091529020545b92915050565b61092f8282611525565b6000828152600160205260409020610802908261159f565b61080283838360405180602001604052806000815250610f2e565b61096b3361082b565b6109d05760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016106cc565b6109d9816115b4565b50565b60006109e7600c5490565b8210610a4a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016106cc565b600c8281548110610a5d57610a5d6128b9565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061091f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016106cc565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610b1181336111f9565b610b2382610b1e60085490565b61165b565b610b31600880546001019055565b5050565b60006001600160a01b038216610ba05760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016106cc565b506001600160a01b031660009081526005602052604090205490565b606060118054610bcb90612813565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf790612813565b8015610c445780601f10610c1957610100808354040283529160200191610c44565b820191906000526020600020905b815481529060010190602001808311610c2757829003601f168201915b50505050509050919050565b60606000610c5d83610b35565b905080610c7e5760408051600080825260208201909252905b509392505050565b60008167ffffffffffffffff811115610c9957610c996128cf565b604051908082528060200260200182016040528015610cc2578160200160208202803683370190505b50905060005b82811015610c7657610cda858261088c565b828281518110610cec57610cec6128b9565b602090810291909101015280610d0181612848565b915050610cc8565b50919050565b6000828152600160205260408120610d279083611675565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546105d490612813565b6000610d7281336111f9565b81516108029060099060208501906120b8565b6001600160a01b038216331415610dde5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106cc565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000610e5681336111f9565b50601055565b604080516060808201835260008083526020808401919091528284018290528351808301855293840191909152600f5483526010549083015260118054919291610ea590612813565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed190612813565b8015610f1e5780601f10610ef357610100808354040283529160200191610f1e565b820191906000526020600020905b815481529060010190602001808311610f0157829003601f168201915b5050505050604082015292915050565b610f38338361125d565b610f545760405162461bcd60e51b81526004016106cc906126bd565b610f6084848484611681565b50505050565b6000818152600460205260409020546060906001600160a01b0316610fe55760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106cc565b6000610fef6116b4565b9050600081511161100f5760405180602001604052806000815250610d27565b80611019846116c3565b60405160200161102a929190612533565b6040516020818303038152906040529392505050565b600081815260016020526040812061091f906117c1565b6011805461106490612813565b80601f016020809104026020016040519081016040528092919081815260200182805461109090612813565b80156110dd5780601f106110b2576101008083540402835291602001916110dd565b820191906000526020600020905b8154815290600101906020018083116110c057829003601f168201915b505050505081565b61092f82826117cb565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661111a81336111f9565b60005b82518110156108025761114c83828151811061113b5761113b6128b9565b6020026020010151610b1e60085490565b61115a600880546001019055565b8061116481612848565b91505061111d565b610b3182826117f1565b6000610d27836001600160a01b038416611875565b600081815260066020526040902080546001600160a01b0319166001600160a01b03841690811790915581906111c082610a6f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6112038282610d2e565b610b315761121b816001600160a01b031660146118c4565b6112268360206118c4565b604051602001611237929190612562565b60408051601f198184030181529082905262461bcd60e51b82526106cc91600401612658565b6000818152600460205260408120546001600160a01b03166112d65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106cc565b60006112e183610a6f565b9050806001600160a01b0316846001600160a01b0316148061131c5750836001600160a01b031661131184610657565b6001600160a01b0316145b8061134c57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661136782610a6f565b6001600160a01b0316146113cf5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016106cc565b6001600160a01b0382166114315760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106cc565b61143c838383611a60565b61144760008261118b565b6001600160a01b03831660009081526005602052604081208054600192906114709084906127b9565b90915550506001600160a01b038216600090815260056020526040812080546001929061149e90849061276e565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008281526020819052604090206001015461151b81336111f9565b61080283836117f1565b6001600160a01b03811633146115955760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106cc565b610b318282611b18565b6000610d27836001600160a01b038416611b7d565b60006115bf82610a6f565b90506115cd81600084611a60565b6115d860008361118b565b6001600160a01b03811660009081526005602052604081208054600192906116019084906127b9565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b610b31828260405180602001604052806000815250611c70565b6000610d278383611ca3565b61168c848484611354565b61169884848484611ccd565b610f605760405162461bcd60e51b81526004016106cc9061266b565b6060600980546105d490612813565b6060816116e75750506040805180820190915260018152600360fc1b602082015290565b8160005b811561171157806116fb81612848565b915061170a9050600a83612786565b91506116eb565b60008167ffffffffffffffff81111561172c5761172c6128cf565b6040519080825280601f01601f191660200182016040528015611756576020820181803683370190505b5090505b841561134c5761176b6001836127b9565b9150611778600a86612863565b61178390603061276e565b60f81b818381518110611798576117986128b9565b60200101906001600160f81b031916908160001a9053506117ba600a86612786565b945061175a565b600061091f825490565b6000828152602081905260409020600101546117e781336111f9565b6108028383611b18565b6117fb8282610d2e565b610b31576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556118313390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546118bc5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561091f565b50600061091f565b606060006118d383600261279a565b6118de90600261276e565b67ffffffffffffffff8111156118f6576118f66128cf565b6040519080825280601f01601f191660200182016040528015611920576020820181803683370190505b509050600360fc1b8160008151811061193b5761193b6128b9565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061196a5761196a6128b9565b60200101906001600160f81b031916908160001a905350600061198e84600261279a565b61199990600161276e565b90505b6001811115611a11576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119cd576119cd6128b9565b1a60f81b8282815181106119e3576119e36128b9565b60200101906001600160f81b031916908160001a90535060049490941c93611a0a816127fc565b905061199c565b508315610d275760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106cc565b6001600160a01b038316611abb57611ab681600c80546000838152600d60205260408120829055600182018355919091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70155565b611ade565b816001600160a01b0316836001600160a01b031614611ade57611ade8382611dda565b6001600160a01b038216611af55761080281611e77565b826001600160a01b0316826001600160a01b031614610802576108028282611f26565b611b228282610d2e565b15610b31576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008181526001830160205260408120548015611c66576000611ba16001836127b9565b8554909150600090611bb5906001906127b9565b9050818114611c1a576000866000018281548110611bd557611bd56128b9565b9060005260206000200154905080876000018481548110611bf857611bf86128b9565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c2b57611c2b6128a3565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061091f565b600091505061091f565b611c7a8383611f6a565b611c876000848484611ccd565b6108025760405162461bcd60e51b81526004016106cc9061266b565b6000826000018281548110611cba57611cba6128b9565b9060005260206000200154905092915050565b60006001600160a01b0384163b15611dcf57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d119033908990889088906004016125d7565b602060405180830381600087803b158015611d2b57600080fd5b505af1925050508015611d5b575060408051601f3d908101601f19168201909252611d589181019061246c565b60015b611db5573d808015611d89576040519150601f19603f3d011682016040523d82523d6000602084013e611d8e565b606091505b508051611dad5760405162461bcd60e51b81526004016106cc9061266b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061134c565b506001949350505050565b60006001611de784610b35565b611df191906127b9565b6000838152600b6020526040902054909150808214611e44576001600160a01b0384166000908152600a602090815260408083208584528252808320548484528184208190558352600b90915290208190555b506000918252600b602090815260408084208490556001600160a01b039094168352600a81528383209183525290812055565b600c54600090611e89906001906127b9565b6000838152600d6020526040812054600c8054939450909284908110611eb157611eb16128b9565b9060005260206000200154905080600c8381548110611ed257611ed26128b9565b6000918252602080832090910192909255828152600d9091526040808220849055858252812055600c805480611f0a57611f0a6128a3565b6001900381819060005260206000200160009055905550505050565b6000611f3183610b35565b6001600160a01b039093166000908152600a602090815260408083208684528252808320859055938252600b9052919091209190915550565b6001600160a01b038216611fc05760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106cc565b6000818152600460205260409020546001600160a01b0316156120255760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106cc565b61203160008383611a60565b6001600160a01b038216600090815260056020526040812080546001929061205a90849061276e565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546120c490612813565b90600052602060002090601f0160209004810192826120e6576000855561212c565b82601f106120ff57805160ff191683800117855561212c565b8280016001018555821561212c579182015b8281111561212c578251825591602001919060010190612111565b5061213892915061213c565b5090565b5b80821115612138576000815560010161213d565b600067ffffffffffffffff83111561216b5761216b6128cf565b61217e601f8401601f191660200161273d565b905082815283838301111561219257600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b03811681146121c057600080fd5b919050565b600082601f8301126121d657600080fd5b610d2783833560208501612151565b6000602082840312156121f757600080fd5b610d27826121a9565b6000806040838503121561221357600080fd5b61221c836121a9565b915061222a602084016121a9565b90509250929050565b60008060006060848603121561224857600080fd5b612251846121a9565b925061225f602085016121a9565b9150604084013590509250925092565b6000806000806080858703121561228557600080fd5b61228e856121a9565b935061229c602086016121a9565b925060408501359150606085013567ffffffffffffffff8111156122bf57600080fd5b6122cb878288016121c5565b91505092959194509250565b600080604083850312156122ea57600080fd5b6122f3836121a9565b91506020830135801515811461230857600080fd5b809150509250929050565b6000806040838503121561232657600080fd5b61232f836121a9565b946020939093013593505050565b6000602080838503121561235057600080fd5b823567ffffffffffffffff8082111561236857600080fd5b818501915085601f83011261237c57600080fd5b81358181111561238e5761238e6128cf565b8060051b915061239f84830161273d565b8181528481019084860184860187018a10156123ba57600080fd5b600095505b838610156123e4576123d0816121a9565b8352600195909501949186019186016123bf565b5098975050505050505050565b60006020828403121561240357600080fd5b5035919050565b6000806040838503121561241d57600080fd5b8235915061222a602084016121a9565b6000806040838503121561244057600080fd5b50508035926020909101359150565b60006020828403121561246157600080fd5b8135610d27816128e5565b60006020828403121561247e57600080fd5b8151610d27816128e5565b60006020828403121561249b57600080fd5b813567ffffffffffffffff8111156124b257600080fd5b61134c848285016121c5565b6000602082840312156124d057600080fd5b813567ffffffffffffffff8111156124e757600080fd5b8201601f810184136124f857600080fd5b61134c84823560208401612151565b6000815180845261251f8160208601602086016127d0565b601f01601f19169290920160200192915050565b600083516125458184602088016127d0565b8351908301906125598183602088016127d0565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161259a8160178501602088016127d0565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516125cb8160288401602088016127d0565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061260a90830184612507565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561264c57835183529284019291840191600101612630565b50909695505050505050565b602081526000610d276020830184612507565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020815281516020820152602082015160408201526000604083015160608084015261134c6080840182612507565b604051601f8201601f1916810167ffffffffffffffff81118282101715612766576127666128cf565b604052919050565b6000821982111561278157612781612877565b500190565b6000826127955761279561288d565b500490565b60008160001904831182151516156127b4576127b4612877565b500290565b6000828210156127cb576127cb612877565b500390565b60005b838110156127eb5781810151838201526020016127d3565b83811115610f605750506000910152565b60008161280b5761280b612877565b506000190190565b600181811c9082168061282757607f821691505b60208210811415610d0957634e487b7160e01b600052602260045260246000fd5b600060001982141561285c5761285c612877565b5060010190565b6000826128725761287261288d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146109d957600080fdfea2646970667358221220c335b7d9aaae08d76652e4c6de78c142b58248a71ff5b8a32e1e8d746e8f2e1f64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000009417374726f6e61757400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009417374726f6e6175740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d576473425547474c577963725a45676e4a4845684d53316a435855784e57776d4848366d4c48426346566e512f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000