package generated

import (
	"strings"

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

var AutonityBytecode = common.Hex2Bytes("60806040526000600e556000600f5534801561001a57600080fd5b5060405162012b6738038062012b6783398101604081905261003b91611434565b602d5460000361006157604780546001600160a01b031916331790556100618282610068565b5050611a32565b805180516010556020808201516011819055604080840151601255606080850151601355608080860151601481905560a08088015160155560c08089015160165560e0808a0151601755610100808b0151601880546001600160a01b03199081166001600160a01b03938416179091556101208d01516019805483169184169190911790556101408d0151601a819055610160909d0151601b8190558c8f01518051601c80548516918616919091179055808e0151601d80548516918616919091179055808c0151601e80548516918616919091179055808b0151601f80548516918616919091179055808a01518e548416908516178e5580880151602180548516918616919091179055808701516022805485169186169190911790558086015160238054851691861691909117905590930151602480548316918416919091179055898e01518051602580549093169316929092179055808b01516026819055818a0151602755818901516028558188015160295594810151602a81905593810151602b819055920151602c819055878d0151602d55603194909455603a9390935586519485018752878552978401899052838601829052929093018690526035949094556036959095556037556038929092556039929092556046919091555161025490610fff565b604051809103906000f080158015610270573d6000803e3d6000fd5b50604880546001600160a01b0319166001600160a01b039290921691909117905560405161029d9061100d565b604051809103906000f0801580156102b9573d6000803e3d6000fd5b50604980546001600160a01b0319166001600160a01b039290921691909117905560005b82518110156107735760008382815181106102fa576102fa611684565b602002602001015160a001519050600084838151811061031c5761031c611684565b60209081029190910101516101a001526103386012600a611799565b84838151811061034a5761034a611684565b6020026020010151610260018181525050600084838151811061036f5761036f611684565b602002602001015161018001906001600160a01b031690816001600160a01b03168152505060008483815181106103a8576103a8611684565b602002602001015160a001818152505060008483815181106103cc576103cc611684565b602002602001015161010001818152505060008483815181106103f1576103f1611684565b60209081029190910101516101c00152601254845185908490811061041857610418611684565b60200260200101516080018181525050600084838151811061043c5761043c611684565b60200260200101516102400190600581111561045a5761045a6117ac565b9081600581111561046d5761046d6117ac565b81525050600084838151811061048557610485611684565b602002602001015161016001818152505060008483815181106104aa576104aa611684565b602002602001015160c001818152505060008483815181106104ce576104ce611684565b602002602001015161012001818152505060008483815181106104f3576104f3611684565b602002602001015160e0018181525050600084838151811061051757610517611684565b602002602001015161014001818152505061055084838151811061053d5761053d611684565b602002602001015161077860201b60201c565b61057c84838151811061056557610565611684565b6020026020010151604001516108b560201b60201c565b6105a484838151811061059157610591611684565b602002602001015161093860201b60201c565b80604160008685815181106105bb576105bb611684565b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546105f691906117c2565b92505081905550806044600082825461060f91906117c2565b92505081905550806045600082825461062891906117c2565b925050819055507f8ad8bd2eb6950e5f332fd3a6dca48cb358ecfe3057848902b98cbdfe455c915c84838151811061066257610662611684565b60200260200101516000015185848151811061068057610680611684565b60200260200101516020015186858151811061069e5761069e611684565b6020026020010151604001518786815181106106bc576106bc611684565b6020026020010151606001518887815181106106da576106da611684565b602002602001015161018001516040516106f8959493929190611801565b60405180910390a161076984838151811061071557610715611684565b6020026020010151602001518286858151811061073457610734611684565b60200260200101516000015187868151811061075257610752611684565b602002602001015160000151610bd560201b60201c565b50506001016102dd565b505050565b600061078d8260600151610eac60201b60201c565b6001600160a01b039091166020840152905080156107e05760405162461bcd60e51b815260206004820152600b60248201526a32b737b2329032b93937b960a91b60448201526064015b60405180910390fd5b6020808301516001600160a01b039081166000908152604290925260409091206001015416156108525760405162461bcd60e51b815260206004820152601c60248201527f76616c696461746f7220616c726561647920726567697374657265640000000060448201526064016107d7565b61085e6004600a611799565b826080015111156108b15760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420636f6d6d697373696f6e207261746500000000000000000060448201526064016107d7565b5050565b6001600160a01b0381166000908152604360205260409020541561091b5760405162461bcd60e51b815260206004820152601460248201527f6f7261636c65207365727665722065786973747300000000000000000000000060448201526064016107d7565b6001600160a01b0316600090815260436020526040902060019055565b6101808101516001600160a01b0316610a2d576048546001600160a01b03166109ae5760405162461bcd60e51b815260206004820152602260248201527f6c6971756964206c6f67696320636f6e7472616374206e6f74206465706c6f79604482015261195960f21b60648201526084016107d7565b602e546000906109bd90610ef7565b905081602001518260000151836080015183604860009054906101000a90046001600160a01b03166040516109f19061101b565b6109ff95949392919061184f565b604051809103906000f080158015610a1b573d6000803e3d6000fd5b506001600160a01b0316610180830152505b60208181018051602e80546001808201835560009283527f37fa166cbdbfbb1561ccd9ea985ec0218b5e68502e230525f544285b2bdf3d7e90910180546001600160a01b03199081166001600160a01b0395861617909155845184168352604290955260409182902086518154871690851617815593519084018054861691841691909117905584015160028301805490941691161790915560608201518291906003820190610add908261190a565b506080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c820180546001600160a01b0319166001600160a01b039092169190911790556101a0820151600d8201556101c0820151600e8201556101e0820151600f82015561020082015160108201556102208201516011820190610b9a908261190a565b5061024082015160128201805460ff19166001836005811115610bbf57610bbf6117ac565b0217905550610260820151816013015590505050565b6001600160a01b0384166000818152604260205260408120909115801590610c0c575060018101546001600160a01b038781169116145b610c585760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206e6f742072656769737465726564000000000000000060448201526064016107d7565b6000601282015460ff166005811115610c7357610c736117ac565b14610cc05760405162461bcd60e51b815260206004820152601b60248201527f76616c696461746f72206e65656420746f20626520616374697665000000000060448201526064016107d7565b60008511610d1c5760405162461bcd60e51b815260206004820152602360248201527f616d6f756e74206e65656420746f206265207374726963746c7920706f73697460448201526269766560e81b60648201526084016107d7565b6001600160a01b038416600090815260416020526040902054851115610d845760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74204e6577746f6e2062616c616e6365000000000060448201526064016107d7565b6001600160a01b03841660009081526041602052604081208054879290610dac9084906119c8565b9091555050604080516080810182526001600160a01b0386811680835289821660208085018281528587018c8152436060808901918252600880546000908152600687528b90208a518154908b166001600160a01b03199182161782559551600182018054918c16919097161790955592516002850155905160039093019290925588549054885191871686148083529382018e90529781019790975294959094938916937fcedee1b81e707f05d3f5f6b965053c24ce7759214e4886d87c02e0261367d1f2910160405180910390a460088054906000610e8c836119db565b91905055506001600854610ea091906119c8565b98975050505050505050565b600080610eb7611029565b60008060ff9050604083875160208901845afa610ed357600080fd5b505080516020909101516c0100000000000000000000000090910494909350915050565b606081600003610f1e5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610f485780610f32816119db565b9150610f419050600a83611a0a565b9150610f22565b6000816001600160401b03811115610f6257610f62611047565b6040519080825280601f01601f191660200182016040528015610f8c576020820181803683370190505b5090505b8415610ff757610fa16001836119c8565b9150610fae600a86611a1e565b610fb99060306117c2565b60f81b818381518110610fce57610fce611684565b60200101906001600160f81b031916908160001a905350610ff0600a86611a0a565b9450610f90565b949350505050565b611ff8806200f5fa83390190565b610f4b80620115f283390190565b61062a806201253d83390190565b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561108057611080611047565b60405290565b60405161010081016001600160401b038111828210171561108057611080611047565b604051608081016001600160401b038111828210171561108057611080611047565b60405161018081016001600160401b038111828210171561108057611080611047565b60405161028081016001600160401b038111828210171561108057611080611047565b604051601f8201601f191681016001600160401b038111828210171561113957611139611047565b604052919050565b6001600160a01b038116811461115657600080fd5b50565b805161116481611141565b919050565b60005b8381101561118457818101518382015260200161116c565b50506000910152565b600082601f83011261119e57600080fd5b8151602083016000806001600160401b038411156111be576111be611047565b50601f8301601f19166020016111d381611111565b9150508281528583830111156111e857600080fd5b6111f6836020830184611169565b95945050505050565b80516006811061116457600080fd5b6000610120828403121561122157600080fd5b61122961105d565b905061123482611159565b815261124260208301611159565b602082015261125360408301611159565b604082015261126460608301611159565b606082015261127560808301611159565b608082015261128660a08301611159565b60a082015261129760c08301611159565b60c08201526112a860e08301611159565b60e08201526112ba6101008301611159565b61010082015292915050565b600061010082840312156112d957600080fd5b6112e1611086565b905081516112ee81611141565b81526020828101519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e09182015191810191909152919050565b60008183036103c081121561135257600080fd5b61135a6110a9565b915061018081121561136b57600080fd5b506113746110cb565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e080840151908201526113cb6101008401611159565b6101008201526113de6101208401611159565b61012082015261014083810151908201526101608084015190820152815261140a83610180840161120e565b602082015261141d836102a084016112c6565b60408201526103a091909101516060820152919050565b6000806103e0838503121561144857600080fd5b82516001600160401b0381111561145e57600080fd5b8301601f8101851361146f57600080fd5b80516001600160401b0381111561148857611488611047565b8060051b61149860208201611111565b918252602081840181019290810190888411156114b457600080fd5b6020850192505b838310156116665782516001600160401b038111156114d957600080fd5b8501610280818b03601f190112156114f057600080fd5b6114f86110ee565b61150460208301611159565b815261151260408301611159565b602082015261152360608301611159565b604082015260808201516001600160401b0381111561154157600080fd5b6115508c60208386010161118d565b60608301525060a082810151608083015260c0808401519183019190915260e080840151918301919091526101008084015191830191909152610120808401519183019190915261014080840151918301919091526101608084015191830191909152610180830151908201526115ca6101a08301611159565b6101808201526101c0828101516101a08301526101e080840151918301919091526102008084015191830191909152610220830151908201526102408201516001600160401b0381111561161d57600080fd5b61162c8c60208386010161118d565b6102208301525061164061026083016111ff565b6102408201526102809190910151610260820152825260209283019291909101906114bb565b809650505050505061167b846020850161133e565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156116eb578085048111156116cf576116cf61169a565b60018416156116dd57908102905b60019390931c9280026116b4565b935093915050565b60008261170257506001611793565b8161170f57506000611793565b8160018114611725576002811461172f5761174b565b6001915050611793565b60ff8411156117405761174061169a565b50506001821b611793565b5060208310610133831016604e8410600b841016171561176e575081810a611793565b61177b60001984846116b0565b806000190482111561178f5761178f61169a565b0290505b92915050565b60006117a583836116f3565b9392505050565b634e487b7160e01b600052602160045260246000fd5b808201808211156117935761179361169a565b600081518084526117ed816020860160208601611169565b601f01601f19169290920160200192915050565b6001600160a01b03868116825285811660208301528416604082015260a060608201819052600090611835908301856117d5565b905060018060a01b03831660808301529695505050505050565b6001600160a01b038681168252851660208201526040810184905260a060608201819052600090611835908301856117d5565b600181811c9082168061189657607f821691505b6020821081036118b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561077357806000526020600020601f840160051c810160208510156118e35750805b601f840160051c820191505b8181101561190357600081556001016118ef565b5050505050565b81516001600160401b0381111561192357611923611047565b611937816119318454611882565b846118bc565b6020601f82116001811461196b57600083156119535750848201515b600019600385901b1c1916600184901b178455611903565b600084815260208120601f198516915b8281101561199b578785015182556020948501946001909201910161197b565b50848210156119b95786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b818103818111156117935761179361169a565b6000600182016119ed576119ed61169a565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611a1957611a196119f4565b500490565b600082611a2d57611a2d6119f4565b500690565b61dbb88062001a426000396000f3fe6080604052600436106105e75760003560e01c806384467fdb11610308578063b47c3eaa11610198578063dd62ed3e116100eb578063ee7d72b41161009a578063f3f759c111610077578063f3f759c114611265578063f7866ee314611287578063f7fcc510146112a5578063fed76a56146112c557005b8063ee7d72b414611210578063f03b959d14611230578063f3c70aad1461125057005b8063e294df7c116100c8578063e294df7c146111b2578063e7f43c68146111d2578063ed5676e9146111f057005b8063dd62ed3e1461115d578063dfb1a4d21461117d578063e0e01d541461119257005b8063cf9c571911610147578063d144f00a11610124578063d144f00a14611108578063d372c07e1461111d578063d886f8a21461113d57005b8063cf9c5719146110b5578063cfd19fb9146110ca578063d0c80f13146110ea57005b8063ba52245811610175578063ba5224581461105e578063c3f909d414611073578063ceaad4551461109557005b8063b47c3eaa14610ff9578063b66b3e7914611019578063b7ab4db51461103c57005b80639dc29fac1161025b578063a9fd1a8f1161020a578063affb1cf1116101e7578063affb1cf114610f79578063b2ea9adb14610f99578063b3ecbadd14610fb9578063b46e552014610fd957005b8063a9fd1a8f14610f15578063aabc249614610f37578063ab8f6ffe14610f5757005b8063a8b2216e11610238578063a8b2216e14610eb3578063a9059cbb14610ed5578063a9a7d7c914610ef557005b80639dc29fac14610e53578063a515366a14610e73578063a5d059ca14610e9357005b80638ebb48b7116102b75780639358928b116102945780639358928b14610dd857806395d89b4114610ded57806396b477cb14610e3357005b80638ebb48b714610d2e5780638ef8c2fd14610d98578063905d76e914610db857005b80638bac7dad116102e55780638bac7dad14610cce5780638bb2e47714610cee5780638d34728714610d0e57005b806384467fdb14610c79578063852c484914610c99578063872cf05914610cb957005b8063416f86a21161048357806356176bc4116103d657806370a082311161038557806377e741c71161036257806377e741c714610c06578063784304b514610c26578063819b646314610c46578063833b1fce14610c5b57005b806370a0823114610b5d5780637264c4da14610b7d578063731b3a0314610bdf57005b80636b5f444c116103b35780636b5f444c14610b135780636fc5351514610b335780636fd2c80b14610b4857005b806356176bc414610aa65780635a06136214610ac65780635b7d6c3614610ae657005b80634bfe23f1116104325780634efcd15f1161040f5780634efcd15f14610a515780635049257114610a66578063520fdbbc14610a8657005b80634bfe23f1146109d25780634c1f1c77146109ff5780634da3baec14610a3157005b80634651e07b116104605780634651e07b1461097b578063496ccd9b146109905780634bb278f3146109b057005b8063416f86a21461092657806341de740014610946578063436459691461096657005b8063154d76d71161053b57806329070c6d116104ea578063354c40a7116104c7578063354c40a7146108c657806339f9eb1f146108e657806340c10f191461090657005b806329070c6d146108805780632b56feac14610895578063313ce567146108aa57005b80631904bb2e116105185780631904bb2e1461080c57806323b872dd1461083957806325ce1bb91461085957005b8063154d76d7146107b757806315ef30f8146107d757806318160ddd146107f757005b80630d8e6e2c11610597578063122b412211610574578063122b41221461073a5780631250a28d1461077757806312e7b45d1461079757005b80630d8e6e2c146106f05780631122063314610705578063114eaf551461071a57005b8063095ea7b3116105c5578063095ea7b31461068b5780630aac2da1146106bb5780630ae65e7a146106d057005b806302fb4d85146105e957806306fdde031461061c578063088566e91461066b575b005b3480156105f557600080fd5b5061060961060436600461bc5e565b6112da565b6040519081526020015b60405180910390f35b34801561062857600080fd5b5060408051808201909152600681527f4e6577746f6e000000000000000000000000000000000000000000000000000060208201525b604051610613919061bcda565b34801561067757600080fd5b5061060961068636600461bced565b6115f3565b34801561069757600080fd5b506106ab6106a636600461bc5e565b611613565b6040519015158152602001610613565b3480156106c757600080fd5b50602654610609565b3480156106dc57600080fd5b506105e76106eb36600461bced565b611634565b3480156106fc57600080fd5b50602d54610609565b34801561071157600080fd5b50601154610609565b34801561072657600080fd5b506105e761073536600461bd0a565b61174d565b34801561074657600080fd5b5061075a61075536600461bd30565b611824565b604080519384526020840192909252151590820152606001610613565b34801561078357600080fd5b506105e761079236600461bced565b611b55565b3480156107a357600080fd5b506105e76107b236600461bd0a565b611c5e565b3480156107c357600080fd5b506106096107d236600461bd8f565b611d85565b3480156107e357600080fd5b506105e76107f236600461bced565b61204c565b34801561080357600080fd5b506106096121d1565b34801561081857600080fd5b5061082c61082736600461bced565b61222c565b604051610613919061bf89565b34801561084557600080fd5b506106ab61085436600461bf9c565b6122a5565b34801561086557600080fd5b50602f546000908152603c6020526040902060030154610609565b34801561088c57600080fd5b50601054610609565b3480156108a157600080fd5b50603b54610609565b3480156108b657600080fd5b5060405160128152602001610613565b3480156108d257600080fd5b506105e76108e136600461bfdd565b6123c2565b3480156108f257600080fd5b506105e761090136600461bced565b6124c8565b34801561091257600080fd5b506105e761092136600461bc5e565b612627565b34801561093257600080fd5b506105e761094136600461bd0a565b61268f565b34801561095257600080fd5b5061060961096136600461bf9c565b6127c1565b34801561097257600080fd5b50602754610609565b34801561098757600080fd5b50604654610609565b34801561099c57600080fd5b506105e76109ab36600461bced565b6128d4565b3480156109bc57600080fd5b506109c5612b3d565b604051610613919061c190565b3480156109de57600080fd5b506109f26109ed36600461bd0a565b61364c565b604051610613919061c1da565b348015610a0b57600080fd5b506048546001600160a01b03165b6040516001600160a01b039091168152602001610613565b348015610a3d57600080fd5b506105e7610a4c36600461bd0a565b613766565b348015610a5d57600080fd5b50603454610609565b348015610a7257600080fd5b506106ab610a8136600461bc5e565b61398b565b348015610a9257600080fd5b506105e7610aa136600461bced565b6139a0565b348015610ab257600080fd5b506105e7610ac136600461c2de565b613db8565b348015610ad257600080fd5b506105e7610ae136600461bced565b613ffb565b348015610af257600080fd5b50610b06610b0136600461bced565b614154565b604051610613919061c348565b348015610b1f57600080fd5b506105e7610b2e36600461bd0a565b6141e6565b348015610b3f57600080fd5b50602f54610609565b348015610b5457600080fd5b50601354610609565b348015610b6957600080fd5b50610609610b7836600461bced565b61467a565b348015610b8957600080fd5b50610b9d610b9836600461bc5e565b6146e9565b6040516106139190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b348015610beb57600080fd5b50602f546000908152603c6020526040902060020154610609565b348015610c1257600080fd5b506105e7610c2136600461bd0a565b614725565b348015610c3257600080fd5b506105e7610c4136600461c3d7565b6147fc565b348015610c5257600080fd5b50602854610609565b348015610c6757600080fd5b50601d546001600160a01b0316610a19565b348015610c8557600080fd5b506105e7610c9436600461c427565b614ab9565b348015610ca557600080fd5b506105e7610cb436600461bc5e565b614bf6565b348015610cc557600080fd5b506105e7614e26565b348015610cda57600080fd5b506105e7610ce936600461bd0a565b614e94565b348015610cfa57600080fd5b506105e7610d0936600461bd0a565b614fbb565b348015610d1a57600080fd5b50610609610d2936600461bd0a565b615092565b348015610d3a57600080fd5b50610d4e610d4936600461bd0a565b61515c565b604051610613919060006080820190506001600160a01b0383511682526001600160a01b036020840151166020830152604083015160408301526060830151606083015292915050565b348015610da457600080fd5b506105e7610db336600461c4ce565b615221565b348015610dc457600080fd5b506105e7610dd336600461bd0a565b6154d7565b348015610de457600080fd5b50610609615609565b348015610df957600080fd5b5060408051808201909152600381527f4e544e0000000000000000000000000000000000000000000000000000000000602082015261065e565b348015610e3f57600080fd5b50610609610e4e36600461bd0a565b615663565b348015610e5f57600080fd5b506105e7610e6e36600461bc5e565b61570d565b348015610e7f57600080fd5b50610609610e8e36600461bc5e565b615871565b348015610e9f57600080fd5b50610609610eae36600461bc5e565b615892565b348015610ebf57600080fd5b50610ec86158a8565b604051610613919061c507565b348015610ee157600080fd5b506106ab610ef036600461bc5e565b615981565b348015610f0157600080fd5b50610609610f1036600461bf9c565b6159e2565b348015610f2157600080fd5b50610f2a615a03565b604051610613919061c58a565b348015610f4357600080fd5b506105e7610f5236600461bced565b615b99565b348015610f6357600080fd5b50610f6c615d1e565b604051610613919061c59d565b348015610f8557600080fd5b50610f2a610f9436600461bd0a565b615e26565b348015610fa557600080fd5b506105e7610fb436600461c5b0565b6160ae565b348015610fc557600080fd5b506105e7610fd436600461bced565b616112565b348015610fe557600080fd5b506105e7610ff436600461bced565b61626d565b34801561100557600080fd5b506105e761101436600461bced565b6165ef565b34801561102557600080fd5b5061102e6166f8565b60405161061392919061c603565b34801561104857600080fd5b5061105161681f565b604051610613919061c676565b34801561106a57600080fd5b50603354610609565b34801561107f57600080fd5b506110886168da565b604051610613919061c76f565b3480156110a157600080fd5b506105e76110b036600461bced565b616a40565b3480156110c157600080fd5b506105e7616b49565b3480156110d657600080fd5b506105e76110e536600461bced565b616bab565b3480156110f657600080fd5b506049546001600160a01b0316610a19565b34801561111457600080fd5b50610609616d92565b34801561112957600080fd5b506105e761113836600461bced565b616da1565b34801561114957600080fd5b506105e761115836600461bced565b616efc565b34801561116957600080fd5b5061060961117836600461c89e565b617005565b34801561118957600080fd5b50603154610609565b34801561119e57600080fd5b506106096111ad36600461c89e565b617084565b3480156111be57600080fd5b506106ab6111cd36600461bd0a565b617102565b3480156111de57600080fd5b506025546001600160a01b0316610a19565b3480156111fc57600080fd5b506105e761120b36600461bd0a565b617173565b34801561121c57600080fd5b506105e761122b36600461bd0a565b6172a5565b34801561123c57600080fd5b506105e761124b36600461bced565b6173f4565b34801561125c57600080fd5b50610609600481565b34801561127157600080fd5b5061127a6174fd565b604051610613919061c8cc565b34801561129357600080fd5b506019546001600160a01b0316610a19565b3480156112b157600080fd5b506105e76112c036600461c8db565b61769b565b3480156112d157600080fd5b50602954610609565b601c546000906001600160a01b031633148061130057506023546001600160a01b031633145b806113155750601d546001600160a01b031633145b61138c5760405162461bcd60e51b815260206004820152602860248201527f63616c6c6572206973206e6f7420616e206163636f756e746162696c6974792060448201527f636f6e747261637400000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61139461b85e565b6049546001600160a01b03166399ac2d486113ae86617937565b856040518363ffffffff1660e01b81526004016113cc92919061c910565b6000604051808303816000875af11580156113eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611413919081019061caec565b6019546001600160a01b03166000908152604160205260408120805492955092935084929161144390849061cb62565b90915550506001600160a01b038085166000908152604260209081526040918290208451815490851673ffffffffffffffffffffffffffffffffffffffff19918216178255918501516001820180549186169184169190911790559184015160028301805491909416911617909155606082015182919060038201906114c9908261cc0f565b506080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556101a0820151600d8201556101c0820151600e8201556101e0820151600f82015561020082015160108201556102208201516011820190611593908261cc0f565b5061024082015160128201805460ff191660018360058111156115b8576115b861bdd1565b021790555061026091909101516013909101556001600160a01b03841660009081526042602052604090206115ec90617c51565b5092915050565b6001600160a01b0381166000908152600160205260408120545b92915050565b600061161d617c9c565b611628338484617cf3565b50600161160d60008055565b61163c617c9c565b6001600160a01b03808216600081815260426020526040902060010154909116146116a95760405162461bcd60e51b815260206004820152601c60248201527f76616c696461746f72206d7573742062652072656769737465726564000000006044820152606401611383565b6001600160a01b038181166000908152604260205260409020541633146117385760405162461bcd60e51b815260206004820152602c60248201527f726571756972652063616c6c657220746f2062652076616c696461746f72206160448201527f646d696e206163636f756e7400000000000000000000000000000000000000006064820152608401611383565b61174181617e4c565b61174a60008055565b50565b6025546001600160a01b031633146117a75760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601354604080516080808252600f908201527f756e626f6e64696e67506572696f64000000000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1601355565b601c54600090819081906001600160a01b031633148061184e57506023546001600160a01b031633145b806118635750601d546001600160a01b031633145b6118d55760405162461bcd60e51b815260206004820152602860248201527f63616c6c6572206973206e6f7420616e206163636f756e746162696c6974792060448201527f636f6e74726163740000000000000000000000000000000000000000000000006064820152608401611383565b6118dd61b85e565b6049546001600160a01b031663a00f313f6118f78b617937565b8a438b8b8b6040518763ffffffff1660e01b815260040161191d9695949392919061ccd1565b6000604051808303816000875af115801561193c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611964919081019061cd22565b6102008301516019546001600160a01b0316600090815260416020526040812080549499509197509195509293508692916119a090849061cb62565b90915550506001600160a01b03808a166000908152604260209081526040918290208451815490851673ffffffffffffffffffffffffffffffffffffffff1991821617825591850151600182018054918616918416919091179055918401516002830180549190941691161790915560608201518291906003820190611a26908261cc0f565b506080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556101a0820151600d8201556101c0820151600e8201556101e0820151600f82015561020082015160108201556102208201516011820190611af0908261cc0f565b5061024082015160128201805460ff19166001836005811115611b1557611b1561bdd1565b021790555061026091909101516013909101556001600160a01b0389166000908152604260205260409020611b4990617c51565b50955095509592505050565b6025546001600160a01b03163314611baf5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601c546040805160808082526016908201527f6163636f756e746162696c697479436f6e74726163740000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6025546001600160a01b03163314611cb85760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b60008111611d085760405162461bcd60e51b815260206004820181905260248201527f636c7573746572696e67207468726573686f6c642063616e6e6f7420626520306044820152606401611383565b602c546040805160808082526013908201527f636c7573746572696e675468726573686f6c640000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1603a55565b601c546000906001600160a01b0316331480611dab57506023546001600160a01b031633145b80611dc05750601d546001600160a01b031633145b611e325760405162461bcd60e51b815260206004820152602860248201527f63616c6c6572206973206e6f7420616e206163636f756e746162696c6974792060448201527f636f6e74726163740000000000000000000000000000000000000000000000006064820152608401611383565b6049546000906001600160a01b03166341b6cb0f611e4f87617937565b4387876040518563ffffffff1660e01b8152600401611e71949392919061cd72565b6000604051808303816000875af1158015611e90573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eb8919081019061cda0565b6001600160a01b038087166000908152604260209081526040918290208451815490851673ffffffffffffffffffffffffffffffffffffffff19918216178255918501516001820180549186169184169190911790559184015160028301805491909416911617909155606082015191925082916003820190611f3b908261cc0f565b506080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556101a0820151600d8201556101c0820151600e8201556101e0820151600f82015561020082015160108201556102208201516011820190612005908261cc0f565b5061024082015160128201805460ff1916600183600581111561202a5761202a61bdd1565b02179055506102609190910151601390910155610200015190505b9392505050565b6025546001600160a01b031633146120a65760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6001600160a01b0381166121225760405162461bcd60e51b815260206004820152602960248201527f696e76616c696420636f6e7472616374206164647265737320666f72206c697160448201527f756964206c6f67696300000000000000000000000000000000000000000000006064820152608401611383565b6048546040805160808082526013908201527f6c69717569644c6f676963436f6e74726163740000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16048805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001036122245760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b506044545b90565b61223461b85e565b60005460011415806122505750601c546001600160a01b031633145b61229c5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b61160d82617937565b60006122af617c9c565b6001600160a01b0384166000908152603f60209081526040808320338452909152902054828110156123495760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401611383565b612354858585617f37565b6123688533612363868561cdd5565b617cf3565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ad91815260200190565b60405180910390a35050600080556001612045565b6025546001600160a01b0316331461241c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6029548111156124945760405162461bcd60e51b815260206004820152603460248201527f7363686564756c6520746f74616c206475726174696f6e20657863656564732060448201527f6d617820616c6c6f776564206475726174696f6e0000000000000000000000006064820152608401611383565b61249e8484617ffe565b82604560008282546124b0919061cdd5565b909155506124c2905084848484618098565b50505050565b6025546001600160a01b031633146125225760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6001600160a01b0381166125785760405162461bcd60e51b815260206004820152601b60248201527f706f6f6c2063616e6e6f74206265207a65726f206164647265737300000000006044820152606401611383565b6018546040805160808082526013908201527f7769746868656c6452657761726473506f6f6c0000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16018805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6025546001600160a01b031633146126815760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b61268b8282617ffe565b5050565b6025546001600160a01b031633146126e95760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6126f56004600a61cecf565b8111156127445760405162461bcd60e51b815260206004820152601260248201527f43616e6e6f7420657863656564203130302500000000000000000000000000006044820152606401611383565b6016546040805160808082526012908201527f70726f706f73657252657761726452617465000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1601655565b60006127cb617c9c565b6001600160a01b038381166000908152604260205260409020548186169116036128375760405162461bcd60e51b815260206004820152601f60248201527f63616e6e6f7420626f6e6420504153207573696e6720616c6c6f77616e6365006044820152606401611383565b6001600160a01b0384166000908152604060208181528183203384529052902054828110156128a85760405162461bcd60e51b815260206004820152601960248201527f616d6f756e7420657863656564656420616c6c6f77616e6365000000000000006044820152606401611383565b6128bc85336128b7868561cdd5565b618336565b6128c884848733618438565b91505061204560008055565b6025546001600160a01b0316331461292e5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601d54604080516080808252600e908201527f6f7261636c65436f6e747261637400000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03838116918217909255601e546040517f7adbf973000000000000000000000000000000000000000000000000000000008152600481019290925290911690637adbf97390602401600060405180830381600087803b158015612a3257600080fd5b505af1158015612a46573d6000803e3d6000fd5b50506020546040517f7adbf9730000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169250637adbf9739150602401600060405180830381600087803b158015612aaa57600080fd5b505af1158015612abe573d6000803e3d6000fd5b5050602480546040517f7adbf9730000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301529091169350637adbf9739250015b600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b5050505050565b612b4561b92c565b6047546001600160a01b03163314612bc55760405162461bcd60e51b815260206004820152602360248201527f66756e6374696f6e207265737472696374656420746f207468652070726f746f60448201527f636f6c00000000000000000000000000000000000000000000000000000000006064820152608401611383565b612bcd617c9c565b436032819055602f546000828152603060209081526040808320849055928252603c905281812060030154603954602a55601c5492517f6c9789b000000000000000000000000000000000000000000000000000000000815293101560048401819052929091829182916001600160a01b031690636c9789b0906024016060604051808303816000875af1158015612c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8d919061cedb565b6023546040517f6c9789b0000000000000000000000000000000000000000000000000000000008152881515600482015293965091945092506000916001600160a01b0390911690636c9789b0906024016020604051808303816000875af1158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d21919061cf09565b601d54604080517f4bb278f300000000000000000000000000000000000000000000000000000000815290519293506000926001600160a01b0390921691634bb278f391600480820192602092909190829003018187875af1158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf919061cf22565b9050851561330f576022546045546046546033546040517f92eff3cd0000000000000000000000000000000000000000000000000000000081526004810193909352602483019190915260448201524260648201526000916001600160a01b0316906392eff3cd90608401602060405180830381865afa158015612e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5b919061cf09565b9050806046541015612e6c57506046545b612e763082617ffe565b8060466000828254612e88919061cdd5565b90915550612e97905042618736565b60456000828254612ea8919061cb62565b909155505030600090815260416020526040902054612ec89047906188d6565b612ed06195ba565b612ed8619685565b6000806000612ee56197bc565b601d546040517fda78110e00000000000000000000000000000000000000000000000000000000815293965091945092506001600160a01b03169063da78110e90612f389086908590879060040161cf3d565b600060405180830381600087803b158015612f5257600080fd5b505af1158015612f66573d6000803e3d6000fd5b5050601c546040517fe08b14ed0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063e08b14ed9150612fb390859060040161c676565b600060405180830381600087803b158015612fcd57600080fd5b505af1158015612fe1573d6000803e3d6000fd5b50506023546040517fe3deef9c0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063e3deef9c915061303190603d90859060040161d003565b600060405180830381600087803b15801561304b57600080fd5b505af115801561305f573d6000803e3d6000fd5b50506031546026555050603554601155603654601a55603754601b55603854602b55603a54602c556023546040517fc024cc2c0000000000000000000000000000000000000000000000000000000081524360048201526001600160a01b039091169063c024cc2c90602401600060405180830381600087803b1580156130e557600080fd5b505af11580156130f9573d6000803e3d6000fd5b5050602f546000908152603c6020526040812060020154602654909350909150613123904361cb62565b9050426033819055506001602f600082825461313f919061cb62565b9091555050602f5460408051603d805460e0602082028401810190945260c083018181526132c19594849391929060009085015b82821015613257576000848152602090819020604080516060810182526003860290920180546001600160a01b03168352600181015493830193909352600283018054929392918401916131c69061cb75565b80601f01602080910402602001604051908101604052809291908181526020018280546131f29061cb75565b801561323f5780601f106132145761010080835404028352916020019161323f565b820191906000526020600020905b81548152906001019060200180831161322257829003601f168201915b50505050508152505081526020019060010190613173565b5050505081526020018581526020014381526020018481526020018b8152602001604051806080016040528060106000016001015481526020016010600001600a015481526020016010600001600b01548152602001601060150160060154815250815250619ac0565b602f5460465460455460408051938452602084019290925282820152517f3bb7b347508b7c148ec2094ac60d2e3d8b7595421025643f08b45cb78b326b589181900360600190a15050505050505b801561341457601d54604080517f0f65875c00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691630f65875c9160048082019260009290919082900301818387803b15801561337457600080fd5b505af1158015613388573d6000803e3d6000fd5b5050601e54604080517fa2e6204500000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216935063a2e62045925060048082019260209290919082900301816000875af192505050801561340d575060408051601f3d908101601f1916820190925261340a9181019061cf22565b60015b1561341457505b6040805160c080820183526026548252602754602080840191909152602a5483850152602c54606080850191909152845180820186528a81528083018a9052808601899052608080860191909152855180820187526011548152601a5481850152601b5481880152602b549281019290925260a08501919091528451908101855260055460ff16151581528a151581830152602f546000908152603c83528581208651815460e0958102820186018952958101868152969793969387019590949193859390928592919085015b828210156135c5576000848152602090819020604080516060810182526003860290920180546001600160a01b03168352600181015493830193909352600283018054929392918401916135349061cb75565b80601f01602080910402602001604051908101604052809291908181526020018280546135609061cb75565b80156135ad5780601f10613582576101008083540402835291602001916135ad565b820191906000526020600020905b81548152906001019060200180831161359057829003601f168201915b505050505081525050815260200190600101906134e1565b50505050815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250508152505081526020018281525097505050505050505061222960008055565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905290546001036136dd5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b506000818152600960209081526040918290208251610100808201855282546001600160a01b0390811683526001840154169382019390935260028201549381019390935260038101546060840152600481015460808401526005015460ff808216151560a08501529181048216151560c084015262010000900416151560e08201525b919050565b6047546001600160a01b031633146137e65760405162461bcd60e51b815260206004820152602360248201527f66756e6374696f6e207265737472696374656420746f207468652070726f746f60448201527f636f6c00000000000000000000000000000000000000000000000000000000006064820152608401611383565b6137ee6195ba565b6137f66197bc565b505042603355504360328190556000908152603060209081526040808320839055602f548151603d805460e09581028301860190945260c0820184815261174a96939592948594919390919085015b82821015613929576000848152602090819020604080516060810182526003860290920180546001600160a01b03168352600181015493830193909352600283018054929392918401916138989061cb75565b80601f01602080910402602001604051908101604052809291908181526020018280546138c49061cb75565b80156139115780601f106138e657610100808354040283529160200191613911565b820191906000526020600020905b8154815290600101906020018083116138f457829003601f168201915b50505050508152505081526020019060010190613845565b505050908252506000602080830191909152436040808401919091526026546060808501919091526080808501899052825190810183526011548152601a5493810193909352601b5491830191909152602b549082015260a090910152619ac0565b6000613995617c9c565b611628338484618336565b6025546001600160a01b031633146139fa5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b602554604080516080808252600f908201527f6f70657261746f724163636f756e74000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16025805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03838116918217909255601d546040517fb3ab15fb00000000000000000000000000000000000000000000000000000000815260048101929092529091169063b3ab15fb90602401600060405180830381600087803b158015613afe57600080fd5b505af1158015613b12573d6000803e3d6000fd5b5050601e546040517fb3ab15fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152909116925063b3ab15fb9150602401600060405180830381600087803b158015613b7657600080fd5b505af1158015613b8a573d6000803e3d6000fd5b5050601f546040517fb3ab15fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152909116925063b3ab15fb9150602401600060405180830381600087803b158015613bee57600080fd5b505af1158015613c02573d6000803e3d6000fd5b50506020546040517fb3ab15fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152909116925063b3ab15fb9150602401600060405180830381600087803b158015613c6657600080fd5b505af1158015613c7a573d6000803e3d6000fd5b50506021546040517fb3ab15fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152909116925063b3ab15fb9150602401600060405180830381600087803b158015613cde57600080fd5b505af1158015613cf2573d6000803e3d6000fd5b50506023546040517fb3ab15fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152909116925063b3ab15fb9150602401600060405180830381600087803b158015613d5657600080fd5b505af1158015613d6a573d6000803e3d6000fd5b5050602480546040517fb3ab15fb0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152909116935063b3ab15fb925001612b08565b6025546001600160a01b03163314613e125760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6000816060015111613e8c5760405162461bcd60e51b815260206004820152603260248201527f676173206c696d697420626f756e642064697669736f72206e6565647320746f60448201527f2062652067726561746572207468616e203000000000000000000000000000006064820152608401611383565b6000816020015111613f065760405162461bcd60e51b815260206004820152603660248201527f6261736520666565206368616e67652064656e6f6d696e61746f72206e65656460448201527f7320746f2062652067726561746572207468616e2030000000000000000000006064820152608401611383565b6000816040015111613f805760405162461bcd60e51b815260206004820152603060248201527f656c6173746963697479206d756c7469706c696572206e6565647320746f206260448201527f652067726561746572207468616e2030000000000000000000000000000000006064820152608401611383565b604080516080810182526011548152601a546020820152601b5481830152602b54606082015290517fa1a63f0900be3abc55a58106fb99ccb53c1cdeaee2488038528f520d142563cc91613fd591849061d0bb565b60405180910390a180516035556020810151603655604081015160375560600151603855565b6025546001600160a01b031633146140555760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6024546040805160808082526012908201527f61756374696f6e656572436f6e7472616374000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16024805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691909117909155602054161561174a576020546040517eede7e40000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301529091169062ede7e490602401612b08565b6000805460011415806141715750601c546001600160a01b031633145b8061418657506023546001600160a01b031633145b6141d25760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b6141db82617937565b610240015192915050565b6025546001600160a01b031633146142405760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b602354604080517f5ca1809c00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691635ca1809c9160048083019260209291908290030181865afa1580156142a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c7919061cf09565b602354604080517fc549176e00000000000000000000000000000000000000000000000000000000815290519293506000926001600160a01b039092169163c549176e916004808201926020929091908290030181865afa158015614330573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614354919061cf09565b9050600083116143a65760405162461bcd60e51b815260206004820152601860248201527f65706f636820706572696f642063616e6e6f74206265203000000000000000006044820152606401611383565b60016143b2838361cb62565b6143bc919061cdd5565b83116144575760405162461bcd60e51b8152602060048201526044602482018190527f65706f636820706572696f64206e6565647320746f2062652067726561746572908201527f207468616e206f6d697373696f6e44656c74612b6c6f6f6b6261636b57696e6460648201527f6f772d3100000000000000000000000000000000000000000000000000000000608482015260a401611383565b601d54604080517fb78dec5200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163b78dec529160048083019260209291908290030181865afa1580156144ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144de919061cf09565b9050836144ec82600261d107565b111561453a5760405162461bcd60e51b815260206004820152601960248201527f65706f636820706572696f6420697320746f6f20736d616c6c000000000000006044820152606401611383565b601d54604080517f57eba75900000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916357eba7599160048083019260209291908290030181865afa15801561459d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c1919061cf09565b9050846145cf82600261d107565b111561461d5760405162461bcd60e51b815260206004820152601960248201527f65706f636820706572696f6420697320746f6f20736d616c6c000000000000006044820152606401611383565b6031859055602f546000908152603c6020908152604091829020600301548251888152918201819052917f2eea6438d890c8603d4df81ad1bad2a4ea45c02b4837165f461ff3c81603abc7910160405180910390a1505050505050565b600080546001036146cd5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b506001600160a01b031660009081526041602052604090205490565b61471b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6120458383619bbb565b6025546001600160a01b0316331461477f5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601054604080516080808252600b908201527f747265617375727946656500000000000000000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1601055565b614804617c9c565b6001600160a01b0380831660008181526042602052604090206001810154909216146148725760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206e6f74207265676973746572656400000000000000006044820152606401611383565b80546001600160a01b031633146148f15760405162461bcd60e51b815260206004820152602f60248201527f726571756972652063616c6c657220746f2062652076616c696461746f72207460448201527f72656173757279206163636f756e7400000000000000000000000000000000006064820152608401611383565b6148fa83619cbb565b1561496d5760405162461bcd60e51b815260206004820152602260248201527f76616c696461746f72206d757374206e6f7420626520696e20636f6d6d69747460448201527f65650000000000000000000000000000000000000000000000000000000000006064820152608401611383565b60008061497984619d1a565b9250905081156149cb5760405162461bcd60e51b815260206004820152600b60248201527f656e6f6465206572726f720000000000000000000000000000000000000000006044820152606401611383565b60018301546001600160a01b03828116911614614a505760405162461bcd60e51b815260206004820152602760248201527f76616c696461746f72206e6f646520616464726573732063616e27742062652060448201527f75706461746564000000000000000000000000000000000000000000000000006064820152608401611383565b60018301546040517f0693af84e99c5d55723f139a6badcfffa980bb354cf9c32bd5da745e9edaa46b91614a96916001600160a01b03909116906003870190889061d11e565b60405180910390a160038301614aac858261cc0f565b5050505061268b60008055565b614ac1617c9c565b6000604051806102800160405280336001600160a01b0316815260200160006001600160a01b03168152602001856001600160a01b0316815260200186815260200160106000016002015481526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001438152602001600081526020016000815260200184815260200160006005811115614b8657614b8661bdd1565b8152602001614b976012600a61cecf565b90529050614ba58183619d65565b60208101516101808201516040517f8ad8bd2eb6950e5f332fd3a6dca48cb358ecfe3057848902b98cbdfe455c915c92614be492339289918b9161d152565b60405180910390a1506124c260008055565b614bfe617c9c565b6001600160a01b0380831660008181526042602052604090206001015490911614614c6b5760405162461bcd60e51b815260206004820152601c60248201527f76616c696461746f72206d7573742062652072656769737465726564000000006044820152606401611383565b6001600160a01b03828116600090815260426020526040902054163314614cfa5760405162461bcd60e51b815260206004820152602c60248201527f726571756972652063616c6c657220746f2062652076616c696461746f72206160448201527f646d696e206163636f756e7400000000000000000000000000000000000000006064820152608401611383565b614d066004600a61cecf565b811115614d555760405162461bcd60e51b815260206004820152601f60248201527f7265717569726520636f727265637420636f6d6d697373696f6e2072617465006044820152606401611383565b604080516060810182526001600160a01b038481168252436020808401918252838501868152600f80546000908152600d9093529582208551815473ffffffffffffffffffffffffffffffffffffffff1916951694909417845591516001808501919091559151600290930192909255835492939092909190614dd990849061cb62565b90915550506040518281526001600160a01b038416907f4fba51c92fa3d6ad8374d394f6cd5766857552e153d7384a8f23aa4ce9a8a7cf9060200160405180910390a25061268b60008055565b6025546001600160a01b03163314614e805760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b614e926005805460ff19166001179055565b565b6025546001600160a01b03163314614eee5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b60008111614f3e5760405162461bcd60e51b815260206004820152601960248201527f636f6d6d69747465652073697a652063616e27742062652030000000000000006044820152606401611383565b602854604080516080808252600d908201527f636f6d6d697474656553697a650000000000000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1602855565b6025546001600160a01b031633146150155760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6029546040805160808082526013908201527f6d61785363686564756c654475726174696f6e0000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1602955565b600080546001036150e55760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b60008281526009602052604090206005015460ff166151465760405162461bcd60e51b815260206004820152601960248201527f756e626f6e64696e67206e6f74206170706c69656420796574000000000000006044820152606401611383565b5060009081526009602052604090206003015490565b604080516080810182526000808252602082018190529181018290526060810182905290546001036151d05760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b50600090815260066020908152604091829020825160808101845281546001600160a01b03908116825260018301541692810192909252600281015492820192909252600390910154606082015290565b601c546001600160a01b031633148061524457506023546001600160a01b031633145b806152595750601d546001600160a01b031633145b6152cb5760405162461bcd60e51b815260206004820152602860248201527f63616c6c6572206973206e6f7420616e206163636f756e746162696c6974792060448201527f636f6e74726163740000000000000000000000000000000000000000000000006064820152608401611383565b6049546000906001600160a01b0316630273a3ee6152e885617937565b846040518363ffffffff1660e01b815260040161530692919061d1ad565b6000604051808303816000875af1158015615325573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261534d919081019061cda0565b6001600160a01b038085166000908152604260209081526040918290208451815490851673ffffffffffffffffffffffffffffffffffffffff199182161782559185015160018201805491861691841691909117905591840151600283018054919094169116179091556060820151919250829160038201906153d0908261cc0f565b506080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556101a0820151600d8201556101c0820151600e8201556101e0820151600f8201556102008201516010820155610220820151601182019061549a908261cc0f565b5061024082015160128201805460ff191660018360058111156154bf576154bf61bdd1565b02179055506102608201518160130155905050505050565b6025546001600160a01b031633146155315760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b61553d6004600a61cecf565b81111561558c5760405162461bcd60e51b815260206004820152601260248201527f43616e6e6f7420657863656564203130302500000000000000000000000000006044820152606401611383565b6015546040805160808082526014908201527f77697468686f6c64696e675468726573686f6c6400000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1601555565b6000805460010361565c5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b5060455490565b60006032546001615674919061cb62565b8211156156e95760405162461bcd60e51b815260206004820152602660248201527f63616e6e6f74206765742065706f636820696420666f7220612066757475726560448201527f20626c6f636b00000000000000000000000000000000000000000000000000006064820152608401611383565b6032548211615705575060009081526030602052604090205490565b5050602f5490565b6025546001600160a01b031633146157675760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6001600160a01b0382166000908152604160205260409020548111156157cf5760405162461bcd60e51b815260206004820152601660248201527f416d6f756e7420657863656564732062616c616e6365000000000000000000006044820152606401611383565b6001600160a01b038216600090815260416020526040812080548392906157f790849061cdd5565b925050819055508060446000828254615810919061cdd5565b925050819055508060456000828254615829919061cdd5565b90915550506040518181526001600160a01b038316907f5024dbeedf0c06664c9bd7be836915730c955e936972c020683dadf11d5488a3906020015b60405180910390a25050565b600061587b617c9c565b61588783833333618438565b905061160d60008055565b600061589c617c9c565b6158878383333361a1e6565b6060603e805480602002602001604051908101604052809291908181526020016000905b828210156159785783829060005260206000200180546158eb9061cb75565b80601f01602080910402602001604051908101604052809291908181526020018280546159179061cb75565b80156159645780601f1061593957610100808354040283529160200191615964565b820191906000526020600020905b81548152906001019060200180831161594757829003601f168201915b5050505050815260200190600101906158cc565b50505050905090565b600061598b617c9c565b615996338484617f37565b6040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350600161160d60008055565b60006159ec617c9c565b6159f88383863361a1e6565b905061204560008055565b615a0b61b95d565b602f546000908152603c602090815260408083208151815460e09481028201850190935260c08101838152909491938593919285929185015b82821015615b28576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191615a979061cb75565b80601f0160208091040260200160405190810160405280929190818152602001828054615ac39061cb75565b8015615b105780601f10615ae557610100808354040283529160200191615b10565b820191906000526020600020905b815481529060010190602001808311615af357829003601f168201915b50505050508152505081526020019060010190615a44565b505050508152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505081525050905090565b6025546001600160a01b03163314615bf35760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6001600160a01b038116615c6f5760405162461bcd60e51b815260206004820152602b60248201527f736c617368657220636f6e74726163742063616e6e6f7420626520746865207a60448201527f65726f20616464726573730000000000000000000000000000000000000000006064820152608401611383565b6049546040805160808082526007908201527f736c61736865720000000000000000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16049805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060603d805480602002602001604051908101604052809291908181526020016000905b82821015615978576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191615d959061cb75565b80601f0160208091040260200160405190810160405280929190818152602001828054615dc19061cb75565b8015615e0e5780601f10615de357610100808354040283529160200191615e0e565b820191906000526020600020905b815481529060010190602001808311615df157829003601f168201915b50505050508152505081526020019060010190615d42565b615e2e61b95d565b600054600103615e805760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b603254615e8e90600161cb62565b821115615f035760405162461bcd60e51b815260206004820152602360248201527f63616e6e6f74206765742065706f636820666f7220612066757475726520626c60448201527f6f636b00000000000000000000000000000000000000000000000000000000006064820152608401611383565b602f546032548311615f2057506000828152603060205260409020545b6000818152603c602090815260408083208151815460e09481028201850190935260c08101838152909491938593919285929185015b8282101561603a576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191615fa99061cb75565b80601f0160208091040260200160405190810160405280929190818152602001828054615fd59061cb75565b80156160225780601f10615ff757610100808354040283529160200191616022565b820191906000526020600020905b81548152906001019060200180831161600557829003601f168201915b50505050508152505081526020019060010190615f56565b505050508152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160405180608001604052908160008201548152602001600182015481526020016002820154815260200160038201548152505081525050915050919050565b6025546001600160a01b031633146161085760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b61268b828261a806565b6025546001600160a01b0316331461616c5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601f546040805160808082526015908201527f737570706c79436f6e74726f6c436f6e7472616374000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691909117909155602054161561174a576020546040517f52e5a0500000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152909116906352e5a05090602401612b08565b616275617c9c565b6001600160a01b03808216600081815260426020526040902060010154909116146162e25760405162461bcd60e51b815260206004820152601c60248201527f76616c696461746f72206d7573742062652072656769737465726564000000006044820152606401611383565b6001600160a01b038082166000908152604260205260409020805490911633146163745760405162461bcd60e51b815260206004820152602f60248201527f726571756972652063616c6c657220746f2062652076616c696461746f72207460448201527f72656173757279206163636f756e7400000000000000000000000000000000006064820152608401611383565b6000601282015460ff16600581111561638f5761638f61bdd1565b036163dc5760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f7220616c72656164792061637469766500000000000000006044820152606401611383565b6002601282015460ff1660058111156163f7576163f761bdd1565b1480156164075750438160100154115b156164545760405162461bcd60e51b815260206004820152601760248201527f76616c696461746f72207374696c6c20696e206a61696c0000000000000000006044820152606401611383565b6004601282015460ff16600581111561646f5761646f61bdd1565b14801561647f5750438160100154115b156164f25760405162461bcd60e51b815260206004820152602660248201527f76616c696461746f72207374696c6c20696e206a61696c20666f7220696e616360448201527f74697669747900000000000000000000000000000000000000000000000000006064820152608401611383565b6003601282015460ff16600581111561650d5761650d61bdd1565b1415801561653457506005601282015460ff1660058111156165315761653161bdd1565b14155b6165805760405162461bcd60e51b815260206004820152601c60248201527f76616c696461746f72206a61696c6564207065726d616e656e746c79000000006044820152606401611383565b60128101805460ff191690558054602f546000908152603c60209081526040918290206003015491519182526001600160a01b038581169316917f60fcbf2d07dc712a93e59fb28f1edb626d7c2497c57ba71a8c0b3999ecb9a3b5910160405180910390a35061174a60008055565b6025546001600160a01b031633146166495760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b602354604080516080808252601e908201527f6f6d697373696f6e4163636f756e746162696c697479436f6e7472616374000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16023805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060806003600481805461670b9061cb75565b80601f01602080910402602001604051908101604052809291908181526020018280546167379061cb75565b80156167845780601f1061675957610100808354040283529160200191616784565b820191906000526020600020905b81548152906001019060200180831161676757829003601f168201915b505050505091508080546167979061cb75565b80601f01602080910402602001604051908101604052809291908181526020018280546167c39061cb75565b80156168105780601f106167e557610100808354040283529160200191616810565b820191906000526020600020905b8154815290600101906020018083116167f357829003601f168201915b50505050509050915091509091565b606061682d60005460011490565b1561687a5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b602e8054806020026020016040519081016040528092919081815260200182805480156168d057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116168b2575b5050505050905090565b6168e261b9b6565b506040805161020081018252601054608080830191825260115460a08085019190915260125460c08086019190915260135460e08087019190915260145461010080880191909152601554610120808901919091526016546101408901526017546101608901526018546001600160a01b039081166101808a015260195481166101a08a0152601a546101c08a0152601b546101e08a015296885288519081018952601c5487168152601d548716602082810191909152601e548816828b0152601f5488166060808401919091528154891683890152602154891683880152602254891683870152602354891683860152602454891683850152818a019290925289519283018a52602554909716825260265496820196909652602754818901526028548187015260295494810194909452602a5492840192909252602b5490830152602c549082015292820192909252602d549181019190915290565b6025546001600160a01b03163314616a9a5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6021546040805160808082526016908201527f757067726164654d616e61676572436f6e74726163740000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16021805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6025546001600160a01b03163314616ba35760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b614e9261a81c565b6025546001600160a01b03163314616c055760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b602080546040805160808082526015908201527f73746162696c697a6174696f6e436f6e7472616374000000000000000000000060a08201526001600160a01b039283169381019390935290831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03838116919091179091556024541615616d3657602480546040517f4f5058950000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015290911691634f5058959101600060405180830381600087803b158015616d1d57600080fd5b505af1158015616d31573d6000803e3d6000fd5b505050505b601f546001600160a01b03161561174a57601f546040517fdb7f521a0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301529091169063db7f521a90602401612b08565b616d9e6004600a61cecf565b81565b6025546001600160a01b03163314616dfb5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601e54604080516080808252600b908201527f616375436f6e747261637400000000000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a1601e805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691909117909155602054161561174a576020546040517f4b8ef9430000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690634b8ef94390602401612b08565b6025546001600160a01b03163314616f565760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b601954604080516080808252600f908201527f74726561737572794163636f756e74000000000000000000000000000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16019805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001036170585760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b506001600160a01b039182166000908152603f6020908152604080832093909416825291909152205490565b600080546001036170d75760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b506001600160a01b039182166000908152604060208181528183209390941682529190925290205490565b600080546001036171555760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e63792064657465637465640000006044820152606401611383565b50600090815260096020526040902060050154610100900460ff1690565b6025546001600160a01b031633146171cd5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b6171d96004600a61cecf565b8111156172285760405162461bcd60e51b815260206004820152601260248201527f43616e6e6f7420657863656564203130302500000000000000000000000000006044820152606401611383565b6017546040805160808082526010908201527f6f7261636c65526577617264526174650000000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1601755565b6025546001600160a01b031633146172ff5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b600081116173745760405162461bcd60e51b8152602060048201526024808201527f676173206c696d6974206e6565647320746f206265206772656174657220746860448201527f616e2030000000000000000000000000000000000000000000000000000000006064820152608401611383565b6039819055602a546040805160808082526008908201527f6761734c696d697400000000000000000000000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a150565b6025546001600160a01b0316331461744e5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401611383565b602254604080516080808252601b908201527f696e666c6174696f6e436f6e74726f6c6c6572436f6e7472616374000000000060a08201526001600160a01b03928316602082015291831682820152436060830152517fe821ac8084a7329d09d00cf1380cba50edea5f54a7bd453d49a9c354f565d4a09181900360c00190a16022805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61750561bad9565b601c54604080517fc3f909d400000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c3f909d4916004808301926101209291908290030181865afa158015617569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061758d919061d228565b6040805160c0810182526026548152602754602080830191909152602a5482840152602c54606080840191909152835190810184528385015181528185015181830152601c5484517fdbd183880000000000000000000000000000000000000000000000000000000081528551969750939560808701959294928501936001600160a01b039092169263dbd183889260048083019391928290030181865afa15801561763d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617661919061cf09565b90528152604080516080810182526011548152601a54602082810191909152601b5492820192909252602b54606082015291015292915050565b602f546000908152603c60205260409020600301544310156176ff5760405162461bcd60e51b815260206004820152601260248201527f65706f6368206973206e6f7420656e64656400000000000000000000000000006044820152606401611383565b601c5483906001600160a01b031633148061772457506023546001600160a01b031633145b8061774b57506001600160a01b038181166000908152604260205260409020600c01541633145b806177605750601d546001600160a01b031633145b6177d25760405162461bcd60e51b815260206004820152602260248201527f63616c6c6572206973206e6f742061207265776172642064697374726962757460448201527f6f720000000000000000000000000000000000000000000000000000000000006064820152608401611383565b6177dc828461cb62565b33600090815260416020526040902054101561783a5760405162461bcd60e51b815260206004820152601260248201527f6e6f7420656e6f7567682062616c616e636500000000000000000000000000006044820152606401611383565b6001600160a01b0384166178905760405162461bcd60e51b815260206004820181905260248201527f76616c696461746f7220616464726573732063616e6e6f74206265207a65726f6044820152606401611383565b6001600160a01b03808516600081815260426020526040902060010154909116146178fd5760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206e6f74207265676973746572656400000000000000006044820152606401611383565b617907828461cb62565b336000908152604160205260408120805490919061792690849061cdd5565b909155506124c2905084848461a840565b61793f61b85e565b6001600160a01b0382166179955760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f74207265717565737420656d7074792076616c696461746f7200006044820152606401611383565b6001600160a01b0380831660008181526042602052604090206001015490911614617a025760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206e6f74207265676973746572656400000000000000006044820152606401611383565b6001600160a01b038083166000908152604260209081526040918290208251610280810184528154851681526001820154851692810192909252600281015490931691810191909152600382018054919291606084019190617a639061cb75565b80601f0160208091040260200160405190810160405280929190818152602001828054617a8f9061cb75565b8015617adc5780601f10617ab157610100808354040283529160200191617adc565b820191906000526020600020905b815481529060010190602001808311617abf57829003601f168201915b505050918352505060048201546020820152600582015460408201526006820154606082015260078201546080820152600882015460a0820152600982015460c0820152600a82015460e0820152600b820154610100820152600c8201546001600160a01b0316610120820152600d820154610140820152600e820154610160820152600f82015461018082015260108201546101a08201526011820180546101c090920191617b8b9061cb75565b80601f0160208091040260200160405190810160405280929190818152602001828054617bb79061cb75565b8015617c045780601f10617bd957610100808354040283529160200191617c04565b820191906000526020600020905b815481529060010190602001808311617be757829003601f168201915b5050509183525050601282015460209091019060ff166005811115617c2b57617c2b61bdd1565b6005811115617c3c57617c3c61bdd1565b81526020016013820154815250509050919050565b600d8101541561174a57600d810154617c6c6012600a61cecf565b82600801548360050154617c80919061cdd5565b617c8a919061d107565b617c94919061d2dd565b601382015550565b60005415617cec5760405162461bcd60e51b815260206004820152601360248201527f7265656e7472616e6379206465746563746564000000000000000000000000006044820152606401611383565b6001600055565b6001600160a01b038316617d6e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611383565b6001600160a01b038216617dea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611383565b6001600160a01b038381166000818152603f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038116600090815260426020526040812090601282015460ff166005811115617e7e57617e7e61bdd1565b14617ecb5760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206d7573742062652061637469766500000000000000006044820152606401611383565b60128101805460ff191660011790558054602f546000908152603c60209081526040918290206003015491519182526001600160a01b038581169316917f75bdcdbe540758778e669d108fbcb7ede734f27f46e4e5525eeb8ecf91849a9c910160405180910390a35050565b6001600160a01b038316600090815260416020526040902054811115617f9f5760405162461bcd60e51b815260206004820152601660248201527f616d6f756e7420657863656564732062616c616e6365000000000000000000006044820152606401611383565b6001600160a01b03831660009081526041602052604081208054839290617fc790849061cdd5565b90915550506001600160a01b03821660009081526041602052604081208054839290617ff490849061cb62565b9091555050505050565b6001600160a01b0382166000908152604160205260408120805483929061802690849061cb62565b92505081905550806044600082825461803f919061cb62565b925050819055508060456000828254618058919061cb62565b90915550506040518181526001600160a01b038316907f48490b4407bb949b708ec5f514b4167f08f4969baaf78d53b05028adf369bfcf90602001615865565b6001600160a01b0384166180ee5760405162461bcd60e51b815260206004820152601c60248201527f7661756c7420616464726573732063616e6e6f74206265207a65726f000000006044820152606401611383565b6000811161813e5760405162461bcd60e51b815260206004820181905260248201527f7363686564756c65206475726174696f6e2063616e6e6f74206265207a65726f6044820152606401611383565b428210156181b45760405162461bcd60e51b815260206004820152602560248201527f7363686564756c652063616e6e6f74207374617274206265666f72652063726560448201527f6174696f6e0000000000000000000000000000000000000000000000000000006064820152608401611383565b600083116182045760405162461bcd60e51b815260206004820152601960248201527f616d6f756e742073686f756c6420626520706f736974697665000000000000006044820152606401611383565b6001600160a01b0384166000908152600160205260408120805490910361827e57600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387161790555b6040805160a08101825285815260006020808301828152838501888152606080860189815260808701868152895460018082018c558b8952978790209851600590910290980197885593519587019590955590516002860155925160038501555160049093019290925582518781529182018690529181018490526001600160a01b038716917fe8c9fd2e555ad3e633f249786eff2a2a523c05e21f497fbf8daadfb2e78a1edd910160405180910390a25050505050565b6001600160a01b03831661838c5760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401611383565b6001600160a01b0382166183e25760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401611383565b6001600160a01b0383811660008181526040602081815281832094871680845294815291819020859055518481527f78225b0c38a851deb4e94d5318d250e0add756beaec6e85252429c41ed55f8ea9101617e3f565b6001600160a01b038416600081815260426020526040812090911580159061846f575060018101546001600160a01b038781169116145b6184bb5760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206e6f74207265676973746572656400000000000000006044820152606401611383565b6000601282015460ff1660058111156184d6576184d661bdd1565b146185235760405162461bcd60e51b815260206004820152601b60248201527f76616c696461746f72206e65656420746f2062652061637469766500000000006044820152606401611383565b600085116185995760405162461bcd60e51b815260206004820152602360248201527f616d6f756e74206e65656420746f206265207374726963746c7920706f73697460448201527f69766500000000000000000000000000000000000000000000000000000000006064820152608401611383565b6001600160a01b0384166000908152604160205260409020548511156186015760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74204e6577746f6e2062616c616e636500000000006044820152606401611383565b6001600160a01b0384166000908152604160205260408120805487929061862990849061cdd5565b9091555050604080516080810182526001600160a01b0386811680835289821660208085018281528587018c8152436060808901918252600880546000908152600687528b90208a518154908b1673ffffffffffffffffffffffffffffffffffffffff199182161782559551600182018054918c16919097161790955592516002850155905160039093019290925588549054885191871686148083529382018e90529781019790975294959094938916937fcedee1b81e707f05d3f5f6b965053c24ce7759214e4886d87c02e0261367d1f2910160405180910390a4600880549060006187168361d2f1565b9190505550600160085461872a919061cdd5565b98975050505050505050565b600254600090815b818110156188cf576000600160006002848154811061875f5761875f61d30b565b60009182526020808320909101546001600160a01b0316835282019290925260400181208054909250905b818110156188c45760008382815481106187a6576187a661d30b565b9060005260206000209060050201905080600401548810156188305760405162461bcd60e51b815260206004820152602860248201527f7363686564756c6520616c726561647920756e6c6f636b656420666f7220676960448201527f76656e2074696d650000000000000000000000000000000000000000000000006064820152608401611383565b8060020154881161884157506188bc565b600481018890556003810154600282015460009190618860908b61cdd5565b1061886d5750805461889a565b600382015482546002840154618883908c61cdd5565b61888d919061d107565b618897919061d2dd565b90505b60018201546188a9908261cdd5565b6188b3908961cb62565b60019092015595505b60010161878a565b50505060010161873e565b5050919050565b811580156188e2575080155b156188eb575050565b601054600090670de0b6b3a76400009061890690859061d107565b618910919061d2dd565b90508015618988576019546040516000916001600160a01b03169083908381818185875af1925050503d8060008114618965576040519150601f19603f3d011682016040523d82523d6000602084013e61896a565b606091505b509091505080151560010361898657618983828561cdd5565b93505b505b600080806189986004600a61cecf565b6017546189a5908861d107565b6189af919061d2dd565b905060006189bf6004600a61cecf565b6017546189cc908861d107565b6189d6919061d2dd565b602354604080517f53b1821b00000000000000000000000000000000000000000000000000000000815290519293506000926001600160a01b03909216916353b1821b916004808201926020929091908290030181865afa158015618a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618a63919061cf09565b1115618ae957603b54618a786004600a61cecf565b618a82919061d107565b603d54601654618a92908a61d107565b618a9c919061d107565b618aa6919061d2dd565b603b54909450618ab86004600a61cecf565b618ac2919061d107565b603d54601654618ad2908961d107565b618adc919061d107565b618ae6919061d2dd565b92505b618af3848361cb62565b618afd908861cdd5565b9650618b09838261cb62565b618b13908761cdd5565b602354604080517f7f5e2f1100000000000000000000000000000000000000000000000000000000815290519298506000926001600160a01b0390921691637f5e2f11916004808201926020929091908290030181865afa158015618b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618ba0919061cf09565b603d5490915060009067ffffffffffffffff811115618bc157618bc161c254565b604051908082528060200260200182016040528015618bea578160200160208202803683370190505b5090506000806000805b603d5481101561917357600060426000603d8481548110618c1757618c1761d30b565b906000526020600020906003020160000160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020905060006034548f603d8581548110618c7757618c7761d30b565b906000526020600020906003020160010154618c93919061d107565b618c9d919061d2dd565b905060006034548f603d8681548110618cb857618cb861d30b565b906000526020600020906003020160010154618cd4919061d107565b618cde919061d2dd565b90506000821180618cef5750600081115b15619167576002601284015460ff166005811115618d0f57618d0f61bdd1565b1480618d3357506003601284015460ff166005811115618d3157618d3161bdd1565b145b15618d6b5783888881518110618d4b57618d4b61d30b565b602090810291909101015286618d608161d2f1565b97505050505061916b565b6004601284015460ff166005811115618d8657618d8661bdd1565b1480618daa57506005601284015460ff166005811115618da857618da861bdd1565b145b15618dcf57618db9828761cb62565b9550618dc5818661cb62565b945050505061916b565b60235460018401546040517f9a11e0e60000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526000929190911690639a11e0e690602401602060405180830381865afa158015618e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618e5f919061cf09565b601554909150811115618ed15760008a618e79838661d107565b618e83919061d2dd565b905060008b618e92848661d107565b618e9c919061d2dd565b9050618ea8828a61cb62565b9850618eb4818961cb62565b9750618ec0828661cdd5565b9450618ecc818561cdd5565b935050505b600084600801548560050154618ee7919061cdd5565b9050600085600501548583618efc919061d107565b618f06919061d2dd565b90506000618f14828761cdd5565b90508015618fd057865460405160009182916001600160a01b03909116906108fc90859084818181858888f193505050503d8060008114618f71576040519150601f19603f3d011682016040523d82523d6000602084013e618f76565b606091505b509092509050811515600003618fcd5788546040517f1137d8c966ce69b9630fb2294be011f3d64cc56e91fad7d375f0662568e9d35291618fc4916001600160a01b0390911690849061d33a565b60405180910390a15b50505b6005870154600090618fe2878661d107565b618fec919061d2dd565b90506000618ffa828861cdd5565b3060009081526041602052604081208054929350839290919061901e90849061cdd5565b9091555050600189015461903d906001600160a01b031682600061a840565b600084118061904c5750600082115b1561910757600c89015461906b9030906001600160a01b031684617f37565b600c8901546001600160a01b0316600081815260416020526040908190205490517fa0ce552d000000000000000000000000000000000000000000000000000000008152600481019190915263a0ce552d90869060240160206040518083038185885af11580156190e0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190619105919061cf09565b505b60018901546040805185815260208101879052908101839052606081018490526001600160a01b03909116907f5d4e9c803c111cc5e507b1cd7ffb638d0084c4d0696bb89a39434637ce31b4d59060800160405180910390a25050505050505b5050505b600101618bf4565b5082156193035760005b838110156193015760008582815181106191995761919961d30b565b6020026020010151905060006034548f603d84815481106191bc576191bc61d30b565b9060005260206000209060030201600101546191d8919061d107565b6191e2919061d2dd565b905060006034548f603d85815481106191fd576191fd61d30b565b906000526020600020906003020160010154619219919061d107565b619223919061d2dd565b601c5490915061923e9030906001600160a01b031683617f37565b601c54603d80546001600160a01b039092169163a8031a1d918591879081106192695761926961d30b565b600091825260209091206003909102015460405160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b039091166004820152602481018590526044016000604051808303818588803b1580156192d957600080fd5b505af11580156192ed573d6000803e3d6000fd5b50506001909601955061917d945050505050565b505b602354604080517f53b1821b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916353b1821b9160048083019260209291908290030181865afa158015619366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061938a919061cf09565b1115619435576023546001600160a01b03166193a730828b617f37565b6023546001600160a01b03828116600090815260416020526040908190205490517feeb92233000000000000000000000000000000000000000000000000000000008152600481019190915291169063eeb92233908c906024016000604051808303818588803b15801561941a57600080fd5b505af115801561942e573d6000803e3d6000fd5b5050505050505b601d5461944d9030906001600160a01b031688617f37565b601d546001600160a01b0316600081815260416020526040908190205490517f59974e3800000000000000000000000000000000000000000000000000000000815260048101919091526359974e389089906024016000604051808303818588803b1580156194bb57600080fd5b505af11580156194cf573d6000803e3d6000fd5b5050505050600082111561958e5760185460405160009182916001600160a01b039091169085908381818185875af1925050503d806000811461952e576040519150601f19603f3d011682016040523d82523d6000602084013e619533565b606091505b50909250905081151560000361958b576018546040517f1137d8c966ce69b9630fb2294be011f3d64cc56e91fad7d375f0662568e9d35291619582916001600160a01b0390911690849061d33a565b60405180910390a15b50505b80156195ac576018546195ac9030906001600160a01b031683617f37565b505050505050505050505050565b6007545b6008548110156195e1576195dc816195d58161d2f1565b925061a8b5565b6195be565b50600854600755600b54600a54036195f557565b600c545b600b5481101561961c57619617816196108161d2f1565b925061aaf9565b6195f9565b50600b54600c55600a54805b600b5481101561967f5760135460008281526009602052604090206004015443916196529161cb62565b11619672576196608161adfe565b61966b60018361cb62565b9150619677565b61967f565b600101619628565b50600a55565b600f54600e541015614e9257600e546000908152600d60205260409020601354600182015443916196b59161cb62565b11156196be5750565b80546001600160a01b039081166000908152604260205260409081902060028401546004808301829055600c83015493517f19fac8fd000000000000000000000000000000000000000000000000000000008152929493909316926319fac8fd9261972e92910190815260200190565b600060405180830381600087803b15801561974857600080fd5b505af115801561975c573d6000803e3d6000fd5b5050600e80546000908152600d60205260408120805473ffffffffffffffffffffffffffffffffffffffff19168155600180820183905560029091018290558254909450919250906197af90849061cb62565b9091555061968592505050565b60608060606000602e80549050116198165760405162461bcd60e51b815260206004820152601860248201527f5468657265206d7573742062652076616c696461746f727300000000000000006044820152606401611383565b61981e61bb54565b6028546080820152602e815260426020820152603d6040820152603460608201526198488161af63565b602854603b5561985a603e600061bb72565b603d54806198aa5760405162461bcd60e51b815260206004820152601260248201527f636f6d6d697474656520697320656d70747900000000000000000000000000006044820152606401611383565b60008167ffffffffffffffff8111156198c5576198c561c254565b6040519080825280602002602001820160405280156198ee578160200160208202803683370190505b50905060008267ffffffffffffffff81111561990c5761990c61c254565b604051908082528060200260200182016040528015619935578160200160208202803683370190505b50905060008367ffffffffffffffff8111156199535761995361c254565b60405190808252806020026020018201604052801561997c578160200160208202803683370190505b50905060005b84811015619ab157600060426000603d84815481106199a3576199a361d30b565b60009182526020808320600392830201546001600160a01b0316845283019390935260409091018120603e8054600181018255925292507f8d800d6614d35eed73733ee453164a3b48076eb3138f466adeeb9dec7bb31f700190619a099083018261d36a565b50600281015485516001600160a01b0390911690869084908110619a2f57619a2f61d30b565b6001600160a01b03928316602091820292909201015260018201548551911690859084908110619a6157619a6161d30b565b6001600160a01b03928316602091820292909201015281548451911690849084908110619a9057619a9061d30b565b6001600160a01b039092166020928302919091019091015250600101619982565b50919790965090945092505050565b6000828152603c6020908152604080832084830151600182015584820151600282015560608086015160038301556080860151600483015560a0860151805160058401559384015160068301559183015160078201559101516008820155905b8251518110156124c2578251805183919083908110619b4157619b4161d30b565b6020908102919091018101518254600180820185556000948552938390208251600390920201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091178155918101519282019290925560408201516002820190619bb0908261cc0f565b505050600101619b20565b619bed6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038316600090815260016020526040902080548310619c555760405162461bcd60e51b815260206004820152601760248201527f7363686564756c6520646f6573206e6f742065786973740000000000000000006044820152606401611383565b808381548110619c6757619c6761d30b565b90600052602060002090600502016040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505091505092915050565b6000805b603d54811015619d1157603d8181548110619cdc57619cdc61d30b565b60009182526020909120600390910201546001600160a01b0390811690841603619d095750600192915050565b600101619cbf565b50600092915050565b600080619d2561bb90565b60008060ff9050604083875160208901845afa619d4157600080fd5b505080516020909101516c0100000000000000000000000090910494909350915050565b60e2815114619db65760405162461bcd60e51b815260206004820152601460248201527f496e76616c69642070726f6f66206c656e6774680000000000000000000000006044820152606401611383565b60308261022001515114619e0c5760405162461bcd60e51b815260206004820152601c60248201527f496e76616c696420636f6e73656e737573206b6579206c656e677468000000006044820152606401611383565b619e158261af7d565b604080518082018252601a81527f19457468657265756d205369676e6564204d6573736167653a0a000000000000602080830191909152845192519192600092619e8a920160609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040529050600082619ea8835161b0bd565b83604051602001619ebb9392919061d43f565b60408051601f1981840301815282825280516020918201206002808552606085018452909450600093929091830190803683370190505090506000808080619f0f8982619f0a6041600261d107565b61b1fa565b90506000619f2a8a619f236041600261d107565b606061b1fa565b905060205b8251811015619fef57619f42838261b322565b6040805160008152602081018083528d905260ff8316918101919091526060810184905260808101839052929850909650945060019060a0016020604051602081039080840390855afa158015619f9d573d6000803e3d6000fd5b5050604051601f190151905087619fb560418461d2dd565b81518110619fc557619fc561d30b565b6001600160a01b0390921660209283029190910190910152619fe860418261cb62565b9050619f2f565b508a602001516001600160a01b03168660008151811061a0115761a01161d30b565b60200260200101516001600160a01b03161461a0955760405162461bcd60e51b815260206004820152602960248201527f496e76616c6964206e6f6465206b6579206f776e6572736869702070726f6f6660448201527f2070726f766964656400000000000000000000000000000000000000000000006064820152608401611383565b8a604001516001600160a01b03168660018151811061a0b65761a0b661d30b565b60200260200101516001600160a01b03161461a13a5760405162461bcd60e51b815260206004820152602b60248201527f496e76616c6964206f7261636c65206b6579206f776e6572736869702070726f60448201527f6f662070726f76696465640000000000000000000000000000000000000000006064820152608401611383565b600161a1508c6102200151838e6000015161b356565b1461a1c35760405162461bcd60e51b815260206004820152603660248201527f496e76616c696420636f6e73656e737573206b6579206f776e6572736869702060448201527f70726f6f6620666f7220726567697374726174696f6e000000000000000000006064820152608401611383565b61a1d08b6040015161b3be565b61a1d98b61b441565b5050505050505050505050565b6001600160a01b038416600081815260426020526040812090911580159061a21d575060018101546001600160a01b038781169116145b61a2695760405162461bcd60e51b815260206004820152601860248201527f76616c696461746f72206e6f74207265676973746572656400000000000000006044820152606401611383565b6000851161a2b95760405162461bcd60e51b815260206004820152601560248201527f756e626f6e64696e6720616d6f756e74206973203000000000000000000000006044820152606401611383565b80546001600160a01b038581169116148061a4ff57600c8201546040517f84955c880000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260009216906384955c8890602401602060405180830381865afa15801561a334573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061a358919061cf09565b90508681101561a3d05760405162461bcd60e51b815260206004820152602b60248201527f696e73756666696369656e7420756e6c6f636b6564204c6971756964204e657760448201527f746f6e2062616c616e63650000000000000000000000000000000000000000006064820152608401611383565b856001600160a01b0316856001600160a01b03160361a46f57600c8301546040517f282d3fdf0000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018a90529091169063282d3fdf90604401600060405180830381600087803b15801561a45257600080fd5b505af115801561a466573d6000803e3d6000fd5b5050505061a4f9565b600c8301546040517f708e91e50000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301528781166024830152604482018a90529091169063708e91e590606401600060405180830381600087803b15801561a4e057600080fd5b505af115801561a4f4573d6000803e3d6000fd5b505050505b5061a629565b846001600160a01b0316846001600160a01b03161461a5865760405162461bcd60e51b815260206004820152602160248201527f63616e6e6f7420756e626f6e6420504153207573696e6720616c6c6f77616e6360448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401611383565b8582600b0154836008015461a59b919061cdd5565b101561a60f5760405162461bcd60e51b815260206004820152602760248201527f696e73756666696369656e742073656c6620626f6e646564206e6577746f6e2060448201527f62616c616e6365000000000000000000000000000000000000000000000000006064820152608401611383565b8582600b01600082825461a623919061cb62565b90915550505b836001600160a01b0316856001600160a01b0316886001600160a01b03167f58cac3f318ed4be30304429f66e0d6794a95041b92ebe8d35ec0d0abcf1b593c848a600b5460405161a68f9392919092151583526020830191909152604082015260600190565b60405180910390a46040805161010080820183526001600160a01b0388811683528a811660208085019182528486018c8152600060608701818152436080890190815260a0890183815260c08a018481528c151560e08c01908152600b8054875260099098529b85209a518b5473ffffffffffffffffffffffffffffffffffffffff19908116918b16919091178c55975160018c0180549099169916989098179096559251600289015551600388015590516004870155915160059095018054935196517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1695909517951515909302949094177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000911515919091021790915580549161a7e78361d2f1565b91905055506001600b5461a7fb919061cdd5565b979650505050505050565b61a81160038361b713565b61268b60048261b713565b61a8286003600061bbae565b61a8346004600061bbae565b6005805460ff19169055565b8115801561a84c575080155b1561a85657505050565b6001600160a01b03831660009081526042602052604081206008810180549192859261a88390849061cb62565b9091555061a8939050828461cb62565b81600501600082825461a8a6919061cb62565b909155506124c2905081617c51565b600081815260066020908152604080832060018101546001600160a01b03168452604290925282209091601282015460ff16600581111561a8f85761a8f861bdd1565b1461a98757600282015482546001600160a01b03166000908152604160205260408120805490919061a92b90849061cb62565b909155505081546001830154600284015460128401546040516001600160a01b0394851694909316927f1ff2b052afa4bb37ce30d9aaccde416a700b97e632d089111749af937f87834292617e3f92909160ff9091169061d482565b805482546001600160a01b0390811691161461aabe576000808260080154836005015461a9b4919061cdd5565b90508060000361a9db576002840154915061a9d16012600a61cecf565b601384015561a9fd565b80846002015484600d015461a9f0919061d107565b61a9fa919061d2dd565b91505b600c83015484546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018590529116906340c10f1990604401600060405180830381600087803b15801561aa6757600080fd5b505af115801561aa7b573d6000803e3d6000fd5b505050508183600d01600082825461aa93919061cb62565b9091555050600284015460058401805460009061aab190849061cb62565b9091555061aaf492505050565b816002015481600801600082825461aad6919061cb62565b90915550506002820154600582018054600090617ff490849061cb62565b505050565b600081815260096020908152604080832060018101546001600160a01b031684526042909252822060058201549192909162010000900460ff1661ad08576002830154600c83015484546040517f7eee288d0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101849052911690637eee288d90604401600060405180830381600087803b15801561aba657600080fd5b505af115801561abba573d6000803e3d6000fd5b50505050600c83015484546040517f9dc29fac0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101849052911690639dc29fac90604401600060405180830381600087803b15801561ac2857600080fd5b505af115801561ac3c573d6000803e3d6000fd5b5050505060008360080154846005015461ac56919061cdd5565b600d85015490915061ac68828461d107565b61ac72919061d2dd565b92508184600d01600082825461ac88919061cdd5565b9091555050600684015460000361aca5576003850183905561acc9565b6006840154600785015461acb9908561d107565b61acc3919061d2dd565b60038601555b8284600601600082825461acdd919061cb62565b9091555050600385015460078501805460009061acfb90849061cb62565b9091555061adce92505050565b506002820154600882015481111561ad21575060088101545b816009015460000361ad39576003830181905561ad5d565b6009820154600a83015461ad4d908361d107565b61ad57919061d2dd565b60038401555b8082600901600082825461ad71919061cb62565b90915550506003830154600a8301805460009061ad8f90849061cb62565b925050819055508082600801600082825461adaa919061cdd5565b90915550506002830154600b8301805460009061adc890849061cdd5565b90915550505b6005808401805460ff191660011790558201805482919060009061adf390849061cdd5565b909155505050505050565b60008181526009602052604081206005810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055600381015490910361ae4a575050565b60018101546001600160a01b03166000908152604260205260408120600583015490919062010000900460ff1661aedd5781600701548260060154846003015461ae94919061d107565b61ae9e919061d2dd565b90508082600601600082825461aeb4919061cdd5565b9091555050600383015460078301805460009061aed290849061cdd5565b9091555061af3a9050565b81600a01548260090154846003015461aef6919061d107565b61af00919061d2dd565b90508082600901600082825461af16919061cdd5565b90915550506003830154600a8301805460009061af3490849061cdd5565b90915550505b82546001600160a01b03166000908152604160205260408120805483929061adf390849061cb62565b60fa60a06000808285855af461aaf4573d6000803e3d6000fd5b600061af8c8260600151619d1a565b6001600160a01b0390911660208401529050801561afec5760405162461bcd60e51b815260206004820152600b60248201527f656e6f6465206572726f720000000000000000000000000000000000000000006044820152606401611383565b6020808301516001600160a01b0390811660009081526042909252604090912060010154161561b05e5760405162461bcd60e51b815260206004820152601c60248201527f76616c696461746f7220616c72656164792072656769737465726564000000006044820152606401611383565b61b06a6004600a61cecf565b8260800151111561268b5760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420636f6d6d697373696f6e20726174650000000000000000006044820152606401611383565b60608160000361b10057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561b12a578061b1148161d2f1565b915061b1239050600a8361d2dd565b915061b104565b60008167ffffffffffffffff81111561b1455761b14561c254565b6040519080825280601f01601f19166020018201604052801561b16f576020820181803683370190505b5090505b841561b1f25761b18460018361cdd5565b915061b191600a8661d496565b61b19c90603061cb62565b60f81b81838151811061b1b15761b1b161d30b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061b1eb600a8661d2dd565b945061b173565b949350505050565b60608161b20881601f61cb62565b101561b2565760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401611383565b61b260828461cb62565b8451101561b2b05760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401611383565b60608215801561b2cf576040519150600082526020820160405261b319565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561b30857805183526020928301920161b2f0565b5050858452601f01601f1916604052505b50949350505050565b8181018051602082015160409092015190919060001a601b81101561b34f5761b34c601b8261d4aa565b90505b9250925092565b600061b36061bbe8565b600085858560405160200161b3779392919061d4c3565b6040516020818303038152906040529050600060fb905060008251602061b39e919061cb62565b90506020848285855afa61b3b157600080fd5b5050905195945050505050565b6001600160a01b0381166000908152604360205260409020541561b4245760405162461bcd60e51b815260206004820152601460248201527f6f7261636c6520736572766572206578697374730000000000000000000000006044820152606401611383565b6001600160a01b0316600090815260436020526040902060019055565b6101808101516001600160a01b031661b551576048546001600160a01b031661b4d25760405162461bcd60e51b815260206004820152602260248201527f6c6971756964206c6f67696320636f6e7472616374206e6f74206465706c6f7960448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401611383565b602e5460009061b4e19061b0bd565b905081602001518260000151836080015183604860009054906101000a90046001600160a01b031660405161b5159061bc06565b61b52395949392919061d521565b604051809103906000f08015801561b53f573d6000803e3d6000fd5b506001600160a01b0316610180830152505b60208181018051602e80546001808201835560009283527f37fa166cbdbfbb1561ccd9ea985ec0218b5e68502e230525f544285b2bdf3d7e909101805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b039586161790915584518416835260429095526040918290208651815487169085161781559351908401805486169184169190911790558401516002830180549094169116179091556060820151829190600382019061b60e908261cc0f565b506080820151600482015560a0820151600582015560c0820151600682015560e0820151600782015561010082015160088201556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556101a0820151600d8201556101c0820151600e8201556101e0820151600f8201556102008201516010820155610220820151601182019061b6d8908261cc0f565b5061024082015160128201805460ff1916600183600581111561b6fd5761b6fd61bdd1565b0217905550610260820151816013015590505050565b81546002600180831615610100020382160482518082016020811060208410016002811461b7bd576001811461b7e2578660005260208404602060002001600160028402018855602085068060200390508088018589016001836101000a0392508282511684540184556001840193506020820191505b8082101561b7a7578151845560018401935060208201915061b78a565b815191036101000a90819004029091555061b855565b60028302826020036101000a846020036101000a60208901510402018501875561b855565b8660005260208404602060002001600160028402018855846020038088018589016001836101000a0392508282511660ff198a160184556020820191506001840193505b8082101561b843578151845560018401935060208201915061b826565b815191036101000a9081900402909155505b50505050505050565b60405180610280016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001606081526020016000600581111561b91f5761b91f61bdd1565b8152602001600081525090565b604080516080810182526000808252602082015290810161b94b61b95d565b815260200161b95861bad9565b905290565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000815260200161b9586040518060800160405280600081526020016000815260200160008152602001600081525090565b604051806080016040528061ba37604051806101800160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081525090565b8152604080516101208101825260008082526020828101829052928201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820152910190815260200161b91f60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200161bb2460405180606001604052806000815260200160008152602001600081525090565b815260200161b9586040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060a001604052806005906020820280368337509192915050565b508054600082559060005260206000209081019061174a919061bc13565b60405180604001604052806002906020820280368337509192915050565b50805461bbba9061cb75565b6000825580601f1061bbca575050565b601f01602090049060005260206000209081019061174a919061bc34565b60405180602001604052806001906020820280368337509192915050565b61062a8061d55983390190565b8082111561bc3057600061bc27828261bbae565b5060010161bc13565b5090565b5b8082111561bc30576000815560010161bc35565b6001600160a01b038116811461174a57600080fd5b6000806040838503121561bc7157600080fd5b823561bc7c8161bc49565b946020939093013593505050565b60005b8381101561bca557818101518382015260200161bc8d565b50506000910152565b6000815180845261bcc681602086016020860161bc8a565b601f01601f19169290920160200192915050565b602081526000612045602083018461bcae565b60006020828403121561bcff57600080fd5b81356120458161bc49565b60006020828403121561bd1c57600080fd5b5035919050565b6006811061174a57600080fd5b600080600080600060a0868803121561bd4857600080fd5b853561bd538161bc49565b94506020860135935060408601359250606086013561bd718161bd23565b9150608086013561bd818161bd23565b809150509295509295909350565b60008060006060848603121561bda457600080fd5b833561bdaf8161bc49565b925060208401359150604084013561bdc68161bd23565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6006811061be37577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b80516001600160a01b031682526000602082015161be6460208501826001600160a01b03169052565b50604082015161be7f60408501826001600160a01b03169052565b506060820151610280606085015261be9b61028085018261bcae565b90506080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010083015161010085015261012083015161012085015261014083015161014085015261016083015161016085015261018083015161bf116101808601826001600160a01b03169052565b506101a08301516101a08501526101c08301516101c08501526101e08301516101e085015261020083015161020085015261022083015184820361022086015261bf5b828261bcae565b91505061024083015161bf7261024086018261be00565b506102608301516102608501528091505092915050565b602081526000612045602083018461be3b565b60008060006060848603121561bfb157600080fd5b833561bfbc8161bc49565b9250602084013561bfcc8161bc49565b929592945050506040919091013590565b6000806000806080858703121561bff357600080fd5b843561bffe8161bc49565b966020860135965060408601359560600135945092505050565b600082825180855260208501945060208160051b8301016020850160005b8381101561c09257601f1985840301885281516001600160a01b03815116845260208101516020850152604081015190506060604085015261c07b606085018261bcae565b6020998a019990945092909201915060010161c036565b50909695505050505050565b60008151610120845261c0b561012085018261c018565b90506020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015161c11260a0860182805182526020810151602083015260408101516040830152606081015160608301525050565b509392505050565b80518252602081015160208301526040810151604083015260608101516060830152608081015180516080840152602081015160a0840152604081015160c08401525060a081015161aaf460e0840182805182526020810151602083015260408101516040830152606081015160608301525050565b60208152815115156020820152602082015115156040820152600060408301516101c0606084015261c1c66101e084018261c09e565b9050606084015161c112608085018261c11a565b6000610100820190506001600160a01b0383511682526001600160a01b03602084015116602083015260408301516040830152606083015160608301526080830151608083015260a0830151151560a083015260c083015161c24060c084018215159052565b5060e08301516115ec60e084018215159052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610280810167ffffffffffffffff8111828210171561c2a75761c2a761c254565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561c2d65761c2d661c254565b604052919050565b6000608082840312801561c2f157600080fd5b506040516000906080810167ffffffffffffffff8111828210171561c3185761c31861c254565b60409081528435825260208086013590830152848101359082015260609384013593810193909352509092915050565b6020810161160d828461be00565b600067ffffffffffffffff82111561c3705761c37061c254565b50601f01601f191660200190565b600082601f83011261c38f57600080fd5b813560208301600061c3a861c3a38461c356565b61c2ad565b905082815285838301111561c3bc57600080fd5b82826020830137600092810160200192909252509392505050565b6000806040838503121561c3ea57600080fd5b823561c3f58161bc49565b9150602083013567ffffffffffffffff81111561c41157600080fd5b61c41d8582860161c37e565b9150509250929050565b6000806000806080858703121561c43d57600080fd5b843567ffffffffffffffff81111561c45457600080fd5b61c4608782880161c37e565b945050602085013561c4718161bc49565b9250604085013567ffffffffffffffff81111561c48d57600080fd5b61c4998782880161c37e565b925050606085013567ffffffffffffffff81111561c4b657600080fd5b61c4c28782880161c37e565b91505092959194509250565b6000806040838503121561c4e157600080fd5b823561c4ec8161bc49565b9150602083013561c4fc8161bd23565b809150509250929050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561c57e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845261c56985835161bcae565b9450602093840193919091019060010161c52f565b50929695505050505050565b602081526000612045602083018461c09e565b602081526000612045602083018461c018565b6000806040838503121561c5c357600080fd5b823567ffffffffffffffff81111561c5da57600080fd5b61c5e68582860161c37e565b925050602083013567ffffffffffffffff81111561c41157600080fd5b60408152600061c616604083018561bcae565b828103602084015261c628818561bcae565b95945050505050565b600081518084526020840193506020830160005b8281101561c66c5781516001600160a01b031686526020958601959091019060010161c645565b5093949350505050565b602081526000612045602083018461c631565b6001600160a01b038151168252602081015161c6b060208401826001600160a01b03169052565b50604081015161c6cb60408401826001600160a01b03169052565b50606081015161c6e660608401826001600160a01b03169052565b50608081015161c70160808401826001600160a01b03169052565b5060a081015161c71c60a08401826001600160a01b03169052565b5060c081015161c73760c08401826001600160a01b03169052565b5060e081015161c75260e08401826001600160a01b03169052565b5061010081015161aaf46101008401826001600160a01b03169052565b60006103c0820190508251805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e084015261010081015161c7e06101008501826001600160a01b03169052565b5061012081015161c7fd6101208501826001600160a01b03169052565b5061014081015161014084015261016081015161016084015250602083015161c82a61018084018261c689565b5060408381015180516001600160a01b03166102a085015260208101516102c0850152908101516102e0840152606080820151610300850152608082015161032085015260a082015161034085015260c082015161036085015260e090910151610380840152909201516103a09091015290565b6000806040838503121561c8b157600080fd5b823561c8bc8161bc49565b9150602083013561c4fc8161bc49565b610160810161160d828461c11a565b60008060006060848603121561c8f057600080fd5b833561c8fb8161bc49565b95602085013595506040909401359392505050565b60408152600061c923604083018561be3b565b90508260208301529392505050565b80516137618161bc49565b600082601f83011261c94e57600080fd5b815160208301600061c96261c3a38461c356565b905082815285838301111561c97657600080fd5b61c62883602083018461bc8a565b80516137618161bd23565b6000610280828403121561c9a257600080fd5b61c9aa61c283565b905061c9b58261c932565b815261c9c36020830161c932565b602082015261c9d46040830161c932565b6040820152606082015167ffffffffffffffff81111561c9f357600080fd5b61c9ff8482850161c93d565b6060830152506080828101519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261ca66610180830161c932565b6101808201526101a082810151908201526101c080830151908201526101e08083015190820152610200808301519082015261022082015167ffffffffffffffff81111561cab357600080fd5b61cabf8482850161c93d565b6102208301525061cad3610240830161c984565b6102408201526102609182015191810191909152919050565b6000806040838503121561caff57600080fd5b825167ffffffffffffffff81111561cb1657600080fd5b61cb228582860161c98f565b602094909401519395939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561160d5761160d61cb33565b600181811c9082168061cb8957607f821691505b60208210810361cbc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561aaf457806000526020600020601f840160051c8101602085101561cbef5750805b601f840160051c820191505b81811015612b36576000815560010161cbfb565b815167ffffffffffffffff81111561cc295761cc2961c254565b61cc3d8161cc37845461cb75565b8461cbc8565b6020601f82116001811461cc74576000831561cc595750848201515b600184901b600019600386901b1c198216175b855550612b36565b600084815260208120601f198516915b8281101561cca4578785015182556020948501946001909201910161cc84565b508482101561ccc25786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60c08152600061cce460c083018961be3b565b905086602083015285604083015284606083015261cd05608083018561be00565b61a7fb60a083018461be00565b8051801515811461376157600080fd5b60008060006060848603121561cd3757600080fd5b835167ffffffffffffffff81111561cd4e57600080fd5b61cd5a8682870161c98f565b6020860151909450925061b34c90506040850161cd12565b60808152600061cd85608083018761be3b565b905084602083015283604083015261c628606083018461be00565b60006020828403121561cdb257600080fd5b815167ffffffffffffffff81111561cdc957600080fd5b61b1f28482850161c98f565b8181038181111561160d5761160d61cb33565b6001815b600184111561ce235780850481111561ce075761ce0761cb33565b600184161561ce1557908102905b60019390931c92800261cdec565b935093915050565b60008261ce3a5750600161160d565b8161ce475750600061160d565b816001811461ce5d576002811461ce675761ce83565b600191505061160d565b60ff84111561ce785761ce7861cb33565b50506001821b61160d565b5060208310610133831016604e8410600b841016171561cea6575081810a61160d565b61ceb3600019848461cde8565b806000190482111561cec75761cec761cb33565b029392505050565b6000612045838361ce2b565b60008060006060848603121561cef057600080fd5b5050815160208301516040909301519094929350919050565b60006020828403121561cf1b57600080fd5b5051919050565b60006020828403121561cf3457600080fd5b6120458261cd12565b60608152600061cf50606083018661c631565b828103602084015261cf62818661c631565b9050828103604084015261cf76818561c631565b9695505050505050565b6000815461cf8d8161cb75565b80855260018216801561cfa7576001811461cfc35761cffa565b60ff1983166020870152602082151560051b870101935061cffa565b84600052602060002060005b8381101561cff15781546020828a01015260018201915060208101905061cfcf565b87016020019450505b50505092915050565b6000604082016040835280855480835260608501915060608160051b860101925086600052602060002060005b8281101561d0a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030184526001600160a01b038254168552600182015460208601526060604086015261d08d606086016002840161cf80565b9450602093909301926003919091019060010161d030565b50505050828103602084015261c628818561c631565b82518152602080840151818301526040808501518184015260608086015181850152845160808501529184015160a084015283015160c083015282015160e08201526101008101612045565b808202811582820484141761160d5761160d61cb33565b6001600160a01b038416815260606020820152600061d140606083018561cf80565b828103604084015261cf76818561bcae565b6001600160a01b03861681526001600160a01b03851660208201526001600160a01b038416604082015260a06060820152600061d19260a083018561bcae565b90506001600160a01b03831660808301529695505050505050565b60408152600061d1c0604083018561be3b565b9050612045602083018461be00565b60006060828403121561d1e157600080fd5b6040516060810167ffffffffffffffff8111828210171561d2045761d20461c254565b60409081528351825260208085015190830152928301519281019290925250919050565b600061012082840312801561d23c57600080fd5b5060405160009060a0810167ffffffffffffffff8111828210171561d2635761d26361c254565b6040908152845182526020808601519083015284810151908201819052915061d28f856060860161d1cf565b606082015261d2a18560c0860161d1cf565b6080820152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261d2ec5761d2ec61d2ae565b500490565b6000600019820361d3045761d30461cb33565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6001600160a01b0383168152606060208201526000606082015260806040820152600061b1f2608083018461bcae565b81810361d375575050565b61d37f825461cb75565b67ffffffffffffffff81111561d3975761d39761c254565b61d3a58161cc37845461cb75565b6000601f82116001811461d3d7576000831561cc59575081850154600184901b600019600386901b1c1982161761cc6c565b600085815260209020601f19841690600086815260209020845b8381101561d411578286015482556001958601959091019060200161d3f1565b508583101561d42f5781850154600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000845161d45181846020890161bc8a565b84519083019061d46581836020890161bc8a565b845191019061d47881836020880161bc8a565b0195945050505050565b82815260408101612045602083018461be00565b60008261d4a55761d4a561d2ae565b500690565b60ff818116838216019081111561160d5761160d61cb33565b6000845161d4d581846020890161bc8a565b84519083019061d4e981836020890161bc8a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169301928352505060140192915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015260a06060820152600061d19260a083018561bcae56fe608060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f916101af565b806001600160a01b031663f5be34896040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906102a4565b83111561009d57600080fd5b600b80546001600160a01b038088166001600160a01b031992831617909255600c805492871692909116919091179055600d8390556040516100e39083906020016102bd565b604051602081830303815290604052600990816101009190610373565b508160405160200161011291906102bd565b604051602081830303815290604052600a908161012f9190610373565b5050600f80546001600160a01b031916331790555061043192505050565b6001600160a01b038116811461016257600080fd5b50565b80516101708161014d565b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101a657818101518382015260200161018e565b50506000910152565b600080600080600060a086880312156101c757600080fd5b85516101d28161014d565b60208701519095506101e38161014d565b6040870151606088015191955093506001600160401b0381111561020657600080fd5b8601601f8101881361021757600080fd5b80516001600160401b0381111561023057610230610175565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025e5761025e610175565b6040528181528282016020018a101561027657600080fd5b61028782602083016020860161018b565b935061029891505060808701610165565b90509295509295909350565b6000602082840312156102b657600080fd5b5051919050565b644c4e544e2d60d81b8152600082516102dd81600585016020870161018b565b9190910160050192915050565b600181811c908216806102fe57607f821691505b60208210810361031e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561036e57806000526020600020601f840160051c8101602085101561034b5750805b601f840160051c820191505b8181101561036b5760008155600101610357565b50505b505050565b81516001600160401b0381111561038c5761038c610175565b6103a08161039a84546102ea565b84610324565b6020601f8211600181146103d457600083156103bc5750848201515b600019600385901b1c1916600184901b17845561036b565b600084815260208120601f198516915b8281101561040457878501518255602094850194600190920191016103e4565b50848210156104225786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6101ea806104406000396000f3fe6080604052366100315761002f610014610038565b73ffffffffffffffffffffffffffffffffffffffff16610154565b005b61002f6100145b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c1f1c776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100cc9190610177565b905073ffffffffffffffffffffffffffffffffffffffff811661014f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6c6971756964206c6f67696320636f6e7472616374206e6f7420736574000000604482015260640160405180910390fd5b919050565b3660008037600080366000845af43d6000803e80610171573d6000fd5b503d6000f35b60006020828403121561018957600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146101ad57600080fd5b939250505056fea26469706673582212208d728fda0cd0f5597ff980eda213a5c80dad8f60140987d564b00bb38bb2a2d664736f6c634300081e0033a2646970667358221220fcc7b1fb7fa1e3c108f318facc337a6f50cc42f149b9c215dee646cec3be775064736f6c634300081e00336080604052348015600f57600080fd5b50600f80546001600160a01b03191633179055611fc7806100316000396000f3fe6080604052600436106101dc5760003560e01c806359355736116101025780639dc29fac11610095578063bf99b73e11610064578063bf99b73e1461057d578063d768d5781461059d578063dd62ed3e146105bd578063f5be3489146105dd576101e3565b80639dc29fac14610515578063a0ce552d14610535578063a9059cbb14610548578063bd96102f14610568576101e3565b80637eee288d116100d15780637eee288d146104a057806384955c88146104c0578063949813b8146104e057806395d89b4114610500576101e3565b8063593557361461042b578063708e91e51461044b57806370a082311461046b57806372c819631461048b576101e3565b806323b872dd1161017a5780633b19e84a116101495780633b19e84a146103c35780633b80e355146103e15780633e4eb36c146103f657806340c10f191461040b576101e3565b806323b872dd14610352578063282d3fdf14610372578063313ce56714610392578063372500ab146103ae576101e3565b806318160ddd116101b657806318160ddd146102e3578063187cf4d71461030657806319fac8fd1461031b5780631eeffad01461033d576101e3565b806306fdde0314610256578063095ea7b3146102815780631195e07e146102b1576101e3565b366101e357005b60405162461bcd60e51b815260206004820152602860248201527f66616c6c6261636b206e6f7420696d706c656d656e74656420666f72204c697160448201527f7569644c6f67696300000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b34801561026257600080fd5b5061026b6105f2565b6040516102789190611c17565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004611c9a565b610684565b6040519015158152602001610278565b3480156102bd57600080fd5b50600b546001600160a01b03165b6040516001600160a01b039091168152602001610278565b3480156102ef57600080fd5b506102f86106ab565b604051908152602001610278565b34801561031257600080fd5b506102f8610705565b34801561032757600080fd5b5061033b610336366004611cc4565b610714565b005b34801561034957600080fd5b506102f86107ad565b34801561035e57600080fd5b506102a161036d366004611cdd565b610807565b34801561037e57600080fd5b5061033b61038d366004611c9a565b610930565b34801561039e57600080fd5b5060405160128152602001610278565b3480156103ba57600080fd5b5061033b6109cf565b3480156103cf57600080fd5b50600c546001600160a01b03166102cb565b3480156103ed57600080fd5b506102f8600981565b34801561040257600080fd5b506102f8610a9c565b34801561041757600080fd5b5061033b610426366004611c9a565b610af6565b34801561043757600080fd5b506102f8610446366004611d1a565b610bd3565b34801561045757600080fd5b5061033b610466366004611cdd565b610c46565b34801561047757600080fd5b506102f8610486366004611d1a565b610d71565b34801561049757600080fd5b506102f8600481565b3480156104ac57600080fd5b5061033b6104bb366004611c9a565b610de0565b3480156104cc57600080fd5b506102f86104db366004611d1a565b610f2b565b3480156104ec57600080fd5b506102f86104fb366004611d1a565b610fad565b34801561050c57600080fd5b5061026b611066565b34801561052157600080fd5b5061033b610530366004611c9a565b611075565b6102f8610543366004611cc4565b611145565b34801561055457600080fd5b506102a1610563366004611c9a565b6113a2565b34801561057457600080fd5b5061033b61140c565b34801561058957600080fd5b506102a1610598366004611c9a565b611548565b3480156105a957600080fd5b506102f86105b8366004611d35565b61155d565b3480156105c957600080fd5b506102f86105d8366004611d35565b6115dc565b3480156105e957600080fd5b506102f861165b565b60606009805461060190611d68565b80601f016020809104026020016040519081016040528092919081815260200182805461062d90611d68565b801561067a5780601f1061064f5761010080835404028352916020019161067a565b820191906000526020600020905b81548152906001019060200180831161065d57829003601f168201915b5050505050905090565b600061068e611667565b6106993384846116be565b5060016106a560008055565b92915050565b600080546001036106fe5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b5060055490565b6107116009600a611f0d565b81565b61071c611667565b600f546001600160a01b0316331461079c5760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b600d8190556107aa60008055565b50565b600080546001036108005760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b50600e5490565b6000610811611667565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156108ab5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161024d565b6108bf85336108ba8685611f19565b6116be565b6108c98584611817565b6108d384846118ff565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161091891815260200190565b60405180910390a350506000805560015b9392505050565b610938611667565b600f546001600160a01b031633146109b85760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b6109c28282611953565b6109cb60008055565b5050565b6109d7611667565b60006109e233611a1e565b3360008181526006602052604080822082905551929350916108fc90849084818181858888f193505050503d8060008114610a39576040519150601f19603f3d011682016040523d82523d6000602084013e610a3e565b606091505b5050905080610a8f5760405162461bcd60e51b815260206004820152601260248201527f4661696c656420746f2073656e642041544e0000000000000000000000000000604482015260640161024d565b5050610a9a60008055565b565b60008054600103610aef5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b50600d5490565b610afe611667565b600f546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b610b8882826118ff565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a36109cb60008055565b60008054600103610c265760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b506001600160a01b0381166000908152600260205260409020545b919050565b610c4e611667565b600f546001600160a01b03163314610cce5760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205481811015610d445760405162461bcd60e51b815260206004820152601860248201527f616d6f756e74206578636565647320616c6c6f77616e63650000000000000000604482015260640161024d565b610d588484610d538585611f19565b611aaf565b610d628483611953565b50610d6c60008055565b505050565b60008054600103610dc45760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b506001600160a01b031660009081526001602052604090205490565b610de8611667565b600f546001600160a01b03163314610e685760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b6001600160a01b038216600090815260026020526040902054811115610ef65760405162461bcd60e51b815260206004820152602360248201527f63616e277420756e6c6f636b206d6f72652066756e6473207468616e206c6f6360448201527f6b65640000000000000000000000000000000000000000000000000000000000606482015260840161024d565b6001600160a01b03821660009081526002602052604081208054839290610f1e908490611f19565b9091555050600080555050565b60008054600103610f7e5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b6001600160a01b0382166000908152600260209081526040808320546001909252909120546106a59190611f19565b600080546001036110005760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b6001600160a01b03821660009081526001602090815260408083205460085460079093529083205490929161103791849190611bb4565b6001600160a01b03851660009081526006602052604090205490915061105e908290611f2c565b949350505050565b6060600a805461060190611d68565b61107d611667565b600f546001600160a01b031633146110fd5760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b6111078282611817565b6040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bc2565b600061114f611667565b600f546001600160a01b031633146111cf5760405162461bcd60e51b815260206004820152602860248201527f43616c6c207265737472696374656420746f20746865204175746f6e6974792060448201527f436f6e7472616374000000000000000000000000000000000000000000000000606482015260840161024d565b3460006111db82611bf1565b90508015611272576111ed8183611f19565b600c546040519193506000916001600160a01b03909116906108fc90849084818181858888f193505050503d8060008114611244576040519150601f19603f3d011682016040523d82523d6000602084013e611249565b606091505b50909150508015156000036112705781600e600082825461126a9190611f2c565b90915550505b505b600061127d85611bf1565b9050841561132857600f54600b546001600160a01b039182169163f7fcc5109116836112a9818a611f19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b15801561130f57600080fd5b505af1158015611323573d6000803e3d6000fd5b505050505b60055460009061133a6009600a611f0d565b6113449086611f3f565b61134e9190611f56565b90508060085461135e9190611f2c565b600855600061136f6009600a611f0d565b60055461137c9084611f3f565b6113869190611f56565b90506113928185611f2c565b95505050505050610c4160008055565b60006113ac611667565b6113b63383611817565b6113c083836118ff565b6040518281526001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35060016106a560008055565b611414611667565b600c546001600160a01b031633146114945760405162461bcd60e51b815260206004820152602260248201527f6f6e6c792074726561737572792063616e20636c61696d20686973207265776160448201527f7264000000000000000000000000000000000000000000000000000000000000606482015260840161024d565b600e8054600091829055600c546040519192916001600160a01b03909116906108fc90849084818181858888f193505050503d80600081146114f2576040519150601f19603f3d011682016040523d82523d6000602084013e6114f7565b606091505b5050905080610a8f5760405162461bcd60e51b815260206004820152601260248201527f6661696c656420746f2073656e642041544e0000000000000000000000000000604482015260640161024d565b6000611552611667565b610699338484611aaf565b600080546001036115b05760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b506001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6000805460010361162f5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e6379206465746563746564000000604482015260640161024d565b506001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6107116004600a611f0d565b600054156116b75760405162461bcd60e51b815260206004820152601360248201527f7265656e7472616e637920646574656374656400000000000000000000000000604482015260640161024d565b6001600055565b6001600160a01b0383166117395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161024d565b6001600160a01b0382166117b55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161024d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b61182082611a1e565b506001600160a01b0382166000908152600160209081526040808320546002909252909120546118509082611f19565b82111561189f5760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420756e6c6f636b65642066756e64730000000000604482015260640161024d565b6118a98282611f19565b6001600160a01b0384166000908152600160205260409020558082036118e3576001600160a01b0383166000908152600760205260408120555b81600560008282546118f59190611f19565b9091555050505050565b61190882611a1e565b506001600160a01b03821660009081526001602052604081208054839290611931908490611f2c565b92505081905550806005600082825461194a9190611f2c565b90915550505050565b6001600160a01b038216600090815260026020908152604080832054600190925290912054829161198391611f19565b10156119f65760405162461bcd60e51b8152602060048201526024808201527f63616e2774206c6f636b206d6f72652066756e6473207468616e20617661696c60448201527f61626c6500000000000000000000000000000000000000000000000000000000606482015260840161024d565b6001600160a01b0382166000908152600260205260408120805483929061194a908490611f2c565b6001600160a01b03811660009081526001602090815260408083205460085460079093529083205490918391611a55918491611bb4565b6001600160a01b038516600090815260066020526040902054909150611a7c908290611f2c565b6001600160a01b039094166000908152600660209081526040808320879055600854600790925290912055509192915050565b6001600160a01b038316611b055760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161024d565b6001600160a01b038216611b5b5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161024d565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f03530f06053c088596fe8c12632b52218b0685204ad1b757662178f87e27713b910161180a565b600083600003611bc657506000610929565b611bd26009600a611f0d565b84611bdd8486611f19565b611be79190611f3f565b61105e9190611f56565b600080611c006004600a611f0d565b600d54611c0d9085611f3f565b6109299190611f56565b602081526000825180602084015260005b81811015611c455760208186018101516040868401015201611c28565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114610c4157600080fd5b60008060408385031215611cad57600080fd5b611cb683611c83565b946020939093013593505050565b600060208284031215611cd657600080fd5b5035919050565b600080600060608486031215611cf257600080fd5b611cfb84611c83565b9250611d0960208501611c83565b929592945050506040919091013590565b600060208284031215611d2c57600080fd5b61092982611c83565b60008060408385031215611d4857600080fd5b611d5183611c83565b9150611d5f60208401611c83565b90509250929050565b600181811c90821680611d7c57607f821691505b602082108103611db5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001815b6001841115611e2557808504811115611e0957611e09611dbb565b6001841615611e1757908102905b60019390931c928002611dee565b935093915050565b600082611e3c575060016106a5565b81611e49575060006106a5565b8160018114611e5f5760028114611e6957611e85565b60019150506106a5565b60ff841115611e7a57611e7a611dbb565b50506001821b6106a5565b5060208310610133831016604e8410600b8410161715611ea8575081810a6106a5565b611ed37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611dea565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611f0557611f05611dbb565b029392505050565b60006109298383611e2d565b818103818111156106a5576106a5611dbb565b808201808211156106a5576106a5611dbb565b80820281158282048414176106a5576106a5611dbb565b600082611f8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212202e08fcbfd722b59cca665e879605bc4bdbfd8c28a62d67bda5c45754671844a064736f6c634300081e00336080604052348015600f57600080fd5b50610f2c8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806399ac2d481161005057806399ac2d48146100a8578063a00f313f146100c9578063d0c66054146100eb57600080fd5b80630273a3ee1461006c57806341b6cb0f14610095575b600080fd5b61007f61007a3660046108fc565b610101565b60405161008c9190610b9a565b60405180910390f35b61007f6100a3366004610bb4565b61011c565b6100bb6100b6366004610c15565b610139565b60405161008c929190610c5a565b6100dc6100d7366004610c7c565b610157565b60405161008c93929190610cf6565b6100f361021a565b60405190815260200161008c565b610109610558565b610113838361022d565b50815b92915050565b610124610558565b61013085858585610266565b50929392505050565b610141610558565b60008061014e85856102a9565b94959350505050565b61015f610558565b60008061016e6004600a610e72565b88106101ea5760008961012001518a60c001518b60a001516101909190610e7e565b61019a9190610e7e565b600060a08c018190526101008c018190526101208c0181905260c08c01526101e08b01805191925082916101cf908390610e7e565b9052506101dc8a8661022d565b89935091506001905061020e565b60006101f68a8a6102a9565b90506102048a898989610266565b8993509150600090505b96509650969350505050565b60006102286004600a610e72565b905090565b6000610200830152610240820181600581111561024c5761024c6109ae565b9081600581111561025f5761025f6109ae565b9052505050565b6102708284610e7e565b610200850152610240840181600581111561028d5761028d6109ae565b908160058111156102a0576102a06109ae565b90525050505050565b60006102b76004600a610e72565b8210610349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616e6e6f7420736c617368203130302520776974686f7574206a61696c626f60448201527f756e64696e670000000000000000000000000000000000000000000000000000606482015260840160405180910390fd5b60008361012001518460c001518560a001516103659190610e7e565b61036f9190610e7e565b9050600061037f6004600a610e72565b6103898386610e91565b6103939190610ea8565b9050600081905080866101200151106103c5578086610120018181516103b99190610ee3565b905250600090506103e0565b6101208601516103d59082610ee3565b600061012088015290505b801561045d578086610100015110610428578086610100018181516104059190610ee3565b90525060a08601805182919061041c908390610ee3565b9052506000905061045d565b6101008601516104389082610ee3565b90508561010001518660a0018181516104519190610ee3565b90525060006101008701525b600081118015610480575060008660a001518760c0015161047e9190610e7e565b115b1561052c5760008660a001518760c0015161049b9190610e7e565b60c08801516104aa9084610e91565b6104b49190610ea8565b905060008760a001518860c001516104cc9190610e7e565b60a08901516104db9085610e91565b6104e59190610ea8565b9050818860c0018181516104f99190610ee3565b90525060a088018051829190610510908390610ee3565b90525061051d8183610e7e565b6105279084610ee3565b925050505b6105368183610ee3565b915081866101e00181815161054b9190610e7e565b9052509095945050505050565b604051806102800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001606081526020016000600581111561064d5761064d6109ae565b8152602001600081525090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610280810167ffffffffffffffff811182821017156106ad576106ad61065a565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d757600080fd5b919050565b600082601f8301126106ed57600080fd5b81356020830160008067ffffffffffffffff84111561070e5761070e61065a565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561075b5761075b61065a565b60405283815290508082840187101561077357600080fd5b838360208301376000602085830101528094505050505092915050565b8035600681106106d757600080fd5b600061028082840312156107b257600080fd5b6107ba610689565b90506107c5826106b3565b81526107d3602083016106b3565b60208201526107e4604083016106b3565b6040820152606082013567ffffffffffffffff81111561080357600080fd5b61080f848285016106dc565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e08083013590820152610100808301359082015261012080830135908201526101408083013590820152610160808301359082015261087661018083016106b3565b6101808201526101a082810135908201526101c080830135908201526101e08083013590820152610200808301359082015261022082013567ffffffffffffffff8111156108c357600080fd5b6108cf848285016106dc565b610220830152506108e36102408301610790565b6102408201526102609182013591810191909152919050565b6000806040838503121561090f57600080fd5b823567ffffffffffffffff81111561092657600080fd5b6109328582860161079f565b92505061094160208401610790565b90509250929050565b6000815180845260005b8181101561097057602081850181015186830182015201610954565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110610a14577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b805173ffffffffffffffffffffffffffffffffffffffff16825260006020820151610a5b602085018273ffffffffffffffffffffffffffffffffffffffff169052565b506040820151610a83604085018273ffffffffffffffffffffffffffffffffffffffff169052565b5060608201516102806060850152610a9f61028085018261094a565b90506080830151608085015260a083015160a085015260c083015160c085015260e083015160e0850152610100830151610100850152610120830151610120850152610140830151610140850152610160830151610160850152610180830151610b2261018086018273ffffffffffffffffffffffffffffffffffffffff169052565b506101a08301516101a08501526101c08301516101c08501526101e08301516101e0850152610200830151610200850152610220830151848203610220860152610b6c828261094a565b915050610240830151610b836102408601826109dd565b506102608301516102608501528091505092915050565b602081526000610bad6020830184610a18565b9392505050565b60008060008060808587031215610bca57600080fd5b843567ffffffffffffffff811115610be157600080fd5b610bed8782880161079f565b9450506020850135925060408501359150610c0a60608601610790565b905092959194509250565b60008060408385031215610c2857600080fd5b823567ffffffffffffffff811115610c3f57600080fd5b610c4b8582860161079f565b95602094909401359450505050565b604081526000610c6d6040830185610a18565b90508260208301529392505050565b60008060008060008060c08789031215610c9557600080fd5b863567ffffffffffffffff811115610cac57600080fd5b610cb889828a0161079f565b965050602087013594506040870135935060608701359250610cdc60808801610790565b9150610cea60a08801610790565b90509295509295509295565b606081526000610d096060830186610a18565b602083019490945250901515604090910152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001815b6001841115610d8a57808504811115610d6e57610d6e610d20565b6001841615610d7c57908102905b60019390931c928002610d53565b935093915050565b600082610da157506001610116565b81610dae57506000610116565b8160018114610dc45760028114610dce57610dea565b6001915050610116565b60ff841115610ddf57610ddf610d20565b50506001821b610116565b5060208310610133831016604e8410600b8410161715610e0d575081810a610116565b610e387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610d4f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610e6a57610e6a610d20565b029392505050565b6000610bad8383610d92565b8082018082111561011657610116610d20565b808202811582820484141761011657610116610d20565b600082610ede577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561011657610116610d2056fea264697066735822122094b63cb287eec1d615ac4c3b6cdb0502ed9bc162a3a43447562d39ff178b014b64736f6c634300081e0033608060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f916101af565b806001600160a01b031663f5be34896040518163ffffffff1660e01b8152600401602060405180830381865afa15801561006d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009191906102a4565b83111561009d57600080fd5b600b80546001600160a01b038088166001600160a01b031992831617909255600c805492871692909116919091179055600d8390556040516100e39083906020016102bd565b604051602081830303815290604052600990816101009190610373565b508160405160200161011291906102bd565b604051602081830303815290604052600a908161012f9190610373565b5050600f80546001600160a01b031916331790555061043192505050565b6001600160a01b038116811461016257600080fd5b50565b80516101708161014d565b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156101a657818101518382015260200161018e565b50506000910152565b600080600080600060a086880312156101c757600080fd5b85516101d28161014d565b60208701519095506101e38161014d565b6040870151606088015191955093506001600160401b0381111561020657600080fd5b8601601f8101881361021757600080fd5b80516001600160401b0381111561023057610230610175565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025e5761025e610175565b6040528181528282016020018a101561027657600080fd5b61028782602083016020860161018b565b935061029891505060808701610165565b90509295509295909350565b6000602082840312156102b657600080fd5b5051919050565b644c4e544e2d60d81b8152600082516102dd81600585016020870161018b565b9190910160050192915050565b600181811c908216806102fe57607f821691505b60208210810361031e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561036e57806000526020600020601f840160051c8101602085101561034b5750805b601f840160051c820191505b8181101561036b5760008155600101610357565b50505b505050565b81516001600160401b0381111561038c5761038c610175565b6103a08161039a84546102ea565b84610324565b6020601f8211600181146103d457600083156103bc5750848201515b600019600385901b1c1916600184901b17845561036b565b600084815260208120601f198516915b8281101561040457878501518255602094850194600190920191016103e4565b50848210156104225786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6101ea806104406000396000f3fe6080604052366100315761002f610014610038565b73ffffffffffffffffffffffffffffffffffffffff16610154565b005b61002f6100145b600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c1f1c776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100cc9190610177565b905073ffffffffffffffffffffffffffffffffffffffff811661014f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6c6971756964206c6f67696320636f6e7472616374206e6f7420736574000000604482015260640160405180910390fd5b919050565b3660008037600080366000845af43d6000803e80610171573d6000fd5b503d6000f35b60006020828403121561018957600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146101ad57600080fd5b939250505056fea26469706673582212208d728fda0cd0f5597ff980eda213a5c80dad8f60140987d564b00bb38bb2a2d664736f6c634300081e0033")

var AutonityAbi, _ = abi.JSON(strings.NewReader(`[
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "address payable",
                  "name" : "treasury",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "nodeAddress",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "oracleAddress",
                  "type" : "address"
               },
               {
                  "internalType" : "string",
                  "name" : "enode",
                  "type" : "string"
               },
               {
                  "internalType" : "uint256",
                  "name" : "commissionRate",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "bondedStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "unbondingStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "unbondingShares",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfBondedStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfUnbondingStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfUnbondingShares",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfUnbondingStakeLocked",
                  "type" : "uint256"
               },
               {
                  "internalType" : "contract ILiquid",
                  "name" : "liquidStateContract",
                  "type" : "address"
               },
               {
                  "internalType" : "uint256",
                  "name" : "liquidSupply",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "registrationBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "totalSlashed",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "jailReleaseBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "bytes",
                  "name" : "consensusKey",
                  "type" : "bytes"
               },
               {
                  "internalType" : "enum IAutonity.ValidatorState",
                  "name" : "state",
                  "type" : "uint8"
               },
               {
                  "internalType" : "uint256",
                  "name" : "conversionRatio",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAutonity.Validator[]",
            "name" : "_validators",
            "type" : "tuple[]"
         },
         {
            "components" : [
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "treasuryFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "minBaseFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "delegationRate",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "unbondingPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "initialInflationReserve",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "withholdingThreshold",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "proposerRewardRate",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "oracleRewardRate",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "address payable",
                        "name" : "withheldRewardsPool",
                        "type" : "address"
                     },
                     {
                        "internalType" : "address payable",
                        "name" : "treasuryAccount",
                        "type" : "address"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "baseFeeChangeDenominator",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "elasticityMultiplier",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Policy",
                  "name" : "policy",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "contract IAccountability",
                        "name" : "accountabilityContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IOracle",
                        "name" : "oracleContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IACU",
                        "name" : "acuContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract ISupplyControl",
                        "name" : "supplyControlContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IStabilization",
                        "name" : "stabilizationContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IUpgradeManager",
                        "name" : "upgradeManagerContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IInflationController",
                        "name" : "inflationControllerContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IOmissionAccountability",
                        "name" : "omissionAccountabilityContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IAuctioneer",
                        "name" : "auctioneerContract",
                        "type" : "address"
                     }
                  ],
                  "internalType" : "struct IAutonity.Contracts",
                  "name" : "contracts",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "address",
                        "name" : "operatorAccount",
                        "type" : "address"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "epochPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "blockPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "committeeSize",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "maxScheduleDuration",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimit",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimitBoundDivisor",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "clusteringThreshold",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Protocol",
                  "name" : "protocol",
                  "type" : "tuple"
               },
               {
                  "internalType" : "uint256",
                  "name" : "contractVersion",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAutonity.Config",
            "name" : "_config",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "constructor"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "treasury",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "addr",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "effectiveBlock",
            "type" : "uint256"
         }
      ],
      "name" : "ActivatedValidator",
      "type" : "event"
   },
   {
      "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" : "_owner",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "_caller",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_value",
            "type" : "uint256"
         }
      ],
      "name" : "BondingApproval",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "validator",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "delegator",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "enum IAutonity.ValidatorState",
            "name" : "state",
            "type" : "uint8"
         }
      ],
      "name" : "BondingRejected",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "addr",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "BurnedStake",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "to",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "methodSignature",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "bytes",
            "name" : "returnData",
            "type" : "bytes"
         }
      ],
      "name" : "CallFailed",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "validator",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "rate",
            "type" : "uint256"
         }
      ],
      "name" : "CommissionRateChange",
      "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" : "int256",
            "name" : "oldValue",
            "type" : "int256"
         },
         {
            "indexed" : false,
            "internalType" : "int256",
            "name" : "newValue",
            "type" : "int256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateInt",
      "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" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "minBaseFee",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "baseFeeChangeDenominator",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "elasticityMultiplier",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "gasLimitBoundDivisor",
                  "type" : "uint256"
               }
            ],
            "indexed" : false,
            "internalType" : "struct IAutonity.Eip1559",
            "name" : "oldParams",
            "type" : "tuple"
         },
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "minBaseFee",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "baseFeeChangeDenominator",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "elasticityMultiplier",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "gasLimitBoundDivisor",
                  "type" : "uint256"
               }
            ],
            "indexed" : false,
            "internalType" : "struct IAutonity.Eip1559",
            "name" : "newParams",
            "type" : "tuple"
         }
      ],
      "name" : "Eip1559ParamsUpdate",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "validator",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "oldEnode",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "newEnode",
            "type" : "string"
         }
      ],
      "name" : "EnodeUpdate",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "period",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliedAtBlock",
            "type" : "uint256"
         }
      ],
      "name" : "EpochPeriodUpdated",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "addr",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "MintedStake",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "validator",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "delegator",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "caller",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "selfBonded",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "headBondingID",
            "type" : "uint256"
         }
      ],
      "name" : "NewBondingRequest",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "epoch",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "inflationReserve",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "stakeCirculating",
            "type" : "uint256"
         }
      ],
      "name" : "NewEpoch",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "scheduleVault",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "start",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "totalDuration",
            "type" : "uint256"
         }
      ],
      "name" : "NewSchedule",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "validator",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "delegator",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "caller",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "selfBonded",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "headUnbondingID",
            "type" : "uint256"
         }
      ],
      "name" : "NewUnbondingRequest",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "treasury",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "addr",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "effectiveBlock",
            "type" : "uint256"
         }
      ],
      "name" : "PausedValidator",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "treasury",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "addr",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "oracleAddress",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "enode",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "liquidStateContract",
            "type" : "address"
         }
      ],
      "name" : "RegisteredValidator",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "addr",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "atnSelfAmount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "atnDelegatedAmount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "ntnSelfAmount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "ntnDelegatedAmount",
            "type" : "uint256"
         }
      ],
      "name" : "Rewarded",
      "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"
   },
   {
      "stateMutability" : "payable",
      "type" : "fallback"
   },
   {
      "inputs" : [],
      "name" : "STANDARD_DECIMALS",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "STANDARD_SCALE_FACTOR",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "activateValidator",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "owner",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "spender",
            "type" : "address"
         }
      ],
      "name" : "allowance",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "spender",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         }
      ],
      "name" : "approve",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_caller",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "approveBonding",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_selfBond",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_delegated",
            "type" : "uint256"
         }
      ],
      "name" : "autobond",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_addr",
            "type" : "address"
         }
      ],
      "name" : "balanceOf",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "bond",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_account",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "bondFrom",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_owner",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "_caller",
            "type" : "address"
         }
      ],
      "name" : "bondingAllowance",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_addr",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "burn",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_rate",
            "type" : "uint256"
         }
      ],
      "name" : "changeCommissionRate",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "circulatingSupply",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "completeContractUpgrade",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_scheduleVault",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_startTime",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_totalDuration",
            "type" : "uint256"
         }
      ],
      "name" : "createSchedule",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "decimals",
      "outputs" : [
         {
            "internalType" : "uint8",
            "name" : "",
            "type" : "uint8"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "finalize",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "bool",
                  "name" : "contractUpgradeReady",
                  "type" : "bool"
               },
               {
                  "internalType" : "bool",
                  "name" : "epochEnded",
                  "type" : "bool"
               },
               {
                  "components" : [
                     {
                        "components" : [
                           {
                              "internalType" : "address",
                              "name" : "addr",
                              "type" : "address"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "votingPower",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "bytes",
                              "name" : "consensusKey",
                              "type" : "bytes"
                           }
                        ],
                        "internalType" : "struct IAutonity.CommitteeMember[]",
                        "name" : "committee",
                        "type" : "tuple[]"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "previousEpochBlock",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "epochBlock",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "nextEpochBlock",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "omissionDelta",
                        "type" : "uint256"
                     },
                     {
                        "components" : [
                           {
                              "internalType" : "uint256",
                              "name" : "minBaseFee",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "baseFeeChangeDenominator",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "elasticityMultiplier",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "gasLimitBoundDivisor",
                              "type" : "uint256"
                           }
                        ],
                        "internalType" : "struct IAutonity.Eip1559",
                        "name" : "eip1559",
                        "type" : "tuple"
                     }
                  ],
                  "internalType" : "struct IAutonity.EpochInfo",
                  "name" : "epoch",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "epochPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "blockPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimit",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "clusteringThreshold",
                        "type" : "uint256"
                     },
                     {
                        "components" : [
                           {
                              "internalType" : "uint256",
                              "name" : "range",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "delta",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "gracePeriod",
                              "type" : "uint256"
                           }
                        ],
                        "internalType" : "struct IAutonity.Accountability",
                        "name" : "accountability",
                        "type" : "tuple"
                     },
                     {
                        "components" : [
                           {
                              "internalType" : "uint256",
                              "name" : "minBaseFee",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "baseFeeChangeDenominator",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "elasticityMultiplier",
                              "type" : "uint256"
                           },
                           {
                              "internalType" : "uint256",
                              "name" : "gasLimitBoundDivisor",
                              "type" : "uint256"
                           }
                        ],
                        "internalType" : "struct IAutonity.Eip1559",
                        "name" : "eip1559",
                        "type" : "tuple"
                     }
                  ],
                  "internalType" : "struct IAutonity.ClientAwareConfig",
                  "name" : "config",
                  "type" : "tuple"
               }
            ],
            "internalType" : "struct Autonity.FinalizeResult",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_omissionDelta",
            "type" : "uint256"
         }
      ],
      "name" : "finalizeInitialization",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getBlockPeriod",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         }
      ],
      "name" : "getBondingRequestByID",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "address payable",
                  "name" : "delegator",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "delegatee",
                  "type" : "address"
               },
               {
                  "internalType" : "uint256",
                  "name" : "amount",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "requestBlock",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAutonity.BondingRequest",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getClientConfig",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "epochPeriod",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "blockPeriod",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "gasLimit",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "clusteringThreshold",
                  "type" : "uint256"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "range",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "delta",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gracePeriod",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Accountability",
                  "name" : "accountability",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "minBaseFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "baseFeeChangeDenominator",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "elasticityMultiplier",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimitBoundDivisor",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Eip1559",
                  "name" : "eip1559",
                  "type" : "tuple"
               }
            ],
            "internalType" : "struct IAutonity.ClientAwareConfig",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getCommittee",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "address",
                  "name" : "addr",
                  "type" : "address"
               },
               {
                  "internalType" : "uint256",
                  "name" : "votingPower",
                  "type" : "uint256"
               },
               {
                  "internalType" : "bytes",
                  "name" : "consensusKey",
                  "type" : "bytes"
               }
            ],
            "internalType" : "struct IAutonity.CommitteeMember[]",
            "name" : "",
            "type" : "tuple[]"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getCommitteeEnodes",
      "outputs" : [
         {
            "internalType" : "string[]",
            "name" : "",
            "type" : "string[]"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getConfig",
      "outputs" : [
         {
            "components" : [
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "treasuryFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "minBaseFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "delegationRate",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "unbondingPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "initialInflationReserve",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "withholdingThreshold",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "proposerRewardRate",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "oracleRewardRate",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "address payable",
                        "name" : "withheldRewardsPool",
                        "type" : "address"
                     },
                     {
                        "internalType" : "address payable",
                        "name" : "treasuryAccount",
                        "type" : "address"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "baseFeeChangeDenominator",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "elasticityMultiplier",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Policy",
                  "name" : "policy",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "contract IAccountability",
                        "name" : "accountabilityContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IOracle",
                        "name" : "oracleContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IACU",
                        "name" : "acuContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract ISupplyControl",
                        "name" : "supplyControlContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IStabilization",
                        "name" : "stabilizationContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IUpgradeManager",
                        "name" : "upgradeManagerContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IInflationController",
                        "name" : "inflationControllerContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IOmissionAccountability",
                        "name" : "omissionAccountabilityContract",
                        "type" : "address"
                     },
                     {
                        "internalType" : "contract IAuctioneer",
                        "name" : "auctioneerContract",
                        "type" : "address"
                     }
                  ],
                  "internalType" : "struct IAutonity.Contracts",
                  "name" : "contracts",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "address",
                        "name" : "operatorAccount",
                        "type" : "address"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "epochPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "blockPeriod",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "committeeSize",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "maxScheduleDuration",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimit",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimitBoundDivisor",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "clusteringThreshold",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Protocol",
                  "name" : "protocol",
                  "type" : "tuple"
               },
               {
                  "internalType" : "uint256",
                  "name" : "contractVersion",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAutonity.Config",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getCurrentCommitteeSize",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getCurrentEpochPeriod",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_height",
            "type" : "uint256"
         }
      ],
      "name" : "getEpochByHeight",
      "outputs" : [
         {
            "components" : [
               {
                  "components" : [
                     {
                        "internalType" : "address",
                        "name" : "addr",
                        "type" : "address"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "votingPower",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "bytes",
                        "name" : "consensusKey",
                        "type" : "bytes"
                     }
                  ],
                  "internalType" : "struct IAutonity.CommitteeMember[]",
                  "name" : "committee",
                  "type" : "tuple[]"
               },
               {
                  "internalType" : "uint256",
                  "name" : "previousEpochBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epochBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "nextEpochBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "omissionDelta",
                  "type" : "uint256"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "minBaseFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "baseFeeChangeDenominator",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "elasticityMultiplier",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimitBoundDivisor",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Eip1559",
                  "name" : "eip1559",
                  "type" : "tuple"
               }
            ],
            "internalType" : "struct IAutonity.EpochInfo",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_block",
            "type" : "uint256"
         }
      ],
      "name" : "getEpochFromBlock",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getEpochID",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getEpochInfo",
      "outputs" : [
         {
            "components" : [
               {
                  "components" : [
                     {
                        "internalType" : "address",
                        "name" : "addr",
                        "type" : "address"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "votingPower",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "bytes",
                        "name" : "consensusKey",
                        "type" : "bytes"
                     }
                  ],
                  "internalType" : "struct IAutonity.CommitteeMember[]",
                  "name" : "committee",
                  "type" : "tuple[]"
               },
               {
                  "internalType" : "uint256",
                  "name" : "previousEpochBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epochBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "nextEpochBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "omissionDelta",
                  "type" : "uint256"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "minBaseFee",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "baseFeeChangeDenominator",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "elasticityMultiplier",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "gasLimitBoundDivisor",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAutonity.Eip1559",
                  "name" : "eip1559",
                  "type" : "tuple"
               }
            ],
            "internalType" : "struct IAutonity.EpochInfo",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getEpochPeriod",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getEpochTotalBondedStake",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getInflationReserve",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getLastEpochBlock",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getLastEpochTime",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getLiquidLogicContract",
      "outputs" : [
         {
            "internalType" : "address",
            "name" : "",
            "type" : "address"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getMaxCommitteeSize",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getMaxScheduleDuration",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getMinimumBaseFee",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getNewContract",
      "outputs" : [
         {
            "internalType" : "bytes",
            "name" : "",
            "type" : "bytes"
         },
         {
            "internalType" : "string",
            "name" : "",
            "type" : "string"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getNextEpochBlock",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getOperator",
      "outputs" : [
         {
            "internalType" : "address",
            "name" : "",
            "type" : "address"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getOracle",
      "outputs" : [
         {
            "internalType" : "address",
            "name" : "",
            "type" : "address"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_vault",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         }
      ],
      "name" : "getSchedule",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "totalAmount",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "unlockedAmount",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "start",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "totalDuration",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "lastUnlockTime",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IScheduleController.Schedule",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getSlasher",
      "outputs" : [
         {
            "internalType" : "address",
            "name" : "",
            "type" : "address"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_vault",
            "type" : "address"
         }
      ],
      "name" : "getTotalSchedules",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getTreasuryAccount",
      "outputs" : [
         {
            "internalType" : "address",
            "name" : "",
            "type" : "address"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getTreasuryFee",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getUnbondingPeriod",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         }
      ],
      "name" : "getUnbondingRequestByID",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "address payable",
                  "name" : "delegator",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "delegatee",
                  "type" : "address"
               },
               {
                  "internalType" : "uint256",
                  "name" : "amount",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "unbondingShare",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "requestBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "bool",
                  "name" : "unlocked",
                  "type" : "bool"
               },
               {
                  "internalType" : "bool",
                  "name" : "released",
                  "type" : "bool"
               },
               {
                  "internalType" : "bool",
                  "name" : "selfDelegation",
                  "type" : "bool"
               }
            ],
            "internalType" : "struct IAutonity.UnbondingRequest",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_unbondingID",
            "type" : "uint256"
         }
      ],
      "name" : "getUnbondingShare",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_addr",
            "type" : "address"
         }
      ],
      "name" : "getValidator",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "address payable",
                  "name" : "treasury",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "nodeAddress",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "oracleAddress",
                  "type" : "address"
               },
               {
                  "internalType" : "string",
                  "name" : "enode",
                  "type" : "string"
               },
               {
                  "internalType" : "uint256",
                  "name" : "commissionRate",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "bondedStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "unbondingStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "unbondingShares",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfBondedStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfUnbondingStake",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfUnbondingShares",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "selfUnbondingStakeLocked",
                  "type" : "uint256"
               },
               {
                  "internalType" : "contract ILiquid",
                  "name" : "liquidStateContract",
                  "type" : "address"
               },
               {
                  "internalType" : "uint256",
                  "name" : "liquidSupply",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "registrationBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "totalSlashed",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "jailReleaseBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "bytes",
                  "name" : "consensusKey",
                  "type" : "bytes"
               },
               {
                  "internalType" : "enum IAutonity.ValidatorState",
                  "name" : "state",
                  "type" : "uint8"
               },
               {
                  "internalType" : "uint256",
                  "name" : "conversionRatio",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAutonity.Validator",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_addr",
            "type" : "address"
         }
      ],
      "name" : "getValidatorState",
      "outputs" : [
         {
            "internalType" : "enum IAutonity.ValidatorState",
            "name" : "",
            "type" : "uint8"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getValidators",
      "outputs" : [
         {
            "internalType" : "address[]",
            "name" : "",
            "type" : "address[]"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getVersion",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_unbondingID",
            "type" : "uint256"
         }
      ],
      "name" : "isUnbondingReleased",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_nodeAddress",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_jailtime",
            "type" : "uint256"
         },
         {
            "internalType" : "enum IAutonity.ValidatorState",
            "name" : "_newJailedState",
            "type" : "uint8"
         }
      ],
      "name" : "jail",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_nodeAddress",
            "type" : "address"
         },
         {
            "internalType" : "enum IAutonity.ValidatorState",
            "name" : "_newJailboundState",
            "type" : "uint8"
         }
      ],
      "name" : "jailbound",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_addr",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "mint",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "name",
      "outputs" : [
         {
            "internalType" : "string",
            "name" : "",
            "type" : "string"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "pauseValidator",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "string",
            "name" : "_enode",
            "type" : "string"
         },
         {
            "internalType" : "address",
            "name" : "_oracleAddress",
            "type" : "address"
         },
         {
            "internalType" : "bytes",
            "name" : "_consensusKey",
            "type" : "bytes"
         },
         {
            "internalType" : "bytes",
            "name" : "_signatures",
            "type" : "bytes"
         }
      ],
      "name" : "registerValidator",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "resetContractUpgrade",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "contract IAccountability",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setAccountabilityContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setAcuContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setAuctioneerContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_threshold",
            "type" : "uint256"
         }
      ],
      "name" : "setClusteringThreshold",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_size",
            "type" : "uint256"
         }
      ],
      "name" : "setCommitteeSize",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "minBaseFee",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "baseFeeChangeDenominator",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "elasticityMultiplier",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "gasLimitBoundDivisor",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAutonity.Eip1559",
            "name" : "_params",
            "type" : "tuple"
         }
      ],
      "name" : "setEip1559Params",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_period",
            "type" : "uint256"
         }
      ],
      "name" : "setEpochPeriod",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_gasLimit",
            "type" : "uint256"
         }
      ],
      "name" : "setGasLimit",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "contract IInflationController",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setInflationControllerContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_contract",
            "type" : "address"
         }
      ],
      "name" : "setLiquidLogicContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_newMaxDuration",
            "type" : "uint256"
         }
      ],
      "name" : "setMaxScheduleDuration",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "contract IOmissionAccountability",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setOmissionAccountabilityContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_account",
            "type" : "address"
         }
      ],
      "name" : "setOperatorAccount",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address payable",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setOracleContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_oracleRewardRate",
            "type" : "uint256"
         }
      ],
      "name" : "setOracleRewardRate",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_proposerRewardRate",
            "type" : "uint256"
         }
      ],
      "name" : "setProposerRewardRate",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_slasher",
            "type" : "address"
         }
      ],
      "name" : "setSlasher",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setStabilizationContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setSupplyControlContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address payable",
            "name" : "_account",
            "type" : "address"
         }
      ],
      "name" : "setTreasuryAccount",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_treasuryFee",
            "type" : "uint256"
         }
      ],
      "name" : "setTreasuryFee",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_period",
            "type" : "uint256"
         }
      ],
      "name" : "setUnbondingPeriod",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "contract UpgradeManager",
            "name" : "_address",
            "type" : "address"
         }
      ],
      "name" : "setUpgradeManagerContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address payable",
            "name" : "_pool",
            "type" : "address"
         }
      ],
      "name" : "setWithheldRewardsPool",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_withholdingThreshold",
            "type" : "uint256"
         }
      ],
      "name" : "setWithholdingThreshold",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_nodeAddress",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_slashingRate",
            "type" : "uint256"
         }
      ],
      "name" : "slash",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "slashingAmount",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_nodeAddress",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_slashingRate",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_jailtime",
            "type" : "uint256"
         },
         {
            "internalType" : "enum IAutonity.ValidatorState",
            "name" : "_newJailedState",
            "type" : "uint8"
         },
         {
            "internalType" : "enum IAutonity.ValidatorState",
            "name" : "_newJailboundState",
            "type" : "uint8"
         }
      ],
      "name" : "slashAndJail",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "slashingAmount",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "jailReleaseBlock",
            "type" : "uint256"
         },
         {
            "internalType" : "bool",
            "name" : "isJailbound",
            "type" : "bool"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "symbol",
      "outputs" : [
         {
            "internalType" : "string",
            "name" : "",
            "type" : "string"
         }
      ],
      "stateMutability" : "pure",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "totalSupply",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_recipient",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "transfer",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_sender",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "_recipient",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "transferFrom",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "unbond",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_account",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_amount",
            "type" : "uint256"
         }
      ],
      "name" : "unbondFrom",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_nodeAddress",
            "type" : "address"
         },
         {
            "internalType" : "string",
            "name" : "_enode",
            "type" : "string"
         }
      ],
      "name" : "updateEnode",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "bytes",
            "name" : "_bytecode",
            "type" : "bytes"
         },
         {
            "internalType" : "string",
            "name" : "_abi",
            "type" : "string"
         }
      ],
      "name" : "upgradeContract",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "stateMutability" : "payable",
      "type" : "receive"
   }
]
`))
