UNPKG

test-contracts-sovryn

Version:

Smart contracts for the Sovryn protocol and external integrations.

764 lines (763 loc) 46.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "PreviousLoanTokenSettingsLowerAdmin", "sourceName": "contracts/mockup/previousLoanToken/PreviousLoanTokenSettingsLowerAdmin.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "burner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "assetAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "address", "name": "loanToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "loanAmount", "type": "uint256" } ], "name": "FlashBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "assetAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "limits", "type": "uint256[]" } ], "name": "SetTransactionLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "payable": false, "stateMutability": "nonpayable", "type": "fallback" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "baseRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "checkpointSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address[]", "name": "collateralTokens", "type": "address[]" }, { "internalType": "bool[]", "name": "isTorqueLoans", "type": "bool[]" } ], "name": "disableLoanParams", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_loanTokenAddress", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "name": "init", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "initialPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "kinkLevel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "loanParamsIds", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "loanTokenAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "lowUtilBaseRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "lowUtilRateMultiplier", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "maxScaleRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "rateMultiplier", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "_baseRate", "type": "uint256" }, { "internalType": "uint256", "name": "_rateMultiplier", "type": "uint256" }, { "internalType": "uint256", "name": "_lowUtilBaseRate", "type": "uint256" }, { "internalType": "uint256", "name": "_lowUtilRateMultiplier", "type": "uint256" }, { "internalType": "uint256", "name": "_targetLevel", "type": "uint256" }, { "internalType": "uint256", "name": "_kinkLevel", "type": "uint256" }, { "internalType": "uint256", "name": "_maxScaleRate", "type": "uint256" } ], "name": "setDemandCurve", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "limits", "type": "uint256[]" } ], "name": "setTransactionLimits", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "components": [ { "internalType": "bytes32", "name": "id", "type": "bytes32" }, { "internalType": "bool", "name": "active", "type": "bool" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "loanToken", "type": "address" }, { "internalType": "address", "name": "collateralToken", "type": "address" }, { "internalType": "uint256", "name": "minInitialMargin", "type": "uint256" }, { "internalType": "uint256", "name": "maintenanceMargin", "type": "uint256" }, { "internalType": "uint256", "name": "maxLoanTerm", "type": "uint256" } ], "internalType": "struct LoanParamsStruct.LoanParams[]", "name": "loanParamsList", "type": "tuple[]" }, { "internalType": "bool", "name": "areTorqueLoans", "type": "bool" } ], "name": "setupLoanParams", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "sovrynContractAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "targetLevel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "string", "name": "funcId", "type": "string" }, { "internalType": "bool", "name": "isPaused", "type": "bool" } ], "name": "toggleFunctionPause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "transactionLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "wrbtcTokenAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b611cc1806100826000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063d97206a4116100a2578063e697d2ee11610071578063e697d2ee1461035c578063ee60c9331461036f578063ef2b0b3914610382578063f2fde38b1461038a576101cf565b8063d97206a414610310578063dd62ed3e14610323578063e3cded6114610336578063e41b07e314610349576101cf565b8063b2b45df5116100de578063b2b45df5146102d8578063ba0e43bf146102ed578063d759dbeb146102f5578063d8f06c83146102fd576101cf565b80638da5cb5b146102b35780638f32d59b146102bb57806395d89b41146102d0576101cf565b80633291c11a1161017157806370a082311161014b57806370a0823114610288578063797bf3851461029b5780637b7933b4146102a35780637e37c08c146102ab576101cf565b80633291c11a14610265578063330691ac1461027857806356e07d7014610280576101cf565b80631d0806ae116101ad5780631d0806ae146102385780631f68f20a146102405780632f6b600d14610248578063313ce56714610250576101cf565b806306947a3a146101f057806306fdde031461020e57806318160ddd14610223575b60405162461bcd60e51b81526004016101e790611ac3565b60405180910390fd5b6101f861039d565b6040516102059190611a11565b60405180910390f35b6102166103ac565b6040516102059190611a82565b61022b610437565b6040516102059190611a74565b61022b61043e565b61022b610444565b6101f861044a565b610258610459565b6040516102059190611b13565b61022b610273366004611440565b610462565b61022b610474565b61022b61047a565b61022b6102963660046111cd565b610480565b6101f861049b565b61022b6104af565b61022b6104b5565b6101f86104bb565b6102c36104ca565b6040516102059190611a66565b6102166104f0565b6102eb6102e636600461122d565b61054b565b005b61022b610662565b61022b610668565b6102eb61030b3660046113a7565b61066e565b6102eb61031e36600461145e565b610846565b61022b6103313660046111f3565b610956565b6102eb61034436600461140b565b610983565b61022b6103573660046111cd565b610a40565b6102eb61036a3660046112a8565b610a52565b6102eb61037d366004611316565b610c0c565b61022b610ceb565b6102eb6103983660046111cd565b610cf1565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b820191906000526020600020905b81548152906001019060200180831161041257829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b03166104e1610d21565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b6105536104ca565b61056f5760405162461bcd60e51b81526004016101e790611af3565b60048054610100600160a81b0319166101006001600160a01b0386160217905581516105a2906002906020850190610dd3565b5080516105b6906003906020840190610dd3565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063d91908101906114fa565b6004805460ff191660ff929092169190911790555050670de0b6b3a7640000600e5550565b60095481565b60075481565b33301480610694575061067f6104bb565b6001600160a01b0316336001600160a01b0316145b6106b05760405162461bcd60e51b81526004016101e790611af3565b60045460609061010090046001600160a01b031660005b845181101561073a57818582815181106106dd57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361070f576224ea00610712565b60005b62ffffff1685828151811061072357fe5b602090810291909101015160e001526001016106c7565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e9061076b908790600401611a55565b600060405180830381600087803b15801561078557600080fd5b505af1158015610799573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c19190810190611373565b915060005b825181101561083f578281815181106107db57fe5b6020026020010151601060008784815181106107f357fe5b602002602001015160800151876040516020016108119291906119b9565b60408051601f19818403018152918152815160209283012083529082019290925201600020556001016107c6565b5050505050565b3330148061086c57506108576104bb565b6001600160a01b0316336001600160a01b0316145b6108885760405162461bcd60e51b81526004016101e790611af3565b68056bc75e2d631000006108a2878963ffffffff610d2516565b11156108c05760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d631000006108da858763ffffffff610d2516565b11156108f85760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d63100000831115801561091a575068056bc75e2d631000008211155b6109365760405162461bcd60e51b81526004016101e790611ae3565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b038083166000908152601460209081526040808320938516835292905220545b92915050565b333014806109a957506109946104bb565b6001600160a01b0316336001600160a01b0316145b6109c55760405162461bcd60e51b81526004016101e790611af3565b6000826040516020016109d89190611a05565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a209291906119df565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b33301480610a785750610a636104bb565b6001600160a01b0316336001600160a01b0316145b610a945760405162461bcd60e51b81526004016101e790611af3565b828114610ab35760405162461bcd60e51b81526004016101e790611ab3565b604080518481526020808602820101909152606090848015610adf578160200160208202803883390190505b50905060005b84811015610ba2576000868683818110610afb57fe5b9050602002016020610b1091908101906111cd565b858584818110610b1c57fe5b9050602002016020610b3191908101906113ed565b604051602001610b429291906119b9565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610b7d57fe5b6020908102919091018101919091526000918252601090526040812055600101610ae5565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610bd3908490600401611a44565b600060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050505050505050565b610c146104ca565b610c305760405162461bcd60e51b81526004016101e790611af3565b8051825114610c515760405162461bcd60e51b81526004016101e790611b03565b60005b8251811015610cad57818181518110610c6957fe5b602002602001015160126000858481518110610c8157fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610c54565b507f9bbd2de400810774339120e2f8a2b517ed748595e944529bba8ebabf314d05918282604051610cdf929190611a1f565b60405180910390a15050565b600b5481565b610cf96104ca565b610d155760405162461bcd60e51b81526004016101e790611af3565b610d1e81610d51565b50565b3390565b600082820183811015610d4a5760405162461bcd60e51b81526004016101e790611aa3565b9392505050565b6001600160a01b038116610d775760405162461bcd60e51b81526004016101e790611a93565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e1457805160ff1916838001178555610e41565b82800160010185558215610e41579182015b82811115610e41578251825591602001919060010190610e26565b50610e4d929150610e51565b5090565b61043b91905b80821115610e4d5760008155600101610e57565b803561097d81611c4f565b60008083601f840112610e8857600080fd5b5081356001600160401b03811115610e9f57600080fd5b602083019150836020820283011115610eb757600080fd5b9250929050565b600082601f830112610ecf57600080fd5b8135610ee2610edd82611b47565b611b21565b91508181835260208401935060208101905083856020840282011115610f0757600080fd5b60005b83811015610f335781610f1d8882610e6b565b8452506020928301929190910190600101610f0a565b5050505092915050565b600082601f830112610f4e57600080fd5b8151610f5c610edd82611b47565b91508181835260208401935060208101905083856020840282011115610f8157600080fd5b60005b83811015610f335781610f9788826110a7565b8452506020928301929190910190600101610f84565b600082601f830112610fbe57600080fd5b8135610fcc610edd82611b47565b9150818183526020840193506020810190508385610100840282011115610ff257600080fd5b60005b83811015610f3357816110088882611101565b8452506020909201916101009190910190600101610ff5565b600082601f83011261103257600080fd5b8135611040610edd82611b47565b9150818183526020840193506020810190508385602084028201111561106557600080fd5b60005b83811015610f33578161107b888261109c565b8452506020928301929190910190600101611068565b803561097d81611c63565b803561097d81611c6c565b805161097d81611c6c565b600082601f8301126110c357600080fd5b81356110d1610edd82611b67565b915080825260208301602083018583830111156110ed57600080fd5b6110f8838284611bd5565b50505092915050565b6000610100828403121561111457600080fd5b61111f610100611b21565b9050600061112d848461109c565b825250602061113e84848301611091565b602083015250604061115284828501610e6b565b604083015250606061116684828501610e6b565b606083015250608061117a84828501610e6b565b60808301525060a061118e8482850161109c565b60a08301525060c06111a28482850161109c565b60c08301525060e06111b68482850161109c565b60e08301525092915050565b805161097d81611c75565b6000602082840312156111df57600080fd5b60006111eb8484610e6b565b949350505050565b6000806040838503121561120657600080fd5b60006112128585610e6b565b925050602061122385828601610e6b565b9150509250929050565b60008060006060848603121561124257600080fd5b600061124e8686610e6b565b93505060208401356001600160401b0381111561126a57600080fd5b611276868287016110b2565b92505060408401356001600160401b0381111561129257600080fd5b61129e868287016110b2565b9150509250925092565b600080600080604085870312156112be57600080fd5b84356001600160401b038111156112d457600080fd5b6112e087828801610e76565b945094505060208501356001600160401b038111156112fe57600080fd5b61130a87828801610e76565b95989497509550505050565b6000806040838503121561132957600080fd5b82356001600160401b0381111561133f57600080fd5b61134b85828601610ebe565b92505060208301356001600160401b0381111561136757600080fd5b61122385828601611021565b60006020828403121561138557600080fd5b81516001600160401b0381111561139b57600080fd5b6111eb84828501610f3d565b600080604083850312156113ba57600080fd5b82356001600160401b038111156113d057600080fd5b6113dc85828601610fad565b925050602061122385828601611091565b6000602082840312156113ff57600080fd5b60006111eb8484611091565b6000806040838503121561141e57600080fd5b82356001600160401b0381111561143457600080fd5b6113dc858286016110b2565b60006020828403121561145257600080fd5b60006111eb848461109c565b600080600080600080600060e0888a03121561147957600080fd5b60006114858a8a61109c565b97505060206114968a828b0161109c565b96505060406114a78a828b0161109c565b95505060606114b88a828b0161109c565b94505060806114c98a828b0161109c565b93505060a06114da8a828b0161109c565b92505060c06114eb8a828b0161109c565b91505092959891949750929550565b60006020828403121561150c57600080fd5b60006111eb84846111c2565b6000611524838361154d565b505060200190565b600061152483836116ca565b60006115448383611907565b50506101000190565b61155681611ba6565b82525050565b61155661156882611ba6565b611c0d565b600061157882611b94565b6115828185611b98565b935061158d83611b8e565b8060005b838110156115bb5781516115a58882611518565b97506115b083611b8e565b925050600101611591565b509495945050505050565b60006115d182611b94565b6115db8185611b98565b93506115e683611b8e565b8060005b838110156115bb5781516115fe888261152c565b975061160983611b8e565b9250506001016115ea565b600061161f82611b94565b6116298185611b98565b935061163483611b8e565b8060005b838110156115bb57815161164c8882611538565b975061165783611b8e565b925050600101611638565b600061166d82611b94565b6116778185611b98565b935061168283611b8e565b8060005b838110156115bb57815161169a888261152c565b97506116a583611b8e565b925050600101611686565b61155681611bb1565b6115566116c582611bb1565b611c18565b6115568161043b565b6115566116df82611bb6565b61043b565b60006116ef82611b94565b6116f98185611ba1565b9350611709818560208601611be1565b9290920192915050565b600061171e82611b94565b6117288185611b98565b9350611738818560208601611be1565b61174181611c39565b9093019392505050565b6000611758602683611b98565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006117a0601b83611b98565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006117d9600e83611b98565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000611803603283611b98565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b6000611857601583611b98565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611888600f83611b98565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006118b3600c83611b98565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006118db601883611b98565b7f6d69736d617463686564206172726179206c656e677468730000000000000000815260200192915050565b805161010083019061191984826116ca565b50602082015161192c60208501826116b0565b50604082015161193f604085018261154d565b506060820151611952606085018261154d565b506080820151611965608085018261154d565b5060a082015161197860a08501826116ca565b5060c082015161198b60c08501826116ca565b5060e082015161199e60e08501826116ca565b50505050565b6115566116df8261043b565b61155681611bcf565b60006119c5828561155c565b6014820191506119d582846116b9565b5060010192915050565b60006119eb82856116d3565b6004820191506119fb82846119a4565b5060200192915050565b6000610d4a82846116e4565b6020810161097d828461154d565b60408082528101611a30818561156d565b905081810360208301526111eb8184611662565b60208082528101610d4a81846115c6565b60208082528101610d4a8184611614565b6020810161097d82846116b0565b6020810161097d82846116ca565b60208082528101610d4a8184611713565b6020808252810161097d8161174b565b6020808252810161097d81611793565b6020808252810161097d816117cc565b6020808252810161097d816117f6565b6020808252810161097d8161184a565b6020808252810161097d8161187b565b6020808252810161097d816118a6565b6020808252810161097d816118ce565b6020810161097d82846119b0565b6040518181016001600160401b0381118282101715611b3f57600080fd5b604052919050565b60006001600160401b03821115611b5d57600080fd5b5060209081020190565b60006001600160401b03821115611b7d57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061097d82611bc3565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b83811015611bfc578181015183820152602001611be4565b8381111561199e5750506000910152565b600061097d82611c23565b600061097d82611c2e565b600061097d82611c49565b600061097d82611c43565b601f01601f191690565b60f81b90565b60601b90565b611c5881611ba6565b8114610d1e57600080fd5b611c5881611bb1565b611c588161043b565b611c5881611bcf56fea365627a7a72315820cbdd2e279b2d20be651e448847d6f8d5ff9a0eada105cdb6d26e7f6f4f263d126c6578706572696d656e74616cf564736f6c63430005110040", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638da5cb5b11610104578063d97206a4116100a2578063e697d2ee11610071578063e697d2ee1461035c578063ee60c9331461036f578063ef2b0b3914610382578063f2fde38b1461038a576101cf565b8063d97206a414610310578063dd62ed3e14610323578063e3cded6114610336578063e41b07e314610349576101cf565b8063b2b45df5116100de578063b2b45df5146102d8578063ba0e43bf146102ed578063d759dbeb146102f5578063d8f06c83146102fd576101cf565b80638da5cb5b146102b35780638f32d59b146102bb57806395d89b41146102d0576101cf565b80633291c11a1161017157806370a082311161014b57806370a0823114610288578063797bf3851461029b5780637b7933b4146102a35780637e37c08c146102ab576101cf565b80633291c11a14610265578063330691ac1461027857806356e07d7014610280576101cf565b80631d0806ae116101ad5780631d0806ae146102385780631f68f20a146102405780632f6b600d14610248578063313ce56714610250576101cf565b806306947a3a146101f057806306fdde031461020e57806318160ddd14610223575b60405162461bcd60e51b81526004016101e790611ac3565b60405180910390fd5b6101f861039d565b6040516102059190611a11565b60405180910390f35b6102166103ac565b6040516102059190611a82565b61022b610437565b6040516102059190611a74565b61022b61043e565b61022b610444565b6101f861044a565b610258610459565b6040516102059190611b13565b61022b610273366004611440565b610462565b61022b610474565b61022b61047a565b61022b6102963660046111cd565b610480565b6101f861049b565b61022b6104af565b61022b6104b5565b6101f86104bb565b6102c36104ca565b6040516102059190611a66565b6102166104f0565b6102eb6102e636600461122d565b61054b565b005b61022b610662565b61022b610668565b6102eb61030b3660046113a7565b61066e565b6102eb61031e36600461145e565b610846565b61022b6103313660046111f3565b610956565b6102eb61034436600461140b565b610983565b61022b6103573660046111cd565b610a40565b6102eb61036a3660046112a8565b610a52565b6102eb61037d366004611316565b610c0c565b61022b610ceb565b6102eb6103983660046111cd565b610cf1565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b820191906000526020600020905b81548152906001019060200180831161041257829003601f168201915b505050505081565b6015545b90565b600e5481565b60055481565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b03166104e1610d21565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561042f5780601f106104045761010080835404028352916020019161042f565b6105536104ca565b61056f5760405162461bcd60e51b81526004016101e790611af3565b60048054610100600160a81b0319166101006001600160a01b0386160217905581516105a2906002906020850190610dd3565b5080516105b6906003906020840190610dd3565b50600460019054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561060557600080fd5b505afa158015610619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063d91908101906114fa565b6004805460ff191660ff929092169190911790555050670de0b6b3a7640000600e5550565b60095481565b60075481565b33301480610694575061067f6104bb565b6001600160a01b0316336001600160a01b0316145b6106b05760405162461bcd60e51b81526004016101e790611af3565b60045460609061010090046001600160a01b031660005b845181101561073a57818582815181106106dd57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361070f576224ea00610712565b60005b62ffffff1685828151811061072357fe5b602090810291909101015160e001526001016106c7565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e9061076b908790600401611a55565b600060405180830381600087803b15801561078557600080fd5b505af1158015610799573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c19190810190611373565b915060005b825181101561083f578281815181106107db57fe5b6020026020010151601060008784815181106107f357fe5b602002602001015160800151876040516020016108119291906119b9565b60408051601f19818403018152918152815160209283012083529082019290925201600020556001016107c6565b5050505050565b3330148061086c57506108576104bb565b6001600160a01b0316336001600160a01b0316145b6108885760405162461bcd60e51b81526004016101e790611af3565b68056bc75e2d631000006108a2878963ffffffff610d2516565b11156108c05760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d631000006108da858763ffffffff610d2516565b11156108f85760405162461bcd60e51b81526004016101e790611ad3565b68056bc75e2d63100000831115801561091a575068056bc75e2d631000008211155b6109365760405162461bcd60e51b81526004016101e790611ae3565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b038083166000908152601460209081526040808320938516835292905220545b92915050565b333014806109a957506109946104bb565b6001600160a01b0316336001600160a01b0316145b6109c55760405162461bcd60e51b81526004016101e790611af3565b6000826040516020016109d89190611a05565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a209291906119df565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b33301480610a785750610a636104bb565b6001600160a01b0316336001600160a01b0316145b610a945760405162461bcd60e51b81526004016101e790611af3565b828114610ab35760405162461bcd60e51b81526004016101e790611ab3565b604080518481526020808602820101909152606090848015610adf578160200160208202803883390190505b50905060005b84811015610ba2576000868683818110610afb57fe5b9050602002016020610b1091908101906111cd565b858584818110610b1c57fe5b9050602002016020610b3191908101906113ed565b604051602001610b429291906119b9565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610b7d57fe5b6020908102919091018101919091526000918252601090526040812055600101610ae5565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610bd3908490600401611a44565b600060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050505050505050565b610c146104ca565b610c305760405162461bcd60e51b81526004016101e790611af3565b8051825114610c515760405162461bcd60e51b81526004016101e790611b03565b60005b8251811015610cad57818181518110610c6957fe5b602002602001015160126000858481518110610c8157fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002055600101610c54565b507f9bbd2de400810774339120e2f8a2b517ed748595e944529bba8ebabf314d05918282604051610cdf929190611a1f565b60405180910390a15050565b600b5481565b610cf96104ca565b610d155760405162461bcd60e51b81526004016101e790611af3565b610d1e81610d51565b50565b3390565b600082820183811015610d4a5760405162461bcd60e51b81526004016101e790611aa3565b9392505050565b6001600160a01b038116610d775760405162461bcd60e51b81526004016101e790611a93565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e1457805160ff1916838001178555610e41565b82800160010185558215610e41579182015b82811115610e41578251825591602001919060010190610e26565b50610e4d929150610e51565b5090565b61043b91905b80821115610e4d5760008155600101610e57565b803561097d81611c4f565b60008083601f840112610e8857600080fd5b5081356001600160401b03811115610e9f57600080fd5b602083019150836020820283011115610eb757600080fd5b9250929050565b600082601f830112610ecf57600080fd5b8135610ee2610edd82611b47565b611b21565b91508181835260208401935060208101905083856020840282011115610f0757600080fd5b60005b83811015610f335781610f1d8882610e6b565b8452506020928301929190910190600101610f0a565b5050505092915050565b600082601f830112610f4e57600080fd5b8151610f5c610edd82611b47565b91508181835260208401935060208101905083856020840282011115610f8157600080fd5b60005b83811015610f335781610f9788826110a7565b8452506020928301929190910190600101610f84565b600082601f830112610fbe57600080fd5b8135610fcc610edd82611b47565b9150818183526020840193506020810190508385610100840282011115610ff257600080fd5b60005b83811015610f3357816110088882611101565b8452506020909201916101009190910190600101610ff5565b600082601f83011261103257600080fd5b8135611040610edd82611b47565b9150818183526020840193506020810190508385602084028201111561106557600080fd5b60005b83811015610f33578161107b888261109c565b8452506020928301929190910190600101611068565b803561097d81611c63565b803561097d81611c6c565b805161097d81611c6c565b600082601f8301126110c357600080fd5b81356110d1610edd82611b67565b915080825260208301602083018583830111156110ed57600080fd5b6110f8838284611bd5565b50505092915050565b6000610100828403121561111457600080fd5b61111f610100611b21565b9050600061112d848461109c565b825250602061113e84848301611091565b602083015250604061115284828501610e6b565b604083015250606061116684828501610e6b565b606083015250608061117a84828501610e6b565b60808301525060a061118e8482850161109c565b60a08301525060c06111a28482850161109c565b60c08301525060e06111b68482850161109c565b60e08301525092915050565b805161097d81611c75565b6000602082840312156111df57600080fd5b60006111eb8484610e6b565b949350505050565b6000806040838503121561120657600080fd5b60006112128585610e6b565b925050602061122385828601610e6b565b9150509250929050565b60008060006060848603121561124257600080fd5b600061124e8686610e6b565b93505060208401356001600160401b0381111561126a57600080fd5b611276868287016110b2565b92505060408401356001600160401b0381111561129257600080fd5b61129e868287016110b2565b9150509250925092565b600080600080604085870312156112be57600080fd5b84356001600160401b038111156112d457600080fd5b6112e087828801610e76565b945094505060208501356001600160401b038111156112fe57600080fd5b61130a87828801610e76565b95989497509550505050565b6000806040838503121561132957600080fd5b82356001600160401b0381111561133f57600080fd5b61134b85828601610ebe565b92505060208301356001600160401b0381111561136757600080fd5b61122385828601611021565b60006020828403121561138557600080fd5b81516001600160401b0381111561139b57600080fd5b6111eb84828501610f3d565b600080604083850312156113ba57600080fd5b82356001600160401b038111156113d057600080fd5b6113dc85828601610fad565b925050602061122385828601611091565b6000602082840312156113ff57600080fd5b60006111eb8484611091565b6000806040838503121561141e57600080fd5b82356001600160401b0381111561143457600080fd5b6113dc858286016110b2565b60006020828403121561145257600080fd5b60006111eb848461109c565b600080600080600080600060e0888a03121561147957600080fd5b60006114858a8a61109c565b97505060206114968a828b0161109c565b96505060406114a78a828b0161109c565b95505060606114b88a828b0161109c565b94505060806114c98a828b0161109c565b93505060a06114da8a828b0161109c565b92505060c06114eb8a828b0161109c565b91505092959891949750929550565b60006020828403121561150c57600080fd5b60006111eb84846111c2565b6000611524838361154d565b505060200190565b600061152483836116ca565b60006115448383611907565b50506101000190565b61155681611ba6565b82525050565b61155661156882611ba6565b611c0d565b600061157882611b94565b6115828185611b98565b935061158d83611b8e565b8060005b838110156115bb5781516115a58882611518565b97506115b083611b8e565b925050600101611591565b509495945050505050565b60006115d182611b94565b6115db8185611b98565b93506115e683611b8e565b8060005b838110156115bb5781516115fe888261152c565b975061160983611b8e565b9250506001016115ea565b600061161f82611b94565b6116298185611b98565b935061163483611b8e565b8060005b838110156115bb57815161164c8882611538565b975061165783611b8e565b925050600101611638565b600061166d82611b94565b6116778185611b98565b935061168283611b8e565b8060005b838110156115bb57815161169a888261152c565b97506116a583611b8e565b925050600101611686565b61155681611bb1565b6115566116c582611bb1565b611c18565b6115568161043b565b6115566116df82611bb6565b61043b565b60006116ef82611b94565b6116f98185611ba1565b9350611709818560208601611be1565b9290920192915050565b600061171e82611b94565b6117288185611b98565b9350611738818560208601611be1565b61174181611c39565b9093019392505050565b6000611758602683611b98565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006117a0601b83611b98565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006117d9600e83611b98565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000611803603283611b98565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b6000611857601583611b98565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611888600f83611b98565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b60006118b3600c83611b98565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b60006118db601883611b98565b7f6d69736d617463686564206172726179206c656e677468730000000000000000815260200192915050565b805161010083019061191984826116ca565b50602082015161192c60208501826116b0565b50604082015161193f604085018261154d565b506060820151611952606085018261154d565b506080820151611965608085018261154d565b5060a082015161197860a08501826116ca565b5060c082015161198b60c08501826116ca565b5060e082015161199e60e08501826116ca565b50505050565b6115566116df8261043b565b61155681611bcf565b60006119c5828561155c565b6014820191506119d582846116b9565b5060010192915050565b60006119eb82856116d3565b6004820191506119fb82846119a4565b5060200192915050565b6000610d4a82846116e4565b6020810161097d828461154d565b60408082528101611a30818561156d565b905081810360208301526111eb8184611662565b60208082528101610d4a81846115c6565b60208082528101610d4a8184611614565b6020810161097d82846116b0565b6020810161097d82846116ca565b60208082528101610d4a8184611713565b6020808252810161097d8161174b565b6020808252810161097d81611793565b6020808252810161097d816117cc565b6020808252810161097d816117f6565b6020808252810161097d8161184a565b6020808252810161097d8161187b565b6020808252810161097d816118a6565b6020808252810161097d816118ce565b6020810161097d82846119b0565b6040518181016001600160401b0381118282101715611b3f57600080fd5b604052919050565b60006001600160401b03821115611b5d57600080fd5b5060209081020190565b60006001600160401b03821115611b7d57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061097d82611bc3565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b83811015611bfc578181015183820152602001611be4565b8381111561199e5750506000910152565b600061097d82611c23565b600061097d82611c2e565b600061097d82611c49565b600061097d82611c43565b601f01601f191690565b60f81b90565b60601b90565b611c5881611ba6565b8114610d1e57600080fd5b611c5881611bb1565b611c588161043b565b611c5881611bcf56fea365627a7a72315820cbdd2e279b2d20be651e448847d6f8d5ff9a0eada105cdb6d26e7f6f4f263d126c6578706572696d656e74616cf564736f6c63430005110040", "linkReferences": {}, "deployedLinkReferences": {} }