0 txs
0 calls
constructor
constructor(uint256 newGlobalMakerFeePercent, uint256 newGlobalTakerFeePercent, address newFeesAddress, string newDomainName, string newDomainVersion)
functions
calculateMakerFees
viewfunction calculateMakerFees(address makerAsset, uint256 makerAmount) view returns (uint256)
calculateTakerFees
viewfunction calculateTakerFees(address takerAsset, uint256 takerAmount) view returns (uint256)
canCreateUnsignedOrder
viewfunction canCreateUnsignedOrder(address makerAddress, address makerAsset, uint256 makerAmount, bytes32 makerOrderId, address takerAddress, address takerAsset, uint256 takerAmount, uint256 expiryDate) view returns (bytes32)
canTakeOrder
viewfunction canTakeOrder(tuple order, bytes32 rTaker, bytes32 sTaker, uint8 vTaker) view returns (bool)
fees
viewfunction fees(address) view returns (uint256 makerFee, uint256 takerFee, bool enabled)
feesAddress
viewfunction feesAddress() view returns (address)
globalMakerFeePercent
viewfunction globalMakerFeePercent() view returns (uint256)
globalTakerFeePercent
viewfunction globalTakerFeePercent() view returns (uint256)
hashSignedOrder
viewfunction hashSignedOrder(tuple unsignedOrder, bytes32 rMaker, bytes32 sMaker, uint8 vMaker) view returns (bytes32)
hashUnsignedOrder
viewfunction hashUnsignedOrder(address makerAddress, address makerAsset, uint256 makerAmount, bytes32 makerOrderId, address takerAddress, address takerAsset, uint256 takerAmount, uint256 expiryDate) view returns (bytes32)
isPaused
viewfunction isPaused() view returns (bool)
isWhitelistedToken
viewfunction isWhitelistedToken(address tokenAddr) view returns (bool)
MAX_ORDER_DURATION
viewfunction MAX_ORDER_DURATION() view returns (uint256)
owner
viewfunction owner() view returns (address)
cancelOrder
nonpayablefunction cancelOrder(tuple order)
disableToken
nonpayablefunction disableToken(address tokenAddr)
enableToken
nonpayablefunction enableToken(address tokenAddr)
enableTokenWithFees
nonpayablefunction enableTokenWithFees(address tokenAddr, uint256 newMakerFeePercent, uint256 newTakerFeePercent)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setTokenFees
nonpayablefunction setTokenFees(address tokenAddr, uint256 newMakerFeePercent, uint256 newTakerFeePercent)
takeOrder
nonpayablefunction takeOrder(tuple order, bytes32 rTaker, bytes32 sTaker, uint8 vTaker)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateFeesAddress
nonpayablefunction updateFeesAddress(address newFeesAddress)
updateGlobalFees
nonpayablefunction updateGlobalFees(uint256 newGlobalMakerFeePercent, uint256 newGlobalTakerFeePercent)
events
OnContractPaused
event OnContractPaused()
OnContractUnpaused
event OnContractUnpaused()
OnFeesAddressUpdated
event OnFeesAddressUpdated()
OnGlobalFeesUpdated
event OnGlobalFeesUpdated(uint256 newGlobalMakerFeePercent, uint256 newGlobalTakerFeePercent)
OnOrderCancelled
event OnOrderCancelled(bytes32 unsignedOrderHash)
OnSwap
event OnSwap(bytes32 unsignedOrderHash)
OnTokenDisabled
event OnTokenDisabled(address tokenAddr)
OnTokenEnabled
event OnTokenEnabled(address tokenAddr, uint256 makerFeePercent, uint256 takerFeePercent)
OnTokenFeesUpdated
event OnTokenFeesUpdated(address tokenAddr, uint256 makerFeePercent, uint256 takerFeePercent)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
No errors.
creation bytecode
0x6101406040523480156200001257600080fd5b506040516200358438038062003584833981016040819052620000359162000363565b6001600055818162000047336200016b565b815160208084019190912082518383012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c00190528051940193909320919290916080523060c05261012052505050506001600160a01b038316620001345760405162461bcd60e51b815260206004820152601460248201527f496e76616c69642046656573206164647265737300000000000000000000000060448201526064015b60405180910390fd5b620001408585620001bd565b5050600580546001600160a01b0319166001600160a01b039290921691909117905550620004029050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6305f5e1008210620002065760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d616b65722066656560781b60448201526064016200012b565b6305f5e10081106200024f5760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642074616b65722066656560781b60448201526064016200012b565b6002829055600381905560408051838152602081018390527f01ff5bc2f5c9d0eb16a7afb832c60fa176e2f06798534c001cb310f698f4a78c910160405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002be57600080fd5b81516001600160401b0380821115620002db57620002db62000296565b604051601f8301601f19908116603f0116810190828211818310171562000306576200030662000296565b816040528381526020925086838588010111156200032357600080fd5b600091505b8382101562000347578582018301518183018401529082019062000328565b83821115620003595760008385830101525b9695505050505050565b600080600080600060a086880312156200037c57600080fd5b85516020870151604088015191965094506001600160a01b0381168114620003a357600080fd5b60608701519093506001600160401b0380821115620003c157600080fd5b620003cf89838a01620002ac565b93506080880151915080821115620003e657600080fd5b50620003f588828901620002ac565b9150509295509295909350565b60805160a05160c05160e05161010051610120516131326200045260003960006125f4015260006126430152600061261e01526000612577015260006125a1015260006125cb01526131326000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806391dd75e7116100de578063bb64d49011610097578063d911c09011610071578063d911c0901461034b578063ebd10e291461035e578063f2fde38b14610371578063faaebd211461038457600080fd5b8063bb64d4901461031c578063c66996bc1461032f578063c690908a1461033857600080fd5b806391dd75e7146102a0578063981a160b146102b35780639fda84ed146102bd578063ab37f486146102c6578063b187bd26146102f5578063b6bf345e1461030957600080fd5b806356171e7b1161014b578063700b1ac511610125578063700b1ac514610258578063715018a61461026b5780638456cb59146102735780638da5cb5b1461027b57600080fd5b806356171e7b146102115780635ca7fc5f146102325780636efc479f1461024557600080fd5b80630c9b340614610193578063126990a4146101a857806323e27a64146101bb5780633f4ba83a146101ce57806341b52600146101d65780634a40b726146101e9575b600080fd5b6101a66101a1366004612c57565b6103d3565b005b6101a66101b6366004612c8a565b610533565b6101a66101c9366004612cac565b610585565b6101a6610669565b6101a66101e4366004612c57565b61070a565b6101fc6101f7366004612cf8565b6108a2565b60405190151581526020015b60405180910390f35b61022461021f366004612d43565b610967565b604051908152602001610208565b610224610240366004612dbe565b610d26565b610224610253366004612e04565b610df4565b6101a6610266366004612e2e565b610e3b565b6101a661110c565b6101a661111e565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610208565b600554610288906001600160a01b031681565b6102246203f48081565b61022460035481565b6101fc6102d4366004612cac565b6001600160a01b031660009081526004602052604090206002015460ff1690565b6005546101fc90600160a01b900460ff1681565b610224610317366004612e04565b61119e565b6101a661032a366004612cf8565b6111cf565b61022460025481565b6101a6610346366004612cac565b6113fa565b610224610359366004612d43565b611555565b6101a661036c366004612cac565b6115d3565b6101a661037f366004612cac565b61171d565b6103b6610392366004612cac565b60046020526000908152604090208054600182015460029092015490919060ff1683565b604080519384526020840192909252151590820152606001610208565b6103db6117c7565b6103e3611821565b6001600160a01b03831660009081526004602052604090206002015460ff1661044b5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881b9bdd081dda1a5d195b1a5cdd1959605a1b60448201526064015b60405180910390fd5b6305f5e100821061046e5760405162461bcd60e51b815260040161044290612e4b565b6305f5e10081106104915760405162461bcd60e51b815260040161044290612e76565b6040805160608082018352848252602080830185815260018486018181526001600160a01b038a1660008181526004865288902096518755925191860191909155516002909401805460ff191694151594909417909355835192835282018590529181018390527fd83fc9ab843eefe23cd17148aa776bc75332548917421bd9ac102b7b0b21276791015b60405180910390a161052e6001600055565b505050565b61053b6117c7565b600554600160a01b900460ff16156105655760405162461bcd60e51b815260040161044290612ea1565b61056d611821565b610577828261187b565b6105816001600055565b5050565b61058d6117c7565b610595611821565b6001600160a01b03811660009081526004602052604090206002015460ff166105f85760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881b9bdd081dda1a5d195b1a5cdd1959605a1b6044820152606401610442565b6001600160a01b038116600081815260046020908152604080832083815560018101939093556002909201805460ff1916905590519182527f8c70f523aa5b049969418995ff0d34c0ff19203f1e2f82028904a69433b8426091015b60405180910390a16106666001600055565b50565b6106716117c7565b600554600160a01b900460ff166106c05760405162461bcd60e51b815260206004820152601360248201527210dbdb9d1c9858dd081b9bdd081c185d5cd959606a1b6044820152606401610442565b6106c8611821565b6005805460ff60a01b191690556040517f9d8f62f82313d017f09243ab8d0fbf32ca519a5a5a6a9d807f18467b1ad3b85790600090a16107086001600055565b565b6107126117c7565b61071a611821565b6001600160a01b0383166107695760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881859191c995cdcc81c995c5d5a5c995960521b6044820152606401610442565b6001600160a01b03831660009081526004602052604090206002015460ff16156107cd5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b88185b1c9958591e48195b98589b1959605a1b6044820152606401610442565b6305f5e10082106107f05760405162461bcd60e51b815260040161044290612e4b565b6305f5e10081106108135760405162461bcd60e51b815260040161044290612e76565b6040805160608082018352848252602080830185815260018486018181526001600160a01b038a1660008181526004865288902096518755925191860191909155516002909401805460ff191694151594909417909355835192835282018590529181018390527f28f66d78b273535a401bfb7ab02bb9ec45a331b25e51f75d9192c3e0acf1191e910161051c565b600554600090600160a01b900460ff16156108cf5760405162461bcd60e51b815260040161044290612ea1565b60006108de8633878787611908565b9150600090506109016108f76080890160608a01612cac565b6020890135610df4565b905060006109138260208a0135612ee0565b9050600061093561092b6101008b0160e08c01612cac565b60808b013561119e565b905060006109478260808c0135612ee0565b90506109558a848388611fd9565b6001955050505050505b949350505050565b600080871180156109785750600083115b6109bd5760405162461bcd60e51b815260206004820152601660248201527513dc99195c88185b5bdd5b9d1cc81c995c5d5a5c995960521b6044820152606401610442565b6001600160a01b038916331480156109d55750333014155b80156109e057503315155b610a245760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206d616b6572206164647265737360581b6044820152606401610442565b6001600160a01b038516301415610a755760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074616b6572206164647265737360581b6044820152606401610442565b846001600160a01b0316896001600160a01b03161415610aa75760405162461bcd60e51b815260040161044290612ef8565b836001600160a01b0316886001600160a01b03161415610b025760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b21039bcb73a3432ba34b1903830b4b960511b6044820152606401610442565b6001600160a01b03881660009081526004602052604090206002015460ff16610b6d5760405162461bcd60e51b815260206004820152601b60248201527f4d616b6572206173736574206e6f742077686974656c697374656400000000006044820152606401610442565b6001600160a01b03841660009081526004602052604090206002015460ff16610bd85760405162461bcd60e51b815260206004820152601b60248201527f54616b6572206173736574206e6f742077686974656c697374656400000000006044820152606401610442565b428211610bf75760405162461bcd60e51b815260040161044290612f3a565b6203f480610c054284612f61565b1115610c4a5760405162461bcd60e51b8152602060048201526014602482015273457870697279206461746520746f6f206c6f6e6760601b6044820152606401610442565b85610c915760405162461bcd60e51b815260206004820152601760248201527613585ad95c8813dc99195c881251081c995c5d5a5c9959604a1b6044820152606401610442565b6001600160a01b038916600090815260066020908152604080832089845290915290205460ff1615610cd55760405162461bcd60e51b815260040161044290612f78565b6000610ce78a8a8a8a8a8a8a8a611555565b60008181526007602052604090205490915060ff1615610d195760405162461bcd60e51b815260040161044290612fa7565b9998505050505050505050565b6000610deb7f9fe805054e30e467df92d61724c26f30a5382ebb9bc16fa642e64205720ffb14610da6610d5f6060890160408a01612cac565b610d6f60808a0160608b01612cac565b60208a01358a35610d8660e08d0160c08e01612cac565b610d976101008e0160e08f01612cac565b8d608001358e60a00135611555565b604080516020810193909352820152606081018690526080810185905260ff841660a082015260c0015b60405160208183030381529060405280519060200120612347565b95945050505050565b6001600160a01b0382166000908152600460205260408120548015610e31576305f5e100610e228483612fd4565b610e2c9190612ff3565b61095f565b6000949350505050565b610e436117c7565b600554600160a01b900460ff1615610e6d5760405162461bcd60e51b815260040161044290612ea1565b610e7d6060820160408301612cac565b6001600160a01b0316336001600160a01b031614610ecd5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21036b0b5b2b960991b6044820152606401610442565b6000610f29610ee26060840160408501612cac565b610ef26080850160608601612cac565b60208501358535610f0960e0880160c08901612cac565b610f1a610100890160e08a01612cac565b608089013560a08a0135611555565b9050610f5281610f4161016085016101408601613015565b84610100013585610120013561239b565b6001600160a01b0316610f6b6060840160408501612cac565b6001600160a01b031614610fbb5760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206d616b6572207369676e617475726560481b6044820152606401610442565b60008181526007602052604090205460ff1615610fea5760405162461bcd60e51b815260040161044290612fa7565b60066000610ffe6060850160408601612cac565b6001600160a01b03168152602080820192909252604090810160009081208535825290925290205460ff16156110465760405162461bcd60e51b815260040161044290612f78565b4260a0830135116110695760405162461bcd60e51b815260040161044290612f3a565b600081815260076020526040808220805460ff191660019081179091559160069161109a9060608701908701612cac565b6001600160a01b0316815260208082019290925260409081016000908120863582528352819020805460ff19169315159390931790925590518281527f77b69113dd074b49efd3a6771dcf02ed6c07dad1f825c8b1a1c5a2c17ebd4ddb910160405180910390a1506106666001600055565b611114611821565b61070860006123c3565b6111266117c7565b600554600160a01b900460ff16156111505760405162461bcd60e51b815260040161044290612ea1565b611158611821565b6005805460ff60a01b1916600160a01b1790556040517fca68cefa7e3e9a1a73147be87b871a20359eb5c46d31dd19c3fed9b2725f775e90600090a16107086001600055565b6001600160a01b0382166000908152600460205260408120600101548015610e31576305f5e100610e228483612fd4565b6111d76117c7565b600554600160a01b900460ff16156112015760405162461bcd60e51b815260040161044290612ea1565b6000806112118633878787611908565b9092509050600060048161122b60808a0160608b01612cac565b6001600160a01b03168152602081019190915260400160009081205491508115611271576305f5e10061126260208a013584612fd4565b61126c9190612ff3565b611274565b60005b905060006112868260208b0135612ee0565b9050600060048161129e6101008d0160e08e01612cac565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015490506000816000146112f0576305f5e1006112e160808d013584612fd4565b6112eb9190612ff3565b6112f3565b60005b905060006113058260808e0135612ee0565b90506001600760008a815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008e600001604001602081019061134f9190612cac565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008e60000160000135815260200190815260200160002060006101000a81548160ff0219169083151502179055506113af8c600001858388868c612415565b6040518881527fdd01808f194d5d88fbf3f9a897e6dd8fd69dc8847f8b05605c4393a5a37b84249060200160405180910390a150505050505050506113f46001600055565b50505050565b6114026117c7565b61140a611821565b6001600160a01b0381166114595760405162461bcd60e51b8152602060048201526016602482015275151bdad95b881859191c995cdcc81c995c5d5a5c995960521b6044820152606401610442565b6001600160a01b03811660009081526004602052604090206002015460ff16156114bd5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b88185b1c9958591e48195b98589b1959605a1b6044820152606401610442565b604080516060808201835260028054835260038054602080860191825260018688018181526001600160a01b038a166000818152600485528a90209851895593519188019190915551958401805460ff19169615159690961790955591549054855192835293820152928301919091527f28f66d78b273535a401bfb7ab02bb9ec45a331b25e51f75d9192c3e0acf1191e9101610654565b604080517f320c0a192153cc542f40dea6d22647724e5485dea836468805eac98048f300b96020820152908101869052606081018790526001600160a01b03808a16608083015280891660a083015260c0820184905260e082018390528086166101008301528416610120820152600090610d199061014001610dd0565b6115db6117c7565b600554600160a01b900460ff16156116055760405162461bcd60e51b815260040161044290612ea1565b61160d611821565b6001600160a01b0381161580159061162e57506001600160a01b0381163014155b6116715760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642046656573206164647265737360601b6044820152606401610442565b6005546001600160a01b03828116911614156116cf5760405162461bcd60e51b815260206004820152601860248201527f46656573206164647265737320616c72656164792073657400000000000000006044820152606401610442565b600580546001600160a01b0319166001600160a01b0383161790556040517fe50e94f34cc9cc2c15697195c89b8d9bc77bba0db40902905ee3793d7f7181d790600090a16106666001600055565b6117256117c7565b600554600160a01b900460ff161561174f5760405162461bcd60e51b815260040161044290612ea1565b611757611821565b6001600160a01b0381161580159061177857506001600160a01b0381163014155b6117b45760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610442565b6117bd816123c3565b6106666001600055565b6002600054141561181a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610442565b6002600055565b6001546001600160a01b031633146107085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610442565b6305f5e100821061189e5760405162461bcd60e51b815260040161044290612e4b565b6305f5e10081106118c15760405162461bcd60e51b815260040161044290612e76565b6002829055600381905560408051838152602081018390527f01ff5bc2f5c9d0eb16a7afb832c60fa176e2f06798534c001cb310f698f4a78c910160405180910390a15050565b6000806001600160a01b0386161580159061192c57506001600160a01b0386163014155b801561195957506119436060880160408901612cac565b6001600160a01b0316866001600160a01b031614155b6119965760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b2b73232b960911b6044820152606401610442565b60006119a860e0890160c08a01612cac565b6001600160a01b0316146119cb576119c660e0880160c08901612cac565b6119cd565b855b90506020870135158015906119e55750608087013515155b611a2a5760405162461bcd60e51b815260206004820152601660248201527513dc99195c88185b5bdd5b9d1cc81c995c5d5a5c995960521b6044820152606401610442565b30611a3b6060890160408a01612cac565b6001600160a01b031614158015611a6b57506000611a5f6060890160408a01612cac565b6001600160a01b031614155b611aaf5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206d616b6572206164647265737360581b6044820152606401610442565b806001600160a01b0316866001600160a01b031614611b085760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642074616b6572206164647265737360581b6044820152606401610442565b611b1860e0880160c08901612cac565b6001600160a01b0316611b316060890160408a01612cac565b6001600160a01b03161415611b585760405162461bcd60e51b815260040161044290612ef8565b611b69610100880160e08901612cac565b6001600160a01b0316611b826080890160608a01612cac565b6001600160a01b03161415611bd25760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b21039bcb73a3432ba34b1903830b4b960511b6044820152606401610442565b60046000611be660808a0160608b01612cac565b6001600160a01b0316815260208101919091526040016000206002015460ff16611c525760405162461bcd60e51b815260206004820152601b60248201527f4d616b6572206173736574206e6f742077686974656c697374656400000000006044820152606401610442565b60046000611c676101008a0160e08b01612cac565b6001600160a01b0316815260208101919091526040016000206002015460ff16611cd35760405162461bcd60e51b815260206004820152601b60248201527f54616b6572206173736574206e6f742077686974656c697374656400000000006044820152606401610442565b611d2d611ce66060890160408a01612cac565b611cf660808a0160608b01612cac565b60208a01358a35611d0d60e08d0160c08e01612cac565b611d1e6101008e0160e08f01612cac565b60808e013560a08f0135611555565b9150611d5682611d456101608a016101408b01613015565b8961010001358a610120013561239b565b6001600160a01b0316611d6f6060890160408a01612cac565b6001600160a01b031614611dbf5760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206d616b6572207369676e617475726560481b6044820152606401610442565b4260a088013511611de25760405162461bcd60e51b815260040161044290612f3a565b6203f480611df44260a08a0135612f61565b1115611e395760405162461bcd60e51b8152602060048201526014602482015273457870697279206461746520746f6f206c6f6e6760601b6044820152606401610442565b8635611e815760405162461bcd60e51b815260206004820152601760248201527613585ad95c8813dc99195c881251081c995c5d5a5c9959604a1b6044820152606401610442565b60008281526007602052604090205460ff1615611eb05760405162461bcd60e51b815260040161044290612fa7565b60066000611ec460608a0160408b01612cac565b6001600160a01b03168152602080820192909252604090810160009081208a35825290925290205460ff1615611f0c5760405162461bcd60e51b815260040161044290612f78565b6000611f1e60e0890160c08a01612cac565b6001600160a01b031614611fcf576000611f508861010081013561012082013561024061016084016101408501613015565b9050611f5e8185888861239b565b6001600160a01b0316611f7760e08a0160c08b01612cac565b6001600160a01b031614611fcd5760405162461bcd60e51b815260206004820152601760248201527f496e76616c69642074616b6572207369676e61747572650000000000000000006044820152606401610442565b505b9550959350505050565b82611fea6080860160608701612cac565b6001600160a01b031663dd62ed3e6120086060880160408901612cac565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015612052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120769190613030565b10156120c45760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420616c6c6f77616e63653a206d616b65720000006044820152606401610442565b816120d6610100860160e08701612cac565b604051636eb1769f60e11b81526001600160a01b038481166004830152306024830152919091169063dd62ed3e90604401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190613030565b10156121965760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420616c6c6f77616e63653a2074616b65720000006044820152606401610442565b826121a76080860160608701612cac565b6001600160a01b03166370a082316121c56060880160408901612cac565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222d9190613030565b101561227b5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e742062616c616e63653a206d616b657200000000006044820152606401610442565b8161228d610100860160e08701612cac565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa1580156122d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f99190613030565b10156113f45760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e742062616c616e63653a2074616b657200000000006044820152606401610442565b600061239561235461256a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b60008060006123ac87878787612691565b915091506123b981612755565b5095945050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61242186868684611fd9565b6124776124346080880160608901612cac565b6124446060890160408a01612cac565b876040518060400160405280601481526020017313585ad95c8819195c1bdcda5d0819985a5b195960621b8152506128a3565b6124bf61248b610100880160e08901612cac565b82866040518060400160405280601481526020017315185ad95c8819195c1bdcda5d0819985a5b195960621b8152506128a3565b82156124ea576124ea6124d86080880160608901612cac565b6005546001600160a01b0316856129ae565b811561251657612516612504610100880160e08901612cac565b6005546001600160a01b0316846129ae565b61254461252a610100880160e08901612cac565b61253a6060890160408a01612cac565b88608001356129ae565b6125626125576080880160608901612cac565b8288602001356129ae565b505050505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156125c357507f000000000000000000000000000000000000000000000000000000000000000046145b156125ed57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126c8575060009050600361274c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561271c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166127455760006001925092505061274c565b9150600090505b94509492505050565b600081600481111561276957612769613049565b14156127725750565b600181600481111561278657612786613049565b14156127d45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610442565b60028160048111156127e8576127e8613049565b14156128365760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610442565b600381600481111561284a5761284a613049565b14156106665760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610442565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156128ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290e9190613030565b905061291c85853086612a11565b6129268382612ee0565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa15801561296a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298e9190613030565b1482906125625760405162461bcd60e51b8152600401610442919061308b565b6040516001600160a01b03831660248201526044810182905261052e90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612a49565b6040516001600160a01b03808516602483015283166044820152606481018290526113f49085906323b872dd60e01b906084016129da565b6000612a9e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b1b9092919063ffffffff16565b80519091501561052e5780806020019051810190612abc91906130be565b61052e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610442565b606061095f848460008585600080866001600160a01b03168587604051612b4291906130e0565b60006040518083038185875af1925050503d8060008114612b7f576040519150601f19603f3d011682016040523d82523d6000602084013e612b84565b606091505b5091509150612b9587838387612ba0565b979650505050505050565b60608315612c0c578251612c05576001600160a01b0385163b612c055760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610442565b508161095f565b61095f8383815115612c215781518083602001fd5b8060405162461bcd60e51b8152600401610442919061308b565b80356001600160a01b0381168114612c5257600080fd5b919050565b600080600060608486031215612c6c57600080fd5b612c7584612c3b565b95602085013595506040909401359392505050565b60008060408385031215612c9d57600080fd5b50508035926020909101359150565b600060208284031215612cbe57600080fd5b612cc782612c3b565b9392505050565b60006101608284031215612ce157600080fd5b50919050565b803560ff81168114612c5257600080fd5b6000806000806101c08587031215612d0f57600080fd5b612d198686612cce565b935061016085013592506101808501359150612d386101a08601612ce7565b905092959194509250565b600080600080600080600080610100898b031215612d6057600080fd5b612d6989612c3b565b9750612d7760208a01612c3b565b96506040890135955060608901359450612d9360808a01612c3b565b9350612da160a08a01612c3b565b925060c0890135915060e089013590509295985092959890939650565b600080600080848603610160811215612dd657600080fd5b61010080821215612de657600080fd5b8695508501359350506101208401359150612d386101408501612ce7565b60008060408385031215612e1757600080fd5b612e2083612c3b565b946020939093013593505050565b60006101608284031215612e4157600080fd5b612cc78383612cce565b602080825260119082015270496e76616c6964206d616b65722066656560781b604082015260600190565b602080825260119082015270496e76616c69642074616b65722066656560781b604082015260600190565b6020808252600f908201526e10dbdb9d1c9858dd081c185d5cd959608a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612ef357612ef3612eca565b500190565b60208082526022908201527f4d616b657220616e642074616b65722063616e6e6f74206265207468652073616040820152616d6560f01b606082015260800190565b6020808252600d908201526c13dc99195c88195e1c1a5c9959609a1b604082015260600190565b600082821015612f7357612f73612eca565b500390565b60208082526015908201527413585ad95c88125108185b1c9958591e481d5cd959605a1b604082015260600190565b60208082526013908201527227b93232b91030b63932b0b23c903a30b5b2b760691b604082015260600190565b6000816000190483118215151615612fee57612fee612eca565b500290565b60008261301057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561302757600080fd5b612cc782612ce7565b60006020828403121561304257600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b60005b8381101561307a578181015183820152602001613062565b838111156113f45750506000910152565b60208152600082518060208401526130aa81604085016020870161305f565b601f01601f19169190910160400192915050565b6000602082840312156130d057600080fd5b81518015158114612cc757600080fd5b600082516130f281846020870161305f565b919091019291505056fea2646970667358221220d9614edc7b523d5d7eb27c9717e5554ee0cb2da5ddbf332de19eaef427482e5f64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000c3500000000000000000000000000000000000000000000000000000000000011170000000000000000000000000d8c48c19413727acb62e051ace11daf31a754c4700000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000e4f54432054657374202d204152420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004302e314100000000000000000000000000000000000000000000000000000000