package generated

import (
	"strings"

	"github.com/autonity/autonity/accounts/abi"
	"github.com/autonity/autonity/common"
)

var StabilizationBytecode = common.Hex2Bytes("608060405234801561001057600080fd5b5060405161521938038061521983398101604081905261002f91610481565b876060015180600003610072576040516305519d6f60e51b8152602060048201526005602482015264726174696f60d81b60448201526064015b60405180910390fd5b88604001518960600151808210158061009557506100926012600a610683565b82105b156100f9576040516305519d6f60e51b815260206004820152602d60248201527f6c69717569646174696f6e526174696f207c7c206d696e436f6c6c617465726160448201526c6c697a6174696f6e526174696f60981b6064820152608401610069565b8a6020015160000361011e57604051637c946ed760e01b815260040160405180910390fd5b8a6001600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015590505089600c60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555088600d60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087601160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086601260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083601060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555085600e60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084600f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001601260146101000a81548160ff0219169083151502179055506001601560006101000a81548160ff0219169083151502179055508a6000015160148190555060405180608001604052806000815260200142815260200160008152602001600081525060176000820151816000015560208201518160010155604082015181600201556060820151816003015590505060405180608001604052808c602001518152602001428152602001600081526020016000815250601b6000820151816000015560208201518160010155604082015181600201556060820151816003015590505060405180608001604052808c60400151815260200142815260200160008152602001600081525060236000820151816000015560208201518160010155604082015181600201556060820151816003015590505060405180608001604052808c606001518152602001428152602001600081526020016000815250601f600082015181600001556020820151816001015560408201518160020155606082015181600301559050505050505050505050505050610696565b60405161012081016001600160401b038111828210171561045f57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b038116811461047c57600080fd5b919050565b600080600080600080600080888a0361020081121561049f57600080fd5b6101208112156104ae57600080fd5b506104b761042e565b895181526020808b0151908201526040808b0151908201526060808b0151908201526080808b01519082015260a0808b01519082015260c0808b01519082015260e0808b015190820152610100808b015190820152975061051b6101208a01610465565b965061052a6101408a01610465565b95506105396101608a01610465565b94506105486101808a01610465565b93506105576101a08a01610465565b92506105666101c08a01610465565b91506105756101e08a01610465565b90509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156105d5578085048111156105b9576105b9610584565b60018416156105c757908102905b60019390931c92800261059e565b935093915050565b6000826105ec5750600161067d565b816105f95750600061067d565b816001811461060f576002811461061957610635565b600191505061067d565b60ff84111561062a5761062a610584565b50506001821b61067d565b5060208310610133831016604e8410600b8410161715610658575081810a61067d565b610665600019848461059a565b806000190482111561067957610679610584565b0290505b92915050565b600061068f83836105dd565b9392505050565b614b74806106a56000396000f3fe6080604052600436106102fc5760003560e01c806368cd03f61161018f578063ab385a45116100e1578063d0b06f5d1161008a578063f57d686c11610064578063f57d686c146108b5578063f7fb07b0146108d5578063fbbe6991146108ea57600080fd5b8063d0b06f5d14610838578063d0cf9c7a14610880578063db433efa1461089557600080fd5b8063b8287403116100bb578063b8287403146107e3578063ba1be55414610803578063c5ebeaec1461081857600080fd5b8063ab385a4514610783578063b3ab15fb146107a3578063b6b55f25146107c357600080fd5b8063840c7e2411610143578063a223343c1161011d578063a223343c14610744578063a25bac3214610759578063a28a3d5d1461076e57600080fd5b8063840c7e24146106ad5780638d48dbea1461070f5780638ffba9dd1461072457600080fd5b80637adbf973116101745780637adbf973146106585780637c4044031461067857806383baa1741461068d57600080fd5b806368cd03f6146105b457806379502c55146105d657600080fd5b80633dabe7311161025357806354a9f42c116101fc57806361b24c37116101d657806361b24c371461055457806362713345146105745780636870929f1461059457600080fd5b806354a9f42c146104ff5780635891de721461051f5780635d4293061461053457600080fd5b80634b8ef9431161022d5780634b8ef9431461049f57806352e5a050146104bf57806353afe81d146104df57600080fd5b80633dabe73114610464578063402d8883146104845780634914c0081461048c57600080fd5b80631fd084e8116102b55780632c01c1b91161028f5780632c01c1b91461040f5780632e1a7d4d146104245780633c1cb9641461044457600080fd5b80631fd084e8146103b057806321eb74ee146103c55780632951ba56146103ef57600080fd5b80631506c0f8116102e65780631506c0f8146103585780631775765f1461037b578063179c114e1461039057600080fd5b8062ede7e414610301578063042e02cf14610323575b600080fd5b34801561030d57600080fd5b5061032161031c366004614642565b61090a565b005b34801561032f57600080fd5b5061034361033e366004614642565b6109ee565b60405190151581526020015b60405180910390f35b34801561036457600080fd5b5061036d610a71565b60405190815260200161034f565b34801561038757600080fd5b5061036d610aec565b34801561039c57600080fd5b506103216103ab36600461465d565b610af8565b3480156103bc57600080fd5b5061036d610c19565b3480156103d157600080fd5b506103da610c8e565b6040805192835260208301919091520161034f565b3480156103fb57600080fd5b5061036d61040a366004614676565b610ca2565b34801561041b57600080fd5b50610321610cbb565b34801561043057600080fd5b5061032161043f36600461465d565b610e4d565b34801561045057600080fd5b5061032161045f366004614642565b611127565b34801561047057600080fd5b5061036d61047f3660046146a8565b61120b565b610321611220565b61032161049a3660046146ca565b611502565b3480156104ab57600080fd5b506103216104ba366004614642565b61193c565b3480156104cb57600080fd5b506103216104da366004614642565b611a20565b3480156104eb57600080fd5b506103216104fa36600461465d565b611b04565b34801561050b57600080fd5b5061036d61051a366004614642565b611bab565b34801561052b57600080fd5b5061036d611c9f565b34801561054057600080fd5b5061032161054f36600461465d565b611d14565b34801561056057600080fd5b5061036d61056f36600461465d565b611dbb565b34801561058057600080fd5b5061036d61058f366004614706565b611e31565b3480156105a057600080fd5b506103216105af36600461465d565b611e48565b3480156105c057600080fd5b506105c9611fc8565b60405161034f9190614732565b3480156105e257600080fd5b506105eb61209d565b60405161034f9190600061012082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010083015161010083015292915050565b34801561066457600080fd5b50610321610673366004614642565b61215f565b34801561068457600080fd5b506103da612243565b34801561069957600080fd5b5061036d6106a8366004614676565b612253565b3480156106b957600080fd5b506106cd6106c8366004614642565b612261565b60405161034f9190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b34801561071b57600080fd5b5060185461036d565b34801561073057600080fd5b5061036d61073f36600461477e565b612357565b34801561075057600080fd5b506103da61247a565b34801561076557600080fd5b5061036d61248a565b34801561077a57600080fd5b506103da612496565b34801561078f57600080fd5b5061032161079e3660046147b9565b6124a6565b3480156107af57600080fd5b506103216107be366004614642565b61257d565b3480156107cf57600080fd5b506103216107de36600461465d565b612661565b3480156107ef57600080fd5b506103216107fe36600461465d565b61299a565b34801561080f57600080fd5b5061036d612a41565b34801561082457600080fd5b5061032161083336600461465d565b612a4d565b34801561084457600080fd5b5061084d612cd0565b60405161034f91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561088c57600080fd5b5061036d612d44565b3480156108a157600080fd5b506103216108b03660046146a8565b612db9565b3480156108c157600080fd5b506103216108d036600461465d565b613064565b3480156108e157600080fd5b5061036d61310b565b3480156108f657600080fd5b50610343610905366004614676565b613117565b600c546001600160a01b03163314610934576040516282b42960e81b815260040160405180910390fd5b600e54604080516080808252600a908201527f61756374696f6e6565720000000000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008054600103610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064015b60405180910390fd5b610a6982613125565b90505b919050565b60008054600103610ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b610ae742613167565b905090565b6000610ae76023613238565b60125474010000000000000000000000000000000000000000900460ff1615610b33576040516282b42960e81b815260040160405180910390fd5b600d546001600160a01b03163314610b5d576040516282b42960e81b815260040160405180910390fd5b610b65613263565b6000610b8882610b75601b613238565b610b7f9042614805565b601791906132bc565b601a54604080518581526020810192909252821515908201529091507fb12f349439574b70f65dab4d2f88d6c268a39280fd283047f8c0f734ed0ea9f29060600160405180910390a17f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba610bfc6017613238565b8343604051610c0d93929190614818565b60405180910390a15050565b60008054600103610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b610ae7613314565b60255460265460009182915b915091509091565b6000610cb085858585613470565b90505b949350505050565b600d546001600160a01b03163314610ce5576040516282b42960e81b815260040160405180910390fd5b60125474010000000000000000000000000000000000000000900460ff161515600003610d3e576040517f55d90bb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556014546017819055426018556040517f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba91610da691600091904390614818565b60405180910390a1604080516080808252600a908201527f726573747269637465640000000000000000000000000000000000000000000060a08201526001602082015260008183015243606082015290517f5edb308c5eddc69bcd31b4e689c5eed2fbd3155ae57915d1cad05425f6c1a39b9181900360c00190a16040517fa2e462158ad4e6546090511fe2857d985d816588431165cd3609c45df783a20c90600090a1565b8080600003610e88576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60125474010000000000000000000000000000000000000000900460ff168015610ebd57506013546001600160a01b03163314155b15610eda576040516282b42960e81b815260040160405180910390fd5b610ee2613519565b336000908152600a602052604090206001810154831115610f2f576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f3b824261358a565b505090506000610f49613673565b9050610f6483600101548284610f5f6023613238565b613799565b15610f9b576040517f6229415300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fbd8360020154610fab613314565b600654610fb8601f613238565b613470565b858460010154610fcd919061486f565b1015611005576040517f3a23d82500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84836001016000828254611019919061486f565b90915550506010546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018790526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac9190614882565b6110e2576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405185815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505061112360008055565b5050565b600d546001600160a01b03163314611151576040516282b42960e81b815260040160405180910390fd5b6013546040805160808082526011908201527f61746e537570706c794f70657261746f7200000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600061121783836137cb565b90505b92915050565b60125474010000000000000000000000000000000000000000900460ff16801561125557506013546001600160a01b03163314155b15611272576040516282b42960e81b815260040160405180910390fd5b61127a613519565b346000036112b4576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a602052604081206002810154909103611301576040517f8aa5baf300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061130d8242613803565b905080341080156113285750600554611326348361486f565b105b1561135f576040517fe6bd447900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600061136e853461383c565b92509250925081856002016000828254611388919061486f565b92505081905550828560030160008282546113a3919061486f565b9091555050821561141857600e60009054906101000a90046001600160a01b03166001600160a01b03166396e4547c846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50505050505b811561148857601260009054906101000a90046001600160a01b03166001600160a01b03166344df8e70836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b50505050505b80156114bd57604051339082156108fc029083906000818181858888f193505050501580156114bb573d6000803e3d6000fd5b505b60405134815233907f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a5942319060200160405180910390a2505050505061150060008055565b565b60125474010000000000000000000000000000000000000000900460ff161561153d576040516282b42960e81b815260040160405180910390fd5b600e546001600160a01b03163314611567576040516282b42960e81b815260040160405180910390fd5b61156f613519565b346000036115a9576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383166000908152600a6020526040812060028101549091036115ff576040517f8aa5baf300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160010154101561163d576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061164a834261358a565b509150915061166a836001015461165f613673565b84610f5f6023613238565b6116a0576040517fddeb79ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b813410156116da576040517fcd1c886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601260009054906101000a90046001600160a01b03166001600160a01b03166344df8e7084600201546040518263ffffffff1660e01b81526004016000604051808303818588803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b5050600e5460038701546001600160a01b0390911693506396e4547c925061176b915084614805565b6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561179657600080fd5b505af11580156117aa573d6000803e3d6000fd5b5050505050600082346117bd919061486f565b60018501544286559091506117d2878261486f565b600186015560006002860181905560038601556010546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018a90529091169063a9059cbb906044016020604051808303816000875af1158015611851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118759190614882565b6118ab576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156118e9576040516001600160a01b0387169083156108fc029084906000818181858888f193505050501580156118e7573d6000803e3d6000fd5b505b6040516001600160a01b0387811682528916907fc3d81b2125598b9a2b024afe09e33981f0aa5b7bcbe3e30c4303a4dec209ddb49060200160405180910390a2505050505061193760008055565b505050565b600c546001600160a01b03163314611966576040516282b42960e81b815260040160405180910390fd5b600f546040805160808082526003908201527f616375000000000000000000000000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600c546001600160a01b03163314611a4a576040516282b42960e81b815260040160405180910390fd5b601254604080516080808252600d908201527f737570706c79436f6e74726f6c0000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600d546001600160a01b03163314611b2e576040516282b42960e81b815260040160405180910390fd5b6005546040805160808082526012908201527f6d696e44656274526571756972656d656e74000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600555565b60008054600103611c18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b6040517f8ffba9dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201524260248201523090638ffba9dd90604401602060405180830381865afa158015611c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a69919061489f565b60008054600103611d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b610ae7613673565b600d546001600160a01b03163314611d3e576040516282b42960e81b815260040160405180910390fd5b6007546040805160808082526012908201527f64656661756c744e544e41544e5072696365000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600755565b60008054600103611e28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b610a69826138b0565b6000611e3e8484846138ff565b90505b9392505050565b600d546001600160a01b03163314611e72576040516282b42960e81b815260040160405180910390fd5b80600003611eac576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ecf82611ebc601b613238565b611ec69042614805565b601b91906132bc565b90508015611f09576040517faf13164700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e5460408051848152602081019290925282151582820152517fed7f709ecbcef995208a1b2fc94064f0ff5a6f799d7f64bbd830670224c18f2d9181900360600190a17f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba611f78601b613238565b6040805160808082526012908201527f616e6e6f756e63656d656e7457696e646f77000000000000000000000000000060a08201526020810192909252810184905243606082015260c001610c0d565b6060611fd660005460011490565b1561203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b600b80548060200260200160405190810160405280929190818152602001828054801561209357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612075575b5050505050905090565b6120ec6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061012001604052806121026017613238565b8152602001612111601b613238565b81526020016121206023613238565b815260200161212f601f613238565b8152600554602082015260065460408201526007546060820152600854608082015260095460a090910152919050565b600c546001600160a01b03163314612189576040516282b42960e81b815260040160405180910390fd5b6011546040805160808082526006908201527f6f7261636c65000000000000000000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6021546022546000918291610c9a565b6000610cb08585858561398e565b6122936040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000546001036122ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b506001600160a01b03166000908152600a6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b6001600160a01b0382166000908152600a602052604081208054849184918210156123de576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f74696d657374616d7000000000000000000000000000000000000000000000006044820152606401610a57565b60005460010361244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b6001600160a01b0386166000908152600a6020526040902061246c818761358a565b509098975050505050505050565b601d54601e546000918291610c9a565b6000610ae7601b613238565b601954601a546000918291610c9a565b600d546001600160a01b031633146124d0576040516282b42960e81b815260040160405180910390fd5b6015546040805160808082526012908201527f666978656447656e65736973507269636573000000000000000000000000000060a082015260ff9092161515602083015282151582820152436060830152517f5edb308c5eddc69bcd31b4e689c5eed2fbd3155ae57915d1cad05425f6c1a39b9181900360c00190a1601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600c546001600160a01b031633146125a7576040516282b42960e81b815260040160405180910390fd5b600d546040805160808082526008908201527f6f70657261746f7200000000000000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b808060000361269c576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60125474010000000000000000000000000000000000000000900460ff1680156126d157506013546001600160a01b03163314155b156126ee576040516282b42960e81b815260040160405180910390fd5b6126f6613519565b6010546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015283916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612781919061489f565b10156127b9576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260408120805490910361282c57600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555b6128368142613803565b506010546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156128a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cb9190614882565b612901576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160010160008282546129159190614805565b90915550612924905033613125565b1561295b576040517f6229415300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405183815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a25061112360008055565b600d546001600160a01b031633146129c4576040516282b42960e81b815260040160405180910390fd5b6009546040805160808082526012908201527f64656661756c744143555553445072696365000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600955565b6000610ae7601f613238565b8080600003612a88576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60125474010000000000000000000000000000000000000000900460ff168015612abd57506013546001600160a01b03163314155b15612ada576040516282b42960e81b815260040160405180910390fd5b612ae2613519565b336000908152600a6020526040812090612afc8242613803565b9050612b088482614805565b600554909150811015612b47576040517fe6bd447900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b51613673565b9050612b6783600101548284610f5f6023613238565b15612b9e576040517f6229415300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612bad84600101546138b0565b905080868560020154612bc09190614805565b1115612bf8576040517f3a23d82500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85846002016000828254612c0c9190614805565b90915550506012546040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015612c7657600080fd5b505af1158015612c8a573d6000803e3d6000fd5b50506040518881523392507fcbc04eca7e9da35cb1393a6135a199ca52e450d5e9251cbd99f7847d33a36750915060200160405180910390a25050505061112360008055565b612cfb6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060800160405280612d106017613a51565b8152602001612d1f601b613a51565b8152602001612d2e6023613a51565b8152602001612d3d601f613a51565b9052919050565b60008054600103612db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401610a57565b610ae7613a7f565b600d546001600160a01b03163314612de3576040516282b42960e81b815260040160405180910390fd5b81818082101580612dfe5750612dfb6012600a6149db565b82105b15612e8b576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f6c69717569646174696f6e526174696f207c7c206d696e436f6c6c617465726160448201527f6c697a6174696f6e526174696f000000000000000000000000000000000000006064820152608401610a57565b6000612eae85612e9b601b613238565b612ea59042614805565b602391906132bc565b90506000612ed385612ec0601b613238565b612eca9042614805565b601f91906132bc565b602654604080518981526020810192909252841515908201529091507f19f747f98f8e30315324002333a1c5eaf5bafa2c4d0a90bc5f042634a2cbf6229060600160405180910390a160225460408051878152602081019290925282151582820152517f4f9980fcac197f6e3e043b71166dc66da4fb578adab225ce0ab6d02cc0bcaa7a9181900360600190a17f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba612f8b6023613238565b6040805160808082526010908201527f6c69717569646174696f6e526174696f0000000000000000000000000000000060a08201526020810192909252810188905243606082015260c00160405180910390a17f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba613009601f613238565b6040805160808082526019908201527f6d696e436f6c6c61746572616c697a6174696f6e526174696f0000000000000060a08201526020810192909252810187905243606082015260c00160405180910390a1505050505050565b600d546001600160a01b0316331461308e576040516282b42960e81b815260040160405180910390fd5b6008546040805160808082526012908201527f64656661756c744e544e5553445072696365000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600855565b6000610ae76017613238565b6000610cb085858585613799565b6001600160a01b0381166000908152600a6020526040812081613148824261358a565b50509050610cb3826001015461315c613673565b83610f5f6023613238565b6016546017546018546000929190808510156131df576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f74696d657374616d7000000000000000000000000000000000000000000000006044820152606401610a57565b601954601a546000811180156131f55750868111155b15613218576132058484836138ff565b61320f9086614805565b94508193508092505b6132238484896138ff565b61322d9086614805565b979650505050505050565b6000808260030154118015613251575042826003015411155b1561325e57506002015490565b505490565b601954601a5480158061327557504281115b1561327e575050565b60175460185461328f8282856138ff565b601660008282546132a09190614805565b9091555050506017929092556018555060006019819055601a55565b60008084600301541180156132d5575042846003015411155b156132fb5750600283018054845582905560038301805460018501558190556000611e41565b5060038301805460028501849055908290551515611e41565b601554600090819060ff16801561332c575060085415155b1561333a575060085461343c565b601154604080518082018252600781527f4e544e2d55534400000000000000000000000000000000000000000000000000602082015290517f33f98c770000000000000000000000000000000000000000000000000000000081526000926001600160a01b0316916333f98c77916133b591906004016149e7565b608060405180830381865afa1580156133d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f69190614a53565b90506000816020015111613435576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020015190505b6000613446613a7f565b9050806134556012600a6149db565b61345f9084614aec565b6134699190614b03565b9250505090565b600083158061347d575081155b156134e4576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f636f6c6c61746572616c5072696365414355207c7c206d6372000000000000006044820152606401610a57565b6134f06012600a6149db565b6134fa9085614aec565b836135058488614aec565b61350f9190614aec565b610cb09190614b03565b60005415613583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f7265656e7472616e6379206465746563746564000000000000000000000000006044820152606401610a57565b6001600055565b6000806000836000036135f9576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f74696d657374616d7000000000000000000000000000000000000000000000006044820152606401610a57565b60008560030154866002015461360f9190614805565b905061361a85613167565b91508060000361363157600080935093505061366c565b85548503613642576000925061365e565b61365b81876004015484613656919061486f565b6137cb565b92505b6136688382614805565b9350505b9250925092565b60155460009060ff168015613689575060075415155b15613695575060075490565b601154604080518082018252600781527f4e544e2d41544e00000000000000000000000000000000000000000000000000602082015290517f33f98c770000000000000000000000000000000000000000000000000000000081526000926001600160a01b0316916333f98c779161371091906004016149e7565b608060405180830381865afa15801561372d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137519190614a53565b90506000816020015111613790576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60200151919050565b6000826000036137ab57506000610cb3565b81836137b78688614aec565b6137c19190614b03565b1095945050505050565b60008282826137d982613c1a565b9050600061322d6137fc6137f56137f26012600a6149db565b90565b8490613c81565b8590613c90565b600080613810848461358a565b60048701556003860180549294509092508291600090613831908490614805565b909155505050915590565b600080600080856003015486600201546138569190614805565b90508560030154851061386d57856003015461386f565b845b935080851061388257856002015461388c565b61388c848661486f565b925080851161389c5760006138a6565b6138a6818661486f565b9150509250925092565b6000806138d1836138bf613314565b6006546138cc601f613238565b61398e565b905060006138f0846138e1613673565b6138eb6023613238565b613c9f565b9050808211611e415781610cb3565b60008282101561396b576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f656e6454696d657374616d70207c7c20737461727454696d657374616d7000006044820152606401610a57565b6301e1338061397a848461486f565b6139849086614aec565b611e3e9190614b03565b600083158061399b575081155b806139a4575082155b15613a31576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f6d6372207c7c20746172676574446562745072696365207c7c20636f6c6c617460448201527f6572616c507269636500000000000000000000000000000000000000000000006064820152608401610a57565b613a3b8383614aec565b613a476012600a6149db565b6135058688614aec565b6000808260030154118015613a6a575042826003015411155b15613a7757506003015490565b506001015490565b60155460009060ff168015613a95575060095415155b15613aa1575060095490565b600f60009054906101000a90046001600160a01b03166001600160a01b0316633fa4f2456040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613b2e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613b2b9181019061489f565b60015b613b94576040517f9718df2300000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4143552d555344000000000000000000000000000000000000000000000000006044820152606401610a57565b613c1481600f60009054906101000a90046001600160a01b03166001600160a01b0316637f5e2f116040518163ffffffff1660e01b8152600401602060405180830381865afa158015613beb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0f919061489f565b613d1e565b91505090565b600081680736ea4425c11ac630811115613c63576040517f1af63aca00000000000000000000000000000000000000000000000000000000815260048101849052602401610a57565b6714057b7ef767814f8102610cb3670de0b6b3a76400008204613d41565b60006112176137f2838561486f565b60006112176137f28484613db0565b6000821580613cac575081155b15613d13576040517faa33ade000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f7072696365207c7c206c69717569646174696f6e526174696f000000000000006044820152606401610a57565b816139848486614aec565b600081613d2d6012600a6149db565b613d379085614aec565b6112179190614b03565b600081680a688906bd8affffff811115613d8a576040517fb3b6ba1f00000000000000000000000000000000000000000000000000000000815260048101849052602401610a57565b6000613da2670de0b6b3a7640000604084901b614b03565b9050610cb36137f282613eb7565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860984860292508281108382030391505080600003613e025750670de0b6b3a76400009004905061121a565b670de0b6b3a76400008110613e4d576040517f5173648d0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610a57565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b7780000000000000000000000000000000000000000000000067ff00000000000000821615613fd857678000000000000000821615613eff5768016a09e667f3bcc9090260401c5b674000000000000000821615613f1e576801306fe0a31b7152df0260401c5b672000000000000000821615613f3d576801172b83c7d517adce0260401c5b671000000000000000821615613f5c5768010b5586cf9890f62a0260401c5b670800000000000000821615613f7b576801059b0d31585743ae0260401c5b670400000000000000821615613f9a57680102c9a3e778060ee70260401c5b670200000000000000821615613fb95768010163da9fb33356d80260401c5b670100000000000000821615613fd857680100b1afa5abcbed610260401c5b66ff0000000000008216156140d75766800000000000008216156140055768010058c86da1c09ea20260401c5b6640000000000000821615614023576801002c605e2e8cec500260401c5b662000000000000082161561404157680100162f3904051fa10260401c5b661000000000000082161561405f576801000b175effdc76ba0260401c5b660800000000000082161561407d57680100058ba01fb9f96d0260401c5b660400000000000082161561409b5768010002c5cc37da94920260401c5b66020000000000008216156140b9576801000162e525ee05470260401c5b66010000000000008216156140d75768010000b17255775c040260401c5b65ff00000000008216156141cd5765800000000000821615614102576801000058b91b5bc9ae0260401c5b6540000000000082161561411f57680100002c5c89d5ec6d0260401c5b6520000000000082161561413c5768010000162e43f4f8310260401c5b6510000000000082161561415957680100000b1721bcfc9a0260401c5b650800000000008216156141765768010000058b90cf1e6e0260401c5b65040000000000821615614193576801000002c5c863b73f0260401c5b650200000000008216156141b057680100000162e430e5a20260401c5b650100000000008216156141cd576801000000b1721835510260401c5b64ff000000008216156142ba576480000000008216156141f657680100000058b90c0b490260401c5b6440000000008216156142125768010000002c5c8601cc0260401c5b64200000000082161561422e576801000000162e42fff00260401c5b64100000000082161561424a5768010000000b17217fbb0260401c5b640800000000821615614266576801000000058b90bfce0260401c5b64040000000082161561428257680100000002c5c85fe30260401c5b64020000000082161561429e5768010000000162e42ff10260401c5b6401000000008216156142ba57680100000000b17217f80260401c5b63ff00000082161561439e5763800000008216156142e15768010000000058b90bfc0260401c5b63400000008216156142fc576801000000002c5c85fe0260401c5b632000000082161561431757680100000000162e42ff0260401c5b6310000000821615614332576801000000000b17217f0260401c5b630800000082161561434d57680100000000058b90c00260401c5b63040000008216156143685768010000000002c5c8600260401c5b6302000000821615614383576801000000000162e4300260401c5b630100000082161561439e5768010000000000b172180260401c5b62ff000082161561447957628000008216156143c3576801000000000058b90c0260401c5b624000008216156143dd57680100000000002c5c860260401c5b622000008216156143f75768010000000000162e430260401c5b6210000082161561441157680100000000000b17210260401c5b6208000082161561442b5768010000000000058b910260401c5b62040000821615614445576801000000000002c5c80260401c5b6202000082161561445f57680100000000000162e40260401c5b62010000821615614479576801000000000000b1720260401c5b61ff0082161561454b5761800082161561449c57680100000000000058b90260401c5b6140008216156144b55768010000000000002c5d0260401c5b6120008216156144ce576801000000000000162e0260401c5b6110008216156144e75768010000000000000b170260401c5b610800821615614500576801000000000000058c0260401c5b61040082161561451957680100000000000002c60260401c5b61020082161561453257680100000000000001630260401c5b61010082161561454b57680100000000000000b10260401c5b60ff82161561461457608082161561456c57680100000000000000590260401c5b6040821615614584576801000000000000002c0260401c5b602082161561459c57680100000000000000160260401c5b60108216156145b4576801000000000000000b0260401c5b60088216156145cc57680100000000000000060260401c5b60048216156145e457680100000000000000030260401c5b60028216156145fc57680100000000000000010260401c5b600182161561461457680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b80356001600160a01b0381168114610a6c57600080fd5b60006020828403121561465457600080fd5b6112178261462b565b60006020828403121561466f57600080fd5b5035919050565b6000806000806080858703121561468c57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156146bb57600080fd5b50508035926020909101359150565b6000806000606084860312156146df57600080fd5b6146e88461462b565b9250602084013591506146fd6040850161462b565b90509250925092565b60008060006060848603121561471b57600080fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000918401906040840190835b818110156147735783516001600160a01b031683526020938401939092019160010161474c565b509095945050505050565b6000806040838503121561479157600080fd5b61479a8361462b565b946020939093013593505050565b80151581146147b657600080fd5b50565b6000602082840312156147cb57600080fd5b8135611e41816147a8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561121a5761121a6147d6565b60808152600061485560808301601281527f626f72726f77496e746572657374526174650000000000000000000000000000602082015260400190565b602083019590955250604081019290925260609091015290565b8181038181111561121a5761121a6147d6565b60006020828403121561489457600080fd5b8151611e41816147a8565b6000602082840312156148b157600080fd5b5051919050565b6001815b60018411156148f3578085048111156148d7576148d76147d6565b60018416156148e557908102905b60019390931c9280026148bc565b935093915050565b60008261490a5750600161121a565b816149175750600061121a565b816001811461492d576002811461493757614953565b600191505061121a565b60ff841115614948576149486147d6565b50506001821b61121a565b5060208310610133831016604e8410600b8410161715614976575081810a61121a565b6149a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148b8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156149d3576149d36147d6565b029392505050565b600061121783836148fb565b602081526000825180602084015260005b81811015614a1557602081860181015160408684010152016149f8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b60006080828403128015614a6657600080fd5b600090506040516080810181811067ffffffffffffffff82111715614ab2577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b60409081528451825260208086015190830152848101519082015260608401519150614add826147a8565b60608101919091529392505050565b808202811582820484141761121a5761121a6147d6565b600082614b39577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122070d3a040cebfe6f2e05e4b5311240a18d9b37759ee4a212aeabafd730cb2208e64736f6c634300081e0033")

var StabilizationAbi, _ = abi.JSON(strings.NewReader(`[
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "borrowInterestRate",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "announcementWindow",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "liquidationRatio",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "minCollateralizationRatio",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "minDebtRequirement",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "targetPrice",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "defaultNTNATNPrice",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "defaultNTNUSDPrice",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "defaultACUUSDPrice",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IStabilization.Config",
            "name" : "config_",
            "type" : "tuple"
         },
         {
            "internalType" : "address",
            "name" : "autonity",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "operator",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "oracle",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "supplyControl",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "auctioneer",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "acu",
            "type" : "address"
         },
         {
            "internalType" : "contract IERC20",
            "name" : "collateralToken",
            "type" : "address"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "constructor"
   },
   {
      "inputs" : [],
      "name" : "AnnouncementWindowPending",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "InsufficientAllowance",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "InsufficientCollateral",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "InsufficientPayment",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "InvalidAmount",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "InvalidDebtPosition",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "string",
            "name" : "message",
            "type" : "string"
         }
      ],
      "name" : "InvalidParameter",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "InvalidPrice",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "Liquidatable",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "NoDebtPosition",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "NotLiquidatable",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "NotRestricted",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "x",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "y",
            "type" : "uint256"
         }
      ],
      "name" : "PRBMath_MulDiv18_Overflow",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "UD60x18",
            "name" : "x",
            "type" : "uint256"
         }
      ],
      "name" : "PRBMath_UD60x18_Exp2_InputTooBig",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "UD60x18",
            "name" : "x",
            "type" : "uint256"
         }
      ],
      "name" : "PRBMath_UD60x18_Exp_InputTooBig",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "string",
            "name" : "symbol",
            "type" : "string"
         }
      ],
      "name" : "PriceUnavailable",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "TransferFailed",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "Unauthorized",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "ZeroValue",
      "type" : "error"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "newAnnouncementWindow",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "activeSince",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "pendingWindowOverridden",
            "type" : "bool"
         }
      ],
      "name" : "AnnouncementWindowUpdateAnnounced",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "Borrow",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [],
      "name" : "CDPRestrictionsRemoved",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "oldValue",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "newValue",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateAddress",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "oldValue",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "newValue",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateBool",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "oldValue",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "newValue",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateUint",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "Deposit",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "newRate",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "activeSince",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "pendingRateOverridden",
            "type" : "bool"
         }
      ],
      "name" : "InterestRateUpdateAnnounced",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "liquidator",
            "type" : "address"
         }
      ],
      "name" : "Liquidate",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "newRatio",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "activeSince",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "pendingRatioOverridden",
            "type" : "bool"
         }
      ],
      "name" : "LiquidationRatioUpdateAnnounced",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "newRatio",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "activeSince",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "pendingRatioOverridden",
            "type" : "bool"
         }
      ],
      "name" : "MinCollateralizationRatioUpdateAnnounced",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "Repay",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "Withdraw",
      "type" : "event"
   },
   {
      "inputs" : [],
      "name" : "accounts",
      "outputs" : [
         {
            "internalType" : "address[]",
            "name" : "",
            "type" : "address[]"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "acuPrice",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "price",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "borrow",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "collateral",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "collateralPriceACU",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "targetPriceACU",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "mcr",
            "type" : "uint256"
         }
      ],
      "name" : "borrowLimit",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "owner",
            "type" : "address"
         }
      ],
      "name" : "cdps",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "timestamp",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "collateral",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "principal",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "interest",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "lastAggregatedInterestExponent",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IStabilization.CDP",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "collateralPrice",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "price",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "collateralPriceACU",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "config",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "borrowInterestRate",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "announcementWindow",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "liquidationRatio",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "minCollateralizationRatio",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "minDebtRequirement",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "targetPrice",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "defaultNTNATNPrice",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "defaultNTNUSDPrice",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "defaultACUUSDPrice",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IStabilization.Config",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         }
      ],
      "name" : "debtAmount",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "debt",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "timestamp",
            "type" : "uint256"
         }
      ],
      "name" : "debtAmountAtTime",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "debt",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "deposit",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getAggregatedInterestExponent",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getAnnouncementWindow",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getCurrentRate",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getCurrentRateActiveTimestamp",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getPendingAnnouncementWindowInfo",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getPendingInterestRateInfo",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getPendingLiquidationRatioInfo",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getPendingMinCollateralizationRatioInfo",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "debt",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "rateExponent",
            "type" : "uint256"
         }
      ],
      "name" : "interestDue",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "interestRate",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "startTimestamp",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "endTimestamp",
            "type" : "uint256"
         }
      ],
      "name" : "interestExponent",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         }
      ],
      "name" : "isLiquidatable",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "lastUpdated",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "borrowInterestRateTimestamp",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "announcementWindowTimestamp",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "liquidationRatioTimestamp",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "minCollateralizationRatioTimestamp",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IStabilization.LastUpdated",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "account",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "collateralSold",
            "type" : "uint256"
         },
         {
            "internalType" : "address",
            "name" : "bidder",
            "type" : "address"
         }
      ],
      "name" : "liquidate",
      "outputs" : [],
      "stateMutability" : "payable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "liquidationRatio",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "collateral",
            "type" : "uint256"
         }
      ],
      "name" : "maxBorrow",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "minCollateralizationRatio",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "principal",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "collateralPriceACU",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "targetPriceACU",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "mcr",
            "type" : "uint256"
         }
      ],
      "name" : "minimumCollateral",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "removeCDPRestrictions",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "repay",
      "outputs" : [],
      "stateMutability" : "payable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "acu",
            "type" : "address"
         }
      ],
      "name" : "setACU",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "atnSupplyOperator",
            "type" : "address"
         }
      ],
      "name" : "setAtnSupplyOperator",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "auctioneer",
            "type" : "address"
         }
      ],
      "name" : "setAuctioneer",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "defaultACUUSDPrice",
            "type" : "uint256"
         }
      ],
      "name" : "setDefaultACUUSDPrice",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "defaultNTNATNPrice",
            "type" : "uint256"
         }
      ],
      "name" : "setDefaultNTNATNPrice",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "defaultNTNUSDPrice",
            "type" : "uint256"
         }
      ],
      "name" : "setDefaultNTNUSDPrice",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "setMinDebtRequirement",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "operator",
            "type" : "address"
         }
      ],
      "name" : "setOperator",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "oracle",
            "type" : "address"
         }
      ],
      "name" : "setOracle",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "supplyControl",
            "type" : "address"
         }
      ],
      "name" : "setSupplyControl",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "collateral",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "price",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "debt",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "liquidationRatio",
            "type" : "uint256"
         }
      ],
      "name" : "underCollateralized",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "window",
            "type" : "uint256"
         }
      ],
      "name" : "updateAnnouncementWindow",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "newInterestRate",
            "type" : "uint256"
         }
      ],
      "name" : "updateBorrowInterestRate",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "newLiquidationRatio",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "newMinCollateralizationRatio",
            "type" : "uint256"
         }
      ],
      "name" : "updateRatios",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "bool",
            "name" : "useFixed",
            "type" : "bool"
         }
      ],
      "name" : "useFixedGenesisPrices",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "withdraw",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   }
]
`))
