15 txs
12 calls
constructor
constructor()
functions
_tokenIdCounter
viewfunction _tokenIdCounter() view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
degenToken
viewfunction degenToken() view returns (address)
getAllIdeas
viewfunction getAllIdeas() view returns (uint256[] ideaIds, string[] contents, uint256[] licenseFees, uint256[] salePrices, uint256[] ideaTotalEarnings, uint256[] licensesSold, address[] ideaOwners)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getIdeaDetails
viewfunction getIdeaDetails(uint256 ideaId) view returns (string content, uint256 licenseFee, uint256 salePrice, uint256 ideaTotalEarnings, uint256 licensesSold, address ideaOwner)
getIdeaDetailsBulk
viewfunction getIdeaDetailsBulk(uint256 start_id, uint256 end_id) view returns (string[] contents, uint256[] licenseFees, uint256[] salePrices, uint256[] ideaTotalEarnings, uint256[] licensesSold, address[] ideaOwners)
getIdeasOwnedBy
viewfunction getIdeasOwnedBy(address owner) view returns (uint256[] ideaIds, string[] contents, uint256[] licenseFees, uint256[] salePrices, uint256[] ideaTotalEarnings, uint256[] licensesSold)
ideaEarnings
viewfunction ideaEarnings(uint256) view returns (uint256)
ideas
viewfunction ideas(uint256) view returns (uint256 licenseFee, uint256 salePrice, uint256 licensesSold, string content)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
MAX_IDEA_LENGTH
viewfunction MAX_IDEA_LENGTH() view returns (uint256)
MAX_LICENSES_PER_IDEA
viewfunction MAX_LICENSES_PER_IDEA() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
PROTOCOL_FEE_PERCENT
viewfunction PROTOCOL_FEE_PERCENT() view returns (uint256)
protocolFeeBalance
viewfunction protocolFeeBalance() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
userBalance
viewfunction userBalance(address) view returns (uint256)
userLicenses
viewfunction userLicenses(uint256, address) view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
buyIdea
nonpayablefunction buyIdea(uint256 ideaId)
buyLicenses
nonpayablefunction buyLicenses(uint256[] ideaIds, uint256[] quantities)
createIdea
nonpayablefunction createIdea(string content, uint256 licenseFee, uint256 salePrice) returns (uint256)
donateToIdeas
nonpayablefunction donateToIdeas(uint256[] ideaIds, uint256[] amounts)
IdeaImplementation
nonpayablefunction IdeaImplementation(uint256 ideaId, string url, string description)
listForSale
nonpayablefunction listForSale(uint256 ideaId, uint256 price)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string _metadataURI)
setDegenToken
nonpayablefunction setDegenToken(address _degenToken)
setLicenseFee
nonpayablefunction setLicenseFee(uint256 ideaId, uint256 newFee)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawEarnings
nonpayablefunction withdrawEarnings()
withdrawProtocolFees
nonpayablefunction withdrawProtocolFees()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
DonationReceived
event DonationReceived(uint256 indexed ideaId, address indexed ideaOwner, address indexed actor, uint256 amount, uint256 timestamp)
EarningsWithdrawn
event EarningsWithdrawn(uint256 indexed ideaId, address indexed actor, uint256 amount, uint256 timestamp)
IdeaCreated
event IdeaCreated(uint256 indexed ideaId, address indexed ideaOwner, string content, uint256 licenseFee, uint256 timestamp)
IdeaImplemented
event IdeaImplemented(uint256 indexed ideaId, address indexed ideaOwner, address indexed actor, string content, string url, uint256 timestamp)
IdeaSaleUpdated
event IdeaSaleUpdated(uint256 indexed ideaId, address indexed ideaOwner, uint256 price, uint256 timestamp)
IdeaSold
event IdeaSold(uint256 indexed ideaId, address indexed ideaOwner, address indexed actor, uint256 price, uint256 timestamp)
LicenseFeeUpdated
event LicenseFeeUpdated(uint256 indexed ideaId, address indexed ideaOwner, uint256 newFee, uint256 timestamp)
LicensePurchased
event LicensePurchased(uint256 indexed ideaId, address indexed ideaOwner, address indexed actor, uint256 licenseCount, uint256 licenseFee, uint256 timestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
No errors.
creation bytecode
0x60806040525f600d55348015610013575f5ffd5b50336040518060400160405280601081526020016f49646561205374616765204d6f6e657960801b815250604051806040016040528060048152602001634944454160e01b815250815f908161006991906101cd565b50600161007682826101cd565b505050610088816100e460201b60201c565b506001600b819055600c80546001600160a01b031916734ed4e862860bed51a9570b96d89af5e1b0efefed179055600d55604080516060810190915260248082526148076020830139600f906100de90826101cd565b50610287565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061015d57607f821691505b60208210810361017b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c857805f5260205f20601f840160051c810160208510156101a65750805b601f840160051c820191505b818110156101c5575f81556001016101b2565b50505b505050565b81516001600160401b038111156101e6576101e6610135565b6101fa816101f48454610149565b84610181565b6020601f82116001811461022c575f83156102155750848201515b5f19600385901b1c1916600184901b1784556101c5565b5f84815260208120601f198516915b8281101561025b578785015182556020948501946001909201910161023b565b508482101561027857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b614573806102945f395ff3fe608060405234801561000f575f5ffd5b506004361061026a575f3560e01c8063715018a61161014b578063ba26336f116100bf578063e80d7fec11610084578063e80d7fec14610581578063e985e9c514610594578063ecbe0c90146105cf578063eee904b7146105e2578063f2fde38b14610607578063f39cacbb1461061a575f5ffd5b8063ba26336f14610516578063c87b56dd14610529578063ca13411f1461053c578063d53efa9d1461054f578063da79204714610562575f5ffd5b806395d89b411161011057806395d89b41146104a3578063a22cb465146104ab578063a5528c3a146104be578063abab1866146104d1578063b73c6ce9146104fb578063b88d4fde14610503575f5ffd5b8063715018a61461045657806384c4bd4b1461045e5780638795cccb146104675780638da5cb5b1461046f57806395b5383714610480575f5ffd5b80632f745c59116101e257806342842e0e116101a757806342842e0e146103ee5780634f6ccce714610401578063526423461461041457806355f804b31461041d5780636352211e1461043057806370a0823114610443575f5ffd5b80632f745c591461038057806330e76b681461039357806337de3772146103b85780633a9e6af0146103cb5780633bcc2073146103e6575f5ffd5b8063081812fc11610233578063081812fc14610316578063095ea7b3146103415780630a22d68c1461035457806318160ddd1461035d57806323b872dd146103655780632982de0d14610378575f5ffd5b8062b411651461026e5780630103c92b1461029c57806301ffc9a7146102c957806302c12b4b146102ec57806306fdde0314610301575b5f5ffd5b61028161027c3660046138bf565b61062d565b60405161029396959493929190613904565b60405180910390f35b6102bb6102aa366004613963565b60116020525f908152604090205481565b604051908152602001610293565b6102dc6102d7366004613991565b610738565b6040519015158152602001610293565b6102ff6102fa366004613963565b610762565b005b61030961078c565b60405161029391906139ac565b6103296103243660046138bf565b61081b565b6040516001600160a01b039091168152602001610293565b6102ff61034f3660046139be565b610840565b6102bb600e5481565b6008546102bb565b6102ff6103733660046139e6565b610954565b6102bb600a81565b6102bb61038e3660046139be565b610985565b6103a66103a1366004613a20565b610a19565b60405161029396959493929190613b0d565b6102ff6103c6366004613bd2565b610df6565b6103d3610eb8565b6040516102939796959493929190613c49565b6102bb606481565b6102ff6103fc3660046139e6565b611284565b6102bb61040f3660046138bf565b61129e565b6102bb61040081565b6102ff61042b366004613cdf565b61132e565b61032961043e3660046138bf565b611343565b6102bb610451366004613963565b6113a2565b6102ff611426565b6102bb600d5481565b6102ff611439565b600a546001600160a01b0316610329565b61049361048e3660046138bf565b611591565b6040516102939493929190613d1d565b610309611641565b6102ff6104b9366004613d58565b611650565b6102ff6104cc366004613dcd565b61165f565b6102bb6104df366004613e37565b601360209081525f928352604080842090915290825290205481565b6102ff611a67565b6102ff610511366004613e75565b611bc3565b6102ff610524366004613a20565b611bfb565b6103096105373660046138bf565b611cd0565b6102ff61054a366004613dcd565b611db5565b600c54610329906001600160a01b031681565b6102bb6105703660046138bf565b60126020525f908152604090205481565b6102ff61058f366004613a20565b6123a7565b6102dc6105a2366004613f4f565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b6102bb6105dd366004613f77565b612473565b6105f56105f0366004613963565b61267b565b60405161029396959493929190613fc3565b6102ff610615366004613963565b6129cc565b6102ff6106283660046138bf565b612a45565b60605f5f5f5f5f61063d87612d2a565b6106625760405162461bcd60e51b815260040161065990614037565b60405180910390fd5b5f87815260106020908152604080832080546001820154601290945291909320546002840154600385019391906106988d611343565b8580546106a490614064565b80601f01602080910402602001604051908101604052809291908181526020018280546106d090614064565b801561071b5780601f106106f25761010080835404028352916020019161071b565b820191905f5260205f20905b8154815290600101906020018083116106fe57829003601f168201915b505050505095509650965096509650965096505091939550919395565b5f6001600160e01b0319821663780e9d6360e01b148061075c575061075c82612d46565b92915050565b61076a612d95565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f805461079a90614064565b80601f01602080910402602001604051908101604052809291908181526020018280546107c690614064565b80156108115780601f106107e857610100808354040283529160200191610811565b820191905f5260205f20905b8154815290600101906020018083116107f457829003601f168201915b5050505050905090565b5f61082582612def565b505f908152600460205260409020546001600160a01b031690565b5f61084a82611343565b9050806001600160a01b0316836001600160a01b0316036108b75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610659565b336001600160a01b03821614806108d357506108d381336105a2565b6109455760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610659565b61094f8383612e3f565b505050565b61095e3382612eac565b61097a5760405162461bcd60e51b81526004016106599061409c565b61094f838383612f29565b5f61098f836113a2565b82106109f15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610659565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b606080606080606080868810610a615760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610659565b5f610a6c89896140fd565b610a77906001614110565b9050806001600160401b03811115610a9157610a91613e61565b604051908082528060200260200182016040528015610ac457816020015b6060815260200190600190039081610aaf5790505b509650806001600160401b03811115610adf57610adf613e61565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b509550806001600160401b03811115610b2357610b23613e61565b604051908082528060200260200182016040528015610b4c578160200160208202803683370190505b509450806001600160401b03811115610b6757610b67613e61565b604051908082528060200260200182016040528015610b90578160200160208202803683370190505b509350806001600160401b03811115610bab57610bab613e61565b604051908082528060200260200182016040528015610bd4578160200160208202803683370190505b509250806001600160401b03811115610bef57610bef613e61565b604051908082528060200260200182016040528015610c18578160200160208202803683370190505b509150885b888111610dea575f818152601060205260409020600381018054610c4090614064565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6c90614064565b8015610cb75780601f10610c8e57610100808354040283529160200191610cb7565b820191905f5260205f20905b815481529060010190602001808311610c9a57829003601f168201915b5050505050898c84610cc991906140fd565b81518110610cd957610cd9614123565b6020908102919091010152805488610cf18d856140fd565b81518110610d0157610d01614123565b6020908102919091010152600181015487610d1c8d856140fd565b81518110610d2c57610d2c614123565b6020908102919091018101919091525f8381526012909152604090205486610d548d856140fd565b81518110610d6457610d64614123565b6020908102919091010152600281015485610d7f8d856140fd565b81518110610d8f57610d8f614123565b602002602001018181525050610da482611343565b84610daf8d856140fd565b81518110610dbf57610dbf614123565b6001600160a01b03909216602092830291909101909101525080610de281614137565b915050610c1d565b50509295509295509295565b610dff85612d2a565b610e1b5760405162461bcd60e51b815260040161065990614037565b82610e5e5760405162461bcd60e51b815260206004820152601360248201527255524c2063616e6e6f7420626520656d70747960681b6044820152606401610659565b33610e6886611343565b6001600160a01b0316867f553ec622f3b2d7669b67e8fdea923a7fb7f766b5c9bc6bde35e94876a1cc02988787878742604051610ea9959493929190614177565b60405180910390a45050505050565b60608060608060608060605f610ecd60085490565b9050806001600160401b03811115610ee757610ee7613e61565b604051908082528060200260200182016040528015610f10578160200160208202803683370190505b509750806001600160401b03811115610f2b57610f2b613e61565b604051908082528060200260200182016040528015610f5e57816020015b6060815260200190600190039081610f495790505b509650806001600160401b03811115610f7957610f79613e61565b604051908082528060200260200182016040528015610fa2578160200160208202803683370190505b509550806001600160401b03811115610fbd57610fbd613e61565b604051908082528060200260200182016040528015610fe6578160200160208202803683370190505b509450806001600160401b0381111561100157611001613e61565b60405190808252806020026020018201604052801561102a578160200160208202803683370190505b509350806001600160401b0381111561104557611045613e61565b60405190808252806020026020018201604052801561106e578160200160208202803683370190505b509250806001600160401b0381111561108957611089613e61565b6040519080825280602002602001820160405280156110b2578160200160208202803683370190505b5091505f5b81811015611279575f6110c98261129e565b5f8181526010602052604090208b519192509082908c90859081106110f0576110f0614123565b60200260200101818152505080600301805461110b90614064565b80601f016020809104026020016040519081016040528092919081815260200182805461113790614064565b80156111825780601f1061115957610100808354040283529160200191611182565b820191905f5260205f20905b81548152906001019060200180831161116557829003601f168201915b50505050508a848151811061119957611199614123565b6020026020010181905250805f01548984815181106111ba576111ba614123565b60200260200101818152505080600101548884815181106111dd576111dd614123565b60200260200101818152505060125f8381526020019081526020015f205487848151811061120d5761120d614123565b602002602001018181525050806002015486848151811061123057611230614123565b60200260200101818152505061124582611343565b85848151811061125757611257614123565b6001600160a01b039092166020928302919091019091015250506001016110b7565b505090919293949596565b61094f83838360405180602001604052805f815250611bc3565b5f6112a860085490565b821061130b5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610659565b6008828154811061131e5761131e614123565b905f5260205f2001549050919050565b611336612d95565b600f61094f8284836141f4565b5f818152600260205260408120546001600160a01b03168061075c5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610659565b5f6001600160a01b03821661140b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610659565b506001600160a01b03165f9081526003602052604090205490565b61142e612d95565b6114375f6130ce565b565b611441612d95565b6002600b54036114635760405162461bcd60e51b8152600401610659906142ad565b6002600b55600e80545f909155806114bd5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610659565b600c5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561150b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152f91906142e4565b61154b5760405162461bcd60e51b8152600401610659906142ff565b6040805182815242602082015233916001917f75ebaff45d7ecf31647f8f1ba3273aad172e59724911298cf81ff50a253b5fe991015b60405180910390a3506001600b55565b60106020525f90815260409020805460018201546002830154600384018054939492939192916115c090614064565b80601f01602080910402602001604051908101604052809291908181526020018280546115ec90614064565b80156116375780601f1061160e57610100808354040283529160200191611637565b820191905f5260205f20905b81548152906001019060200180831161161a57829003601f168201915b5050505050905084565b60606001805461079a90614064565b61165b33838361311f565b5050565b6002600b54036116815760405162461bcd60e51b8152600401610659906142ad565b6002600b558281146116d05760405162461bcd60e51b8152602060048201526018602482015277082e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60431b6044820152606401610659565b8261171d5760405162461bcd60e51b815260206004820181905260248201527f4d75737420646f6e61746520746f206174206c65617374206f6e6520696465616044820152606401610659565b5f80808080805b8881101561180d5761174d8a8a8381811061174157611741614123565b90506020020135612d2a565b6117695760405162461bcd60e51b815260040161065990614037565b5f88888381811061177c5761177c614123565b90506020020135116117df5760405162461bcd60e51b815260206004820152602660248201527f446f6e6174696f6e20616d6f756e74206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610659565b8787828181106117f1576117f1614123565b90506020020135866118039190614110565b9550600101611724565b50600c546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015611862573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188691906142e4565b6118a25760405162461bcd60e51b8152600401610659906142ff565b5f5b88811015611a40576064600a8989848181106118c2576118c2614123565b905060200201356118d3919061432e565b6118dd9190614359565b9350838888838181106118f2576118f2614123565b9050602002013561190391906140fd565b92506119268a8a8381811061191a5761191a614123565b90506020020135611343565b91506119328486614110565b6001600160a01b0383165f9081526011602052604081208054929750859290919061195e908490614110565b90915550889050878281811061197657611976614123565b9050602002013560125f8c8c8581811061199257611992614123565b9050602002013581526020019081526020015f205f8282546119b49190614110565b909155503390506001600160a01b0383168b8b848181106119d7576119d7614123565b905060200201357f8e69bc788e5d6621e26938c52b6fbabf44517a4b20cbb5c74bc5456da5d1a2838b8b86818110611a1157611a11614123565b9050602002013542604051611a30929190918252602082015260400190565b60405180910390a46001016118a4565b5083600e5f828254611a529190614110565b90915550506001600b55505050505050505050565b6002600b5403611a895760405162461bcd60e51b8152600401610659906142ad565b6002600b55335f9081526011602052604090205480611aea5760405162461bcd60e51b815260206004820152601760248201527f4e6f206561726e696e677320746f2077697468647261770000000000000000006044820152606401610659565b335f8181526011602052604080822091909155600c54905163a9059cbb60e01b81526004810192909252602482018390526001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611b4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6e91906142e4565b611b8a5760405162461bcd60e51b8152600401610659906142ff565b6040805182815242602082015233915f917f75ebaff45d7ecf31647f8f1ba3273aad172e59724911298cf81ff50a253b5fe99101611581565b611bcd3383612eac565b611be95760405162461bcd60e51b81526004016106599061409c565b611bf5848484846131ec565b50505050565b611c0482612d2a565b611c205760405162461bcd60e51b815260040161065990614037565b33611c2a83611343565b6001600160a01b031614611c755760405162461bcd60e51b81526020600482015260126024820152712737ba103a34329034b232b09037bbb732b960711b6044820152606401610659565b5f828152601060205260409081902082905551339083907fe8cf077e2a5e60e21b72b656808ebf29b56f9f057f90f32fe327971a2717b42590611cc49085904290918252602082015260400190565b60405180910390a35050565b6060611cdb82612def565b5f600f8054611ce990614064565b80601f0160208091040260200160405190810160405280929190818152602001828054611d1590614064565b8015611d605780601f10611d3757610100808354040283529160200191611d60565b820191905f5260205f20905b815481529060010190602001808311611d4357829003601f168201915b505050505090505f815111611d835760405180602001604052805f815250611dae565b80611d8d8461321f565b604051602001611d9e929190614383565b6040516020818303038152906040525b9392505050565b6002600b5403611dd75760405162461bcd60e51b8152600401610659906142ad565b6002600b55828114611e265760405162461bcd60e51b8152602060048201526018602482015277082e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60431b6044820152606401610659565b82611e735760405162461bcd60e51b815260206004820152601d60248201527f4d75737420627579206174206c65617374206f6e65206c6963656e73650000006044820152606401610659565b5f8080856001600160401b03811115611e8e57611e8e613e61565b604051908082528060200260200182016040528015611eb7578160200160208202803683370190505b5090505f5b868110156120c457611ed988888381811061174157611741614123565b611ef55760405162461bcd60e51b815260040161065990614037565b5f868683818110611f0857611f08614123565b9050602002013511611f5c5760405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e2030006044820152606401610659565b5f60105f8a8a85818110611f7257611f72614123565b9050602002013581526020019081526020015f2090506064878784818110611f9c57611f9c614123565b905060200201358260020154611fb29190614110565b111561200b5760405162461bcd60e51b815260206004820152602260248201527f4d6178696d756d206c6963656e73657320776f756c6420626520657863656564604482015261195960f21b6064820152608401610659565b805461204f5760405162461bcd60e51b8152602060048201526013602482015272131a58d95b9cd948199959481b9bdd081cd95d606a1b6044820152606401610659565b86868381811061206157612061614123565b90506020020135815f0154612076919061432e565b83838151811061208857612088614123565b6020026020010181815250508282815181106120a6576120a6614123565b6020026020010151856120b99190614110565b945050600101611ebc565b50600c546040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015612119573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213d91906142e4565b6121595760405162461bcd60e51b8152600401610659906142ff565b5f805b87811015612381575f89898381811061217757612177614123565b9050602002013590505f60105f8381526020019081526020015f2090505f6064600a8786815181106121ab576121ab614123565b60200260200101516121bd919061432e565b6121c79190614359565b90505f818786815181106121dd576121dd614123565b60200260200101516121ef91906140fd565b90506121fa84611343565b95506122068289614110565b6001600160a01b0387165f9081526011602052604081208054929a508392909190612232908490614110565b9250508190555086858151811061224b5761224b614123565b602002602001015160125f8681526020019081526020015f205f8282546122729190614110565b909155508b90508a8681811061228a5761228a614123565b5f878152601360209081526040808320338452825282208054939091029490940135939250906122bb908490614110565b909155508b90508a868181106122d3576122d3614123565b90506020020135836002015f8282546122ec9190614110565b909155503390506001600160a01b038716857f7d396e97d9aa7dc3b534f1751753c502f007fc69982aff5d5debb268f39c24c28e8e8a81811061233157612331614123565b905060200201358b8a8151811061234a5761234a614123565b6020908102919091018101516040805193845291830152429082015260600160405180910390a450506001909201915061215c9050565b5082600e5f8282546123939190614110565b90915550506001600b555050505050505050565b6123b082612d2a565b6123cc5760405162461bcd60e51b815260040161065990614037565b336123d683611343565b6001600160a01b0316146124215760405162461bcd60e51b81526020600482015260126024820152712737ba103a34329034b232b09037bbb732b960711b6044820152606401610659565b5f828152601060205260409081902060010182905551339083907fcc93e21e5a3c2502fa3b91b3763024af24b38dddbe2bd547d2e84fc9cfc8382f90611cc49085904290918252602082015260400190565b5f6002600b54036124965760405162461bcd60e51b8152600401610659906142ad565b6002600b55836124e85760405162461bcd60e51b815260206004820152601760248201527f436f6e74656e742063616e6e6f7420626520656d7074790000000000000000006044820152606401610659565b61040084111561252d5760405162461bcd60e51b815260206004820152601060248201526f436f6e74656e7420746f6f206c6f6e6760801b6044820152606401610659565b600d80549081905f61253e83614137565b919050555061254d338261331b565b60405180608001604052808581526020018481526020015f815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250508381526010602090815260409182902084518155908401516001820155908301516002820155606083015190915060038201906125de9082614397565b50905050336001600160a01b0316817ffa7dae0b9376813cff013c28a5f30dce0e426c8bedf71ae46aa8b52587d335f2888888426040516126229493929190614451565b60405180910390a3821561266d5760408051848152426020820152339183917fcc93e21e5a3c2502fa3b91b3763024af24b38dddbe2bd547d2e84fc9cfc8382f910160405180910390a35b6001600b5595945050505050565b6060806060806060805f61268e886113a2565b9050806001600160401b038111156126a8576126a8613e61565b6040519080825280602002602001820160405280156126d1578160200160208202803683370190505b509650806001600160401b038111156126ec576126ec613e61565b60405190808252806020026020018201604052801561271f57816020015b606081526020019060019003908161270a5790505b509550806001600160401b0381111561273a5761273a613e61565b604051908082528060200260200182016040528015612763578160200160208202803683370190505b509450806001600160401b0381111561277e5761277e613e61565b6040519080825280602002602001820160405280156127a7578160200160208202803683370190505b509350806001600160401b038111156127c2576127c2613e61565b6040519080825280602002602001820160405280156127eb578160200160208202803683370190505b509250806001600160401b0381111561280657612806613e61565b60405190808252806020026020018201604052801561282f578160200160208202803683370190505b5091505f5b818110156129c1575f6128478a83610985565b90508089838151811061285c5761285c614123565b6020908102919091018101919091525f82815260109091526040902060038101805461288790614064565b80601f01602080910402602001604051908101604052809291908181526020018280546128b390614064565b80156128fe5780601f106128d5576101008083540402835291602001916128fe565b820191905f5260205f20905b8154815290600101906020018083116128e157829003601f168201915b505050505089848151811061291557612915614123565b6020026020010181905250805f015488848151811061293657612936614123565b602002602001018181525050806001015487848151811061295957612959614123565b60200260200101818152505060125f8381526020019081526020015f205486848151811061298957612989614123565b60200260200101818152505080600201548584815181106129ac576129ac614123565b60209081029190910101525050600101612834565b505091939550919395565b6129d4612d95565b6001600160a01b038116612a395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610659565b612a42816130ce565b50565b6002600b5403612a675760405162461bcd60e51b8152600401610659906142ad565b6002600b55612a7581612d2a565b612a915760405162461bcd60e51b815260040161065990614037565b5f81815260106020526040812090612aa883611343565b90505f826001015411612af15760405162461bcd60e51b815260206004820152601160248201527049646561206e6f7420666f722073616c6560781b6044820152606401610659565b336001600160a01b03821603612b3d5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610659565b60018201545f6064612b50600a8461432e565b612b5a9190614359565b90505f612b6782846140fd565b600c546040516323b872dd60e01b8152336004820152306024820152604481018690529192506001600160a01b0316906323b872dd906064016020604051808303815f875af1158015612bbc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612be091906142e4565b612bfc5760405162461bcd60e51b8152600401610659906142ff565b81600e5f828254612c0d9190614110565b90915550612c1e9050843388612f29565b600c5460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015612c6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9291906142e4565b612cd65760405162461bcd60e51b815260206004820152601560248201527414d95b1b195c881c185e5b595b9d0819985a5b1959605a1b6044820152606401610659565b6040805184815242602082015233916001600160a01b0387169189917fc2f2b7fda86162d476f373defe1d2c30aa40a67307264baab8e56809696b4158910160405180910390a450506001600b5550505050565b5f908152600260205260409020546001600160a01b0316151590565b5f6001600160e01b031982166380ac58cd60e01b1480612d7657506001600160e01b03198216635b5e139f60e01b145b8061075c57506301ffc9a760e01b6001600160e01b031983161461075c565b600a546001600160a01b031633146114375760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610659565b612df881612d2a565b612a425760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610659565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612e7382611343565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f612eb783611343565b9050806001600160a01b0316846001600160a01b03161480612efd57506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b80612f215750836001600160a01b0316612f168461081b565b6001600160a01b0316145b949350505050565b826001600160a01b0316612f3c82611343565b6001600160a01b031614612fa05760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610659565b6001600160a01b0382166130025760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610659565b61300f8383836001613334565b6130195f82612e3f565b6001600160a01b0383165f9081526003602052604081208054600192906130419084906140fd565b90915550506001600160a01b0382165f90815260036020526040812080546001929061306e908490614110565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b816001600160a01b0316836001600160a01b0316036131805760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610659565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6131f7848484612f29565b61320384848484613399565b611bf55760405162461bcd60e51b815260040161065990614477565b6060815f036132455750506040805180820190915260018152600360fc1b602082015290565b815f5b811561326e578061325881614137565b91506132679050600a83614359565b9150613248565b5f816001600160401b0381111561328757613287613e61565b6040519080825280601f01601f1916602001820160405280156132b1576020820181803683370190505b5090505b8415612f21576132c66001836140fd565b91506132d3600a866144c9565b6132de906030614110565b60f81b8183815181106132f3576132f3614123565b60200101906001600160f81b03191690815f1a905350613314600a86614359565b94506132b5565b61165b828260405180602001604052805f815250613496565b613340848484846134c8565b6001600160a01b0384161580159061336057506001600160a01b03831615155b801561337e5750826001600160a01b0316846001600160a01b031614155b15611bf557505f908152601060205260408120600101555050565b5f6001600160a01b0384163b1561348b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906133dc9033908990889088906004016144dc565b6020604051808303815f875af1925050508015613416575060408051601f3d908101601f191682019092526134139181019061450e565b60015b613471573d808015613443576040519150601f19603f3d011682016040523d82523d5f602084013e613448565b606091505b5080515f036134695760405162461bcd60e51b815260040161065990614477565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612f21565b506001949350505050565b6134a083836135fb565b6134ac5f848484613399565b61094f5760405162461bcd60e51b815260040161065990614477565b60018111156135375760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610659565b816001600160a01b0385166135925761358d81600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6135b5565b836001600160a01b0316856001600160a01b0316146135b5576135b58582613739565b6001600160a01b0384166135d1576135cc816137d6565b6135f4565b846001600160a01b0316846001600160a01b0316146135f4576135f4848261387d565b5050505050565b6001600160a01b0382166136515760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610659565b61365a81612d2a565b156136a75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610659565b6136b45f83836001613334565b6001600160a01b0382165f9081526003602052604081208054600192906136dc908490614110565b90915550505f8181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f6001613745846113a2565b61374f91906140fd565b5f838152600760205260409020549091508082146137a0576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b506001600160a01b039092165f908152600660209081526040808320948352938152838220829055918152600790915290812055565b6008545f906137e7906001906140fd565b5f838152600960205260408120546008805493945090928490811061380e5761380e614123565b905f5260205f2001549050806008838154811061382d5761382d614123565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061386457613864614529565b600190038181905f5260205f20015f9055905550505050565b5f613887836113a2565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b5f602082840312156138cf575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60c081525f61391660c08301896138d6565b6020830197909752506040810194909452606084019290925260808301526001600160a01b031660a090910152919050565b80356001600160a01b038116811461395e575f5ffd5b919050565b5f60208284031215613973575f5ffd5b611dae82613948565b6001600160e01b031981168114612a42575f5ffd5b5f602082840312156139a1575f5ffd5b8135611dae8161397c565b602081525f611dae60208301846138d6565b5f5f604083850312156139cf575f5ffd5b6139d883613948565b946020939093013593505050565b5f5f5f606084860312156139f8575f5ffd5b613a0184613948565b9250613a0f60208501613948565b929592945050506040919091013590565b5f5f60408385031215613a31575f5ffd5b50508035926020909101359150565b5f82825180855260208501945060208160051b830101602085015f5b83811015613a8e57601f19858403018852613a788383516138d6565b6020988901989093509190910190600101613a5c565b50909695505050505050565b5f8151808452602084019350602083015f5b82811015613aca578151865260209586019590910190600101613aac565b5093949350505050565b5f8151808452602084019350602083015f5b82811015613aca5781516001600160a01b0316865260209586019590910190600101613ae6565b60c081525f613b1f60c0830189613a40565b8281036020840152613b318189613a9a565b90508281036040840152613b458188613a9a565b90508281036060840152613b598187613a9a565b90508281036080840152613b6d8186613a9a565b905082810360a0840152613b818185613ad4565b9998505050505050505050565b5f5f83601f840112613b9e575f5ffd5b5081356001600160401b03811115613bb4575f5ffd5b602083019150836020828501011115613bcb575f5ffd5b9250929050565b5f5f5f5f5f60608688031215613be6575f5ffd5b8535945060208601356001600160401b03811115613c02575f5ffd5b613c0e88828901613b8e565b90955093505060408601356001600160401b03811115613c2c575f5ffd5b613c3888828901613b8e565b969995985093965092949392505050565b60e081525f613c5b60e083018a613a9a565b8281036020840152613c6d818a613a40565b90508281036040840152613c818189613a9a565b90508281036060840152613c958188613a9a565b90508281036080840152613ca98187613a9a565b905082810360a0840152613cbd8186613a9a565b905082810360c0840152613cd18185613ad4565b9a9950505050505050505050565b5f5f60208385031215613cf0575f5ffd5b82356001600160401b03811115613d05575f5ffd5b613d1185828601613b8e565b90969095509350505050565b848152836020820152826040820152608060608201525f613d4160808301846138d6565b9695505050505050565b8015158114612a42575f5ffd5b5f5f60408385031215613d69575f5ffd5b613d7283613948565b91506020830135613d8281613d4b565b809150509250929050565b5f5f83601f840112613d9d575f5ffd5b5081356001600160401b03811115613db3575f5ffd5b6020830191508360208260051b8501011115613bcb575f5ffd5b5f5f5f5f60408587031215613de0575f5ffd5b84356001600160401b03811115613df5575f5ffd5b613e0187828801613d8d565b90955093505060208501356001600160401b03811115613e1f575f5ffd5b613e2b87828801613d8d565b95989497509550505050565b5f5f60408385031215613e48575f5ffd5b82359150613e5860208401613948565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f60808587031215613e88575f5ffd5b613e9185613948565b9350613e9f60208601613948565b92506040850135915060608501356001600160401b03811115613ec0575f5ffd5b8501601f81018713613ed0575f5ffd5b80356001600160401b03811115613ee957613ee9613e61565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613f1757613f17613e61565b604052818152828201602001891015613f2e575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f5f60408385031215613f60575f5ffd5b613f6983613948565b9150613e5860208401613948565b5f5f5f5f60608587031215613f8a575f5ffd5b84356001600160401b03811115613f9f575f5ffd5b613fab87828801613b8e565b90989097506020870135966040013595509350505050565b60c081525f613fd560c0830189613a9a565b8281036020840152613fe78189613a40565b90508281036040840152613ffb8188613a9a565b9050828103606084015261400f8187613a9a565b905082810360808401526140238186613a9a565b905082810360a0840152613b818185613a9a565b6020808252601390820152721259195848191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b600181811c9082168061407857607f821691505b60208210810361409657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561075c5761075c6140e9565b8082018082111561075c5761075c6140e9565b634e487b7160e01b5f52603260045260245ffd5b5f60018201614148576141486140e9565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f61418a60608301878961414f565b828103602084015261419d81868861414f565b9150508260408301529695505050505050565b601f82111561094f57805f5260205f20601f840160051c810160208510156141d55750805b601f840160051c820191505b818110156135f4575f81556001016141e1565b6001600160401b0383111561420b5761420b613e61565b61421f836142198354614064565b836141b0565b5f601f841160018114614250575f85156142395750838201355b5f19600387901b1c1916600186901b1783556135f4565b5f83815260208120601f198716915b8281101561427f578685013582556020948501946001909201910161425f565b508682101561429b575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b5f602082840312156142f4575f5ffd5b8151611dae81613d4b565b602080825260159082015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604082015260600190565b808202811582820484141761075c5761075c6140e9565b634e487b7160e01b5f52601260045260245ffd5b5f8261436757614367614345565b500490565b5f81518060208401855e5f93019283525090919050565b5f612f21614391838661436c565b8461436c565b81516001600160401b038111156143b0576143b0613e61565b6143c4816143be8454614064565b846141b0565b6020601f8211600181146143f6575f83156143df5750848201515b5f19600385901b1c1916600184901b1784556135f4565b5f84815260208120601f198516915b828110156144255787850151825560209485019460019092019101614405565b508482101561444257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61446460608301868861414f565b6020830194909452506040015292915050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b5f826144d7576144d7614345565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90613d41908301846138d6565b5f6020828403121561451e575f5ffd5b8151611dae8161397c565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212202ecccef2032bc3f0b78d002eadf62c54a9898d68d7be11a7bdd5b09d953b57af64736f6c634300081c003368747470733a2f2f646567656e6170702e73746f72652f69736d2f6d657461646174612f