0 txs
1 call
constructor
No constructor.
functions
addBackingToken
nonpayablefunction addBackingToken(address morpho, tuple morphoMarketParams, uint256 amount, bool cappedMax)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
unloop
nonpayablefunction unloop(address morpho, tuple morphoMarketParams, tuple unloopInfo)
events
AddBackingTokenToLong
event AddBackingTokenToLong(address indexed sender, address indexed exposureToken, address indexed backingToken, uint256 amount, bytes32 borrowMarketId)
UnloopLongExecuted
event UnloopLongExecuted(address indexed sender, address indexed exposureToken, address indexed backingToken, uint256 exposureAmountDecrease, uint256 backingAmountDecrease, uint256 exposureTokensSold, uint256 backingTokensBought, bytes32 borrowMarketId)
errors
ExitBackingAmountTooHigh
error ExitBackingAmountTooHigh(address token, uint256 attemptedExitAmount, uint256 availableExitAmount)
InvalidCaller
error InvalidCaller()
InvalidMarketParams
error InvalidMarketParams()
NonZeroExitOnMaxUnloop
error NonZeroExitOnMaxUnloop(address token, uint256 exitAmount)
ReentrantCall
error ReentrantCall()
SwapTooExpensive
error SwapTooExpensive(address token, uint256 minAmountOut, uint256 actualAmountOut)
UnrecognizedChain
error UnrecognizedChain(uint256)
creation bytecode
0x608060405234601c57600e6020565b613a7161002b8239613a7190f35b6026565b60405190565b5f80fdfe60806040526004361015610013575b610486565b61001d5f3561004c565b8063f4aadf4e14610047578063fa173a5f146100425763fa461e330361000e5761044f565b610355565b6102b2565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61008690610064565b90565b6100928161007d565b0361009957565b5f80fd5b905035906100aa82610089565b565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906100f1906100b0565b810190811067ffffffffffffffff82111761010b57604052565b6100ba565b9061012361011c610052565b92836100e7565b565b90565b61013181610125565b0361013857565b5f80fd5b9050359061014982610128565b565b919060a0838203126101bb576101b49061016560a0610110565b93610172825f830161009d565b5f860152610183826020830161009d565b6020860152610195826040830161009d565b60408601526101a7826060830161009d565b606086015260800161013c565b6080830152565b6100ac565b62ffffff1690565b6101d1816101c0565b036101d857565b5f80fd5b905035906101e9826101c8565b565b919060c08382031261026d576102669061020560c0610110565b93610212825f830161009d565b5f860152610223826020830161009d565b602086015261023582604083016101dc565b6040860152610247826060830161013c565b6060860152610259826080830161013c565b608086015260a00161013c565b60a0830152565b6100ac565b9091610180828403126102a8576102a561028e845f850161009d565b9361029c816020860161014b565b9360c0016101eb565b90565b61005c565b5f0190565b346102e1576102cb6102c5366004610272565b91611016565b6102d3610052565b806102dd816102ad565b0390f35b610058565b151590565b6102f4816102e6565b036102fb57565b5f80fd5b9050359061030c826102eb565b565b6101008183031261035057610325825f830161009d565b9261034d610336846020850161014b565b936103448160c0860161013c565b9360e0016102ff565b90565b61005c565b346103875761037161036836600461030e565b929190916114a5565b610379610052565b80610383816102ad565b0390f35b610058565b90565b6103988161038c565b0361039f57565b5f80fd5b905035906103b08261038f565b565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156103f85781359167ffffffffffffffff83116103f35760200192600183028401116103ee57565b6103ba565b6103b6565b6103b2565b9160608383031261044a57610414825f85016103a3565b9261042283602083016103a3565b92604082013567ffffffffffffffff81116104455761044192016103be565b9091565b610060565b61005c565b346104815761046b6104623660046103fd565b9291909161171b565b610473610052565b8061047d816102ad565b0390f35b610058565b5f80fd5b5f1c90565b90565b6104a66104a16104ab92610125565b61048f565b610125565b90565b6104ba6104bf9161048a565b610492565b90565b90565b6104d96104d46104de926104c2565b61048f565b610125565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61051d61052391939293610125565b92610125565b820391821161052e57565b6104e1565b90565b5f1b90565b61054f61054a61055492610125565b610536565b610533565b90565b61059b6105966105867f951ae9fc8e231369dc30d9a40f12c78bb800223594870e32a7cda666d14d45d56104ae565b61059060016104c5565b9061050e565b61053b565b90565b5f90565b9190916105ad610557565b916105b661059e565b50825c6105dc6105d66105d16105cc60016104c5565b61053b565b610533565b91610533565b146105f3575f936105f0926001855d610bfc565b5d565b5f7f37ed32e800000000000000000000000000000000000000000000000000000000815280610624600482016102ad565b0390fd5b610632905161007d565b90565b61063f9051610125565b90565b90565b61065961065461065e92610642565b61048f565b610125565b90565b61066a9061007d565b9052565b61067790610125565b9052565b91602061069c92949361069560408201965f830190610661565b019061066e565b565b5f90565b6106b66106b16106bb92610064565b61048f565b610064565b90565b6106c7906106a2565b90565b6106d3906106be565b90565b6106df906106a2565b90565b6106eb906106d6565b90565b6106f7906106d6565b90565b5f80fd5b60e01b90565b9050519061071182610128565b565b6fffffffffffffffffffffffffffffffff1690565b61073181610713565b0361073857565b5f80fd5b9050519061074982610728565b565b919060608382031261079757610790906107656060610110565b93610772825f8301610704565b5f860152610783826020830161073c565b602086015260400161073c565b6040830152565b6100ac565b906060828203126107b5576107b2915f0161074b565b90565b61005c565b6107c390610533565b90565b6107cf906107ba565b9052565b9160206107f49294936107ed60408201965f8301906107c6565b0190610661565b565b6107fe610052565b3d5f823e3d90fd5b6108109051610713565b90565b61082761082261082c92610713565b61048f565b610125565b90565b61083990516101c0565b90565b610845906106a2565b90565b6108519061083c565b90565b61085d906106d6565b90565b90565b61087761087261087c92610860565b61048f565b610064565b90565b61089c73fffd8963efd1fc6a506488495d951d5263988d26610863565b90565b6108b36108ae6108b8926104c2565b61048f565b610064565b90565b6108c76108cd91610064565b91610064565b90039073ffffffffffffffffffffffffffffffffffffffff82116108ed57565b6104e1565b90565b61090961090461090e926108f2565b61048f565b610064565b90565b61091f6401000276a36108f5565b90565b61092e61093491610064565b91610064565b019073ffffffffffffffffffffffffffffffffffffffff821161095357565b6104e1565b6109626080610110565b90565b52565b52565b906109759061007d565b9052565b52565b6109859061007d565b9052565b610992906101c0565b9052565b906040806109ca936109ae5f8201515f86019061097c565b6109c06020820151602086019061097c565b0151910190610989565b565b6109d590610125565b9052565b9060a080610a43936109f15f8201515f86019061097c565b610a036020820151602086019061097c565b610a1560408201516040860190610989565b610a27606082015160608601906109cc565b610a39608082015160808601906109cc565b01519101906109cc565b565b90608080610a9d93610a5d5f8201515f86019061097c565b610a6f6020820151602086019061097c565b610a816040820151604086019061097c565b610a936060820151606086019061097c565b01519101906109cc565b565b906101406060610ae793610ab95f8201515f860190610996565b610aca6020820151838601906109d9565b610add604082015161012086019061097c565b0151910190610a45565b565b9190610afd905f6101e08501940190610a9f565b565b90505190610b0c8261038f565b565b9190604083820312610b365780610b2a610b33925f8601610aff565b93602001610aff565b90565b61005c565b610b44906102e6565b9052565b610b519061038c565b9052565b610b5e90610064565b9052565b5190565b60209181520190565b90825f9392825e0152565b610b99610ba2602093610ba793610b9081610b62565b93848093610b66565b95869101610b6f565b6100b0565b0190565b9193610be2610bf99694610bd8610bec9497610bce60a08801995f890190610661565b6020870190610b3b565b6040850190610b48565b6060830190610b55565b6080818403910152610b7a565b90565b9190610c06611d53565b610c1260208201610628565b610c2e610c28610c235f8601610628565b61007d565b9161007d565b14158015610fe6575b610fb157610c4760608301610635565b610c79610c737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b1480610f8b575b610f3a57610c8f5f8301610628565b92610c9c60208401610628565b93610ca561069e565b50610cb260608501610635565b610ce4610cde7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b145f14610f2857610cfc610cf7836106ca565b6106e2565b60606393c5206291610d0d86611d6c565b90610d32610d1a306106ee565b94610d3d610d26610052565b968795869485946106fe565b8452600484016107d3565b03915afa8015610f23576040610d5f91610d64935f91610ef5575b5001610806565b610813565b945b8181610d719061007d565b90610d7b9061007d565b10919085604001610d8b9061082f565b90610d9592611de9565b93610d9e61200c565b85610da8916123cf565b610db190610848565b610dba90610854565b9263128acb089030610dcb906106ee565b958498610dd790612515565b945f1497610e8295610e6e5f96610e4b610e8d96610e42610e5f9760409f610ed157610e3a610e17610e07610911565b610e11600161089f565b90610922565b985b95939193610e31610e28610958565b978f8901610965565b60208701610968565b8f850161096b565b60608301610979565b610e53610052565b94859160208301610ae9565b602082018103825203846100e7565b610e76610052565b9a8b998a9889976106fe565b875260048701610bab565b03925af18015610ecc57610e9f575b50565b610ebf9060403d8111610ec5575b610eb781836100e7565b810190610b0e565b50610e9c565b503d610ead565b6107f6565b610e3a610eef610edf61087f565b610ee9600161089f565b906108bb565b98610e19565b610f16915060603d8111610f1c575b610f0e81836100e7565b81019061079c565b5f610d58565b503d610f04565b6107f6565b610f3460608501610635565b94610d66565b50610f536080610f4c60208401610628565b9201610635565b90610f875f9283927f3cfcfff60000000000000000000000000000000000000000000000000000000084526004840161067b565b0390fd5b50610f9860808301610635565b610faa610fa45f610645565b91610125565b1415610c80565b5f7f494e780700000000000000000000000000000000000000000000000000000000815280610fe2600482016102ad565b0390fd5b50610ff25f8201610628565b61100f61100961100460208601610628565b61007d565b9161007d565b1415610c37565b9061102192916105a2565b565b909261102d610557565b9261103661059e565b50835c61105c61105661105161104c60016104c5565b61053b565b610533565b91610533565b14611073575f94611070936001865d611288565b5d565b5f7f37ed32e8000000000000000000000000000000000000000000000000000000008152806110a4600482016102ad565b0390fd5b6110b1906106a2565b90565b6110bd906110a8565b90565b6110c9906106d6565b90565b906020828203126110e5576110e2915f01610704565b90565b61005c565b91906110fd905f60208501940190610661565b565b67ffffffffffffffff811161111d576111196020916100b0565b0190565b6100ba565b9061113461112f836110ff565b610110565b918252565b369037565b9061116361114b83611122565b9260208061115986936110ff565b9201910390611139565b565b919060408382031261118d578061118161118a925f8601610704565b93602001610704565b90565b61005c565b906080806111ea936111aa5f8201515f86019061097c565b6111bc6020820151602086019061097c565b6111ce6040820151604086019061097c565b6111e06060820151606086019061097c565b01519101906109cc565b565b6111f590610645565b9052565b9193611231611249969461122761123b949761121d6101208801995f890190611192565b60a087019061066e565b60c08501906111ec565b60e0830190610661565b610100818403910152610b7a565b90565b611255906106d6565b90565b61126190610533565b9052565b91602061128692949361127f60408201965f83019061066e565b0190611258565b565b90926113d7575b6112b96112be916112b46112ac6112a75f8801610628565b6110b4565b828691612602565b6106ca565b6106e2565b60406320b76e819184906113015f869561130c826112db306106ee565b6112ec6112e786610645565b61113e565b916112f5610052565b9a8b998a9889976106fe565b8752600487016111f9565b03925af180156113d2576113a5575b50611325306106ee565b61133160208401610628565b9061134f61134a6113435f8701610628565b9495611d6c565b6107ba565b61138b61138561137f7f0f2a3121f7029e01e9f13a42de098d53746dd0f794bfd3406b2c47b73e6acea39461124c565b9461124c565b9461124c565b946113a0611397610052565b92839283611265565b0390a4565b6113c59060403d81116113cb575b6113bd81836100e7565b810190611165565b5061131b565b503d6113b3565b6107f6565b9061142a60206113f86113f36113ee5f8801610628565b6110b4565b6110c0565b6370a082319061141f61140a306106ee565b92611413610052565b958694859384936106fe565b8352600483016110ea565b03915afa9182156114a0576112be926112b9925f91611472575b508161145861145283610125565b91610125565b11155f1461146b57505b9291505061128f565b9050611462565b611493915060203d8111611499575b61148b81836100e7565b8101906110cc565b5f611444565b503d611481565b6107f6565b906114b1939291611023565b565b91906060838203126114ff576114f8906114cd6060610110565b936114da825f830161009d565b5f8601526114eb826020830161009d565b60208601526040016101dc565b6040830152565b6100ac565b91906101e0838203126115655761155e9061151f6080610110565b9361152c825f83016114b3565b5f86015261153d82606083016101eb565b602086015261155082610120830161009d565b60408601526101400161014b565b6060830152565b6100ac565b906101e08282031261158457611581915f01611504565b90565b61005c565b61159d6115986115a292610642565b61048f565b61038c565b90565b6115ae9061038c565b7f800000000000000000000000000000000000000000000000000000000000000081146115da575f0390565b6104e1565b6115f36115ee6115f89261038c565b61048f565b610125565b90565b60409061162461162b949695939661161a60608401985f850190610661565b602083019061066e565b019061066e565b565b919361166561167d969461165b61166f94976116516101208801995f890190611192565b60a087019061066e565b60c085019061066e565b60e0830190610661565b610100818403910152610b7a565b90565b5f91031261168a57565b61005c565b6116c56116cc946116bb60e0949897956116b161010086019a5f870190611192565b60a085019061066e565b60c0830190610661565b0190610661565b565b9095949261171994611708611712926116fe6080966116f460a088019c5f89019061066e565b602087019061066e565b604085019061066e565b606083019061066e565b0190611258565b565b9192611733919361172a6126bc565b9081019061156a565b60208101519061175661175161174761200c565b5f840151906123cf565b610848565b923361177261176c61176787610854565b61007d565b9161007d565b03611c90578061178a6117845f611589565b9161038c565b125f14611c7a576117a261179d826115a5565b6115df565b5b94816117b76117b15f611589565b9161038c565b135f14611c6b57506117c8906115df565b5b846117e76117e16117dc60a08701610635565b610125565b91610125565b10611c19576117f860808401610635565b938561180c61180687610125565b91610125565b10611bd15761181e6060840151611d6c565b9261184a61183661183160408401610628565b6106ca565b6060830151611844306106ee565b916126c8565b9361186761186261185d60408501610628565b6106ca565b6106e2565b60606393c5206291839061189561187d306106ee565b946118a0611889610052565b968795869485946106fe565b8452600484016107d3565b03915afa908115611bcc576118c660206118d2936118cb935f91611b9e575b5001610806565b610813565b978961050e565b92836118e66118e088610125565b91610125565b101593845f14611b98576118f95f610645565b5b98855f14611b8657611933905b9161191f61191a5f606089015101610628565b6110b4565b9061192c60408801610628565b9091612602565b60408961195161194c611947848901610628565b6106ca565b6106e2565b6119935f6320b76e8161199e60608b0151959761196d306106ee565b61197e61197986610645565b61113e565b91611987610052565b9a8b998a9889976106fe565b87526004870161162d565b03925af18015611b8157611b54575b506119e36119c86119c35f606087015101610628565b6110b4565b6119d460408601610628565b6119dd5f610645565b91612602565b6119ff6119fa6119f560408601610628565b6106ca565b6106e2565b926060638720316d9101518694611a15306106ee565b611a1e306106ee565b823b15611b4f575f94611a4f8692611a4494611a38610052565b9b8c98899788966106fe565b86526004860161168f565b03925af1908115611b4a57611b1193611a8b92611b1e575b50611a84611a7e611a795f8b01610628565b6110b4565b91610854565b8691612708565b611ac2611a97306106ee565b95611aaf6020611aa85f8b01610628565b9901610628565b9886955f14611b165750945b98916107ba565b90611aff611af9611af37f73361010fb9a111f033ddf6b99bb11c387435633547ceeebc7fbe4fddb7303bd9861124c565b9861124c565b9861124c565b98611b08610052565b958695866116ce565b0390a4565b905094611abb565b611b3d905f3d8111611b43575b611b3581836100e7565b810190611680565b5f611a67565b503d611b2b565b6107f6565b6106fa565b611b749060403d8111611b7a575b611b6c81836100e7565b810190611165565b506119ad565b503d611b62565b6107f6565b50611933611b935f610645565b611907565b806118fa565b611bbf915060603d8111611bc5575b611bb781836100e7565b81019061079c565b5f6118bf565b503d611bad565b6107f6565b505050611be36020611c159201610628565b91925f9384937fce24035a000000000000000000000000000000000000000000000000000000008552600485016115fb565b0390fd5b8483611c67611c3660a0611c2f60208501610628565b9301610635565b925f9384937f3824a8c4000000000000000000000000000000000000000000000000000000008552600485016115fb565b0390fd5b611c7591506115df565b6117c9565b611c8b611c86866115a5565b6115df565b6117a3565b5f7f48f5c3ed00000000000000000000000000000000000000000000000000000000815280611cc1600482016102ad565b0390fd5b611d09611d04611cf47f08e807f0e311ef1048643adc5ad6a1816eb08663ef138ef8a0dbdde4c66f79456104ae565b611cfe60016104c5565b9061050e565b61053b565b90565b611d50611d4b611d3b7f439f1088d898f3d7db77e1b77d28920aa2581569b138503f27dfbbc6bae651da6104ae565b611d4560016104c5565b9061050e565b61053b565b90565b611d5b611cc5565b611d63611d0c565b5c905d565b5f90565b60a090611d77611d68565b502090565b611d866060610110565b90565b5f90565b5f90565b611d99611d7c565b906020808084611da7611d89565b815201611db2611d89565b815201611dbd611d8d565b81525050565b611dcb611d91565b90565b611dd86060610110565b90565b90611de5906101c0565b9052565b91611df2611dc3565b5082611e06611e008461007d565b9161007d565b11611e3c575b611e30611e3992611e27611e1e611dce565b955f870161096b565b6020850161096b565b60408301611ddb565b90565b611e30611e399293925050611e0c565b5f90565b731f98431c8ad98523631ae4a59f267346ea31f98490565b90565b611e7f611e7a611e8492611e68565b61048f565b610125565b90565b90565b611e9e611e99611ea392611e87565b61048f565b610125565b90565b90565b611ebd611eb8611ec292611ea6565b61048f565b610125565b90565b90565b611edc611ed7611ee192611ec5565b61048f565b610125565b90565b90565b611efb611ef6611f0092611ee4565b61048f565b610125565b90565b73db1d10011ad0ff90774d0c6bb92e5c5c8b4461f790565b90565b611f32611f2d611f3792611f1b565b61048f565b610125565b90565b7333128a8fc17869897dce68ed026d694621f6fdfd90565b90565b611f69611f64611f6e92611f52565b61048f565b610125565b90565b73afe208a311b21f13ef87e33a90049fc17a7acdec90565b90565b611fa0611f9b611fa592611f89565b61048f565b610125565b90565b737a5028bda40e7b173c278c5342087826455ea25a90565b90565b611fd7611fd2611fdc92611fc0565b61048f565b610125565b90565b731f9840000000000000000000000000000000000390565b919061200a905f6020850194019061066e565b565b612014611e4c565b504661202961202360016104c5565b91610125565b146121ae574661204261203c600a611e6b565b91610125565b146121a3574661205c61205661a4b1611e8a565b91610125565b14612198574661207561206f6089611ea9565b91610125565b1461218d574661208e6120886005611ec8565b91610125565b1461218257466120a76120a16038611ee7565b91610125565b1461217757466120c16120bb612105611f1e565b91610125565b1461216c57466120db6120d561a4ec611f55565b91610125565b1461216157466120f56120ef6101e0611f8c565b91610125565b14612156574661210e6121086082611fc3565b91610125565b1461214b57612147465f9182917f6b8c198400000000000000000000000000000000000000000000000000000000835260048301611ff7565b0390fd5b612153611fdf565b90565b61215e611fa8565b90565b612169611f71565b90565b612174611f3a565b90565b61217f611f03565b90565b61218a611e50565b90565b612195611e50565b90565b6121a0611e50565b90565b6121ab611e50565b90565b6121b6611e50565b90565b60209181520190565b5f7f506f6f6c416464726573733a2077726f6e6720746f6b656e206f726465720000910152565b6121f6601e6020926121b9565b6121ff816121c2565b0190565b6122189060208101905f8183039101526121e9565b90565b1561222257565b61222a610052565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061225a60048201612203565b0390fd5b612267906101c0565b9052565b60409061229461229b949695939661228a60608401985f850190610661565b6020830190610661565b019061225e565b565b60200190565b90565b6122ba6122b56122bf926122a3565b610536565b610533565b90565b6122eb7fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b546122a6565b90565b905090565b5f7fff00000000000000000000000000000000000000000000000000000000000000910152565b612326600180926122ee565b61232f816122f3565b0190565b60601b90565b61234290612333565b90565b61234e90612339565b90565b61235d6123629161007d565b612345565b9052565b90565b61237561237a91610533565b612366565b9052565b602093926123a760146123af9461239f612398899661231a565b8092612351565b018092612369565b018092612369565b0190565b6123c76123c26123cc92610125565b61048f565b610064565b90565b6124be6124c8926124a66124c3936123e5611e4c565b506124176123f45f8501610628565b61241161240b61240660208801610628565b61007d565b9161007d565b1061221b565b916124646124265f8301610628565b612455612441604061243a60208701610628565b950161082f565b612449610052565b9485936020850161226b565b602082018103825203826100e7565b61247661247082610b62565b9161229d565b20916124976124836122c2565b61248b610052565b9485936020850161237e565b602082018103825203826100e7565b6124b86124b282610b62565b9161229d565b206104ae565b6123b3565b6106d6565b90565b5f90565b90565b6124e66124e16124eb926124cf565b61048f565b610125565b90565b156124f557565b5f80fd5b61250d61250861251292610125565b61048f565b61038c565b90565b612563906125216124cb565b5061255e816125586125527f80000000000000000000000000000000000000000000000000000000000000006124d2565b91610125565b106124ee565b6124f9565b90565b63ffffffff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b6125a86125a36125ad92612566565b6106fe565b61256f565b90565b60ff1690565b6125ca6125c56125cf92610642565b61048f565b6125b0565b90565b6125db906125b6565b9052565b9160206126009294936125f960408201965f830190610661565b01906125d2565b565b909161264360049161263461261a63095ea7b3612594565b9186612624610052565b958694602086019081520161067b565b602082018103825203826100e7565b906126586126528284906127b2565b156102e6565b612662575b505050565b6126af60046126b4946126aa849161269b61268063095ea7b3612594565b915f9061268b610052565b96879460208601908152016125df565b602082018103825203836100e7565b61299b565b61299b565b5f808061265d565b5f6126c5611cc5565b5d565b906126f6906126f0612705946126dc61069e565b506126e683611d6c565b9085919091612c0b565b92612ec9565b9392509050919091909161327c565b90565b9161274c60049261273d612751959361272463a9059cbb612594565b9261272d610052565b968794602086019081520161067b565b602082018103825203836100e7565b61299b565b565b5f90565b606090565b3d5f146127775761276c3d611122565b903d5f602084013e5b565b61277f612757565b90612775565b90505190612792826102eb565b565b906020828203126127ad576127aa915f01612785565b90565b61005c565b905f80916127be612753565b506127c8846110c0565b9082602082019151925af16127db61275c565b81612806575b5090816127ed575b5090565b61280091506127fb906110c0565b6132b7565b5f6127e9565b905061281181610b62565b61282361281d5f610645565b91610125565b14908115612833575b505f6127e1565b61284e9150602061284382610b62565b818301019101612794565b5f61282c565b67ffffffffffffffff81116128725761286e6020916100b0565b0190565b6100ba565b9061288961288483612854565b610110565b918252565b5f7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564910152565b6128bf6020612877565b906128cc6020830161288e565b565b6128d66128b5565b90565b60207f6f74207375636365656400000000000000000000000000000000000000000000917f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201520152565b612933602a6040926121b9565b61293c816128d9565b0190565b6129559060208101905f818303910152612926565b90565b1561295f57565b612967610052565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061299760048201612940565b0390fd5b6129e4916129ab6129ba926110c0565b906129b46128ce565b916132d7565b6129c381610b62565b6129d56129cf5f610645565b91610125565b149081156129e6575b50612958565b565b612a01915060206129f682610b62565b818301019101612794565b5f6129de565b67ffffffffffffffff8111612a1f5760208091020190565b6100ba565b612a2d81610533565b03612a3457565b5f80fd5b90505190612a4582612a24565b565b90929192612a5c612a5782612a07565b610110565b9381855260208086019202830192818411612a9957915b838310612a805750505050565b60208091612a8e8486612a38565b815201920191612a73565b6103ba565b9080601f83011215612abc57816020612ab993519101612a47565b90565b6103b2565b90602082820312612af1575f82015167ffffffffffffffff8111612aec57612ae99201612a9e565b90565b610060565b61005c565b5190565b60209181520190565b60200190565b612b1290610533565b9052565b90612b2381602093612b09565b0190565b60200190565b90612b4a612b44612b3d84612af6565b8093612afa565b92612b03565b905f5b818110612b5a5750505090565b909192612b73612b6d6001928651612b16565b94612b27565b9101919091612b4d565b612b929160208201915f818403910152612b2d565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90612bcc82612af6565b811015612bdd576020809102010190565b612b95565b612bec9051610533565b90565b612c03612bfe612c0892610125565b61048f565b610713565b90565b612c33612c2d612c28612c5a955f95612c2261069e565b50613378565b613480565b916106e2565b612c4f637784c685612c43610052565b958694859384936106fe565b835260048301612b7d565b03915afa8015612cc557612c96612c91612c8c612c9b93612ca0955f91612ca3575b50612c865f610645565b90612bc2565b612be2565b6104ae565b612bef565b610813565b90565b612cbf91503d805f833e612cb781836100e7565b810190612ac1565b5f612c7c565b6107f6565b919060c083820312612d4c57612d4590612ce460c0610110565b93612cf1825f830161073c565b5f860152612d02826020830161073c565b6020860152612d14826040830161073c565b6040860152612d26826060830161073c565b6060860152612d38826080830161073c565b608086015260a00161073c565b60a0830152565b6100ac565b9060c082820312612d6a57612d67915f01612cca565b90565b61005c565b9190612d82905f602085019401906107c6565b565b612d98612d93612d9d92610642565b61048f565b610713565b90565b612db4612daf612db992610642565b61048f565b610064565b90565b612dc590612da0565b90565b612dd1906106a2565b90565b612ddd90612dc8565b90565b612de9906106d6565b90565b612df590610713565b9052565b9060a080612e6393612e115f8201515f860190612dec565b612e2360208201516020860190612dec565b612e3560408201516040860190612dec565b612e4760608201516060860190612dec565b612e5960808201516080860190612dec565b0151910190612dec565b565b9160a0612e87929493612e806101608201965f830190611192565b0190612df9565b565b612e95612e9b91610713565b91610713565b01906fffffffffffffffffffffffffffffffff8211612eb657565b6104e1565b90612ec590610713565b9052565b60c0612f2c91612ed761069e565b50612ee061069e565b50612ee961069e565b50612ef261069e565b50612f05612eff85611d6c565b916106e2565b612f21635c60e39a612f15610052565b958694859384936106fe565b835260048301612d6f565b03915afa908115613217575f916131e9575b5090612f5e42612f58612f5360808601610806565b610813565b9061050e565b80612f71612f6b5f610645565b91610125565b1415806131c3575b80613195575b612fdd575b5050612f915f8201610806565b612f9d60208301610806565b92612fda612fd4612fce612fc8612fc26060612fbb60408a01610806565b9801610806565b95610813565b96610813565b94610813565b92610813565b90565b6020612ffb612ff6612ff160608601610628565b612dd4565b612de0565b638c00bf6b939061301e8695613029613012610052565b978895869485946106fe565b845260048401612e65565b03915afa918215613190576130659261305f915f91613162575b509161305961305460408701610806565b610813565b92613541565b906135b4565b61308d613071826136c2565b613087604085019161308283610806565b612e89565b90612ebb565b6130b4613099826136c2565b6130ae5f8501916130a983610806565b612e89565b90612ebb565b6130c060a08301610806565b6130d26130cc5f612d84565b91610713565b036130de575b80612f84565b61314061313b61310561315c936130ff6130fa60a08801610806565b610813565b906135b4565b6131218161311c6131175f8901610806565b610813565b61050e565b61313561313060208801610806565b610813565b9161370d565b6136c2565b613156602084019161315183610806565b612e89565b90612ebb565b5f6130d8565b613183915060203d8111613189575b61317b81836100e7565b8101906110cc565b5f613043565b503d613171565b6107f6565b506131a260608301610628565b6131bc6131b66131b15f612dbc565b61007d565b9161007d565b1415612f7f565b506131d060408401610806565b6131e26131dc5f612d84565b91610713565b1415612f79565b61320a915060c03d8111613210575b61320281836100e7565b810190612d51565b5f612f3e565b503d6131f8565b6107f6565b61322660016104c5565b90565b61323861323e91939293610125565b92610125565b820180921161324957565b6104e1565b90565b61326561326061326a9261324e565b61048f565b610125565b90565b613279620f4240613251565b90565b916132ae61329f6132b49461328f61069e565b509361329961321c565b90613229565b916132a861326d565b90613229565b91613798565b90565b6132bf612753565b503b6132d36132cd5f610645565b91610125565b1190565b906132f692916132e5612757565b50906132f05f610645565b916138a2565b90565b90565b61331061330b613315926132f9565b61048f565b610125565b90565b61332260026132fc565b90565b91602061334692949361333f60408201965f8301906107c6565b019061066e565b565b91602061336992949361336260408201965f830190610661565b0190611258565b565b61337560016104c5565b90565b613414613422916133fc6134279461338e61059e565b50916133c261339b613318565b916133b36133a7610052565b93849260208401613325565b602082018103825203826100e7565b6133d46133ce82610b62565b9161229d565b20916133ed6133e1610052565b93849260208401613348565b602082018103825203826100e7565b61340e61340882610b62565b9161229d565b206104ae565b61341c61336b565b90613229565b61053b565b90565b606090565b9061344161343c83612a07565b610110565b918252565b369037565b906134706134588361342f565b926020806134668693612a07565b9201910390613446565b565b9061347c90610533565b9052565b61348861342a565b506134b761349e61349960016104c5565b61344b565b916134b2836134ac5f610645565b90612bc2565b613472565b90565b6134c96134cf91939293610125565b92610125565b916134db838202610125565b9281840414901517156134ea57565b6104e1565b90565b61350661350161350b926134ef565b61048f565b610125565b90565b61351f670de0b6b3a76400006134f2565b90565b90565b61353961353461353e92613522565b61048f565b610125565b90565b6135b1916135579161355161069e565b506134ba565b6135ac613580828361357a600261357561356f61350e565b916132fc565b6134ba565b916138fb565b6135a681846135a0600361359b61359561350e565b91613525565b6134ba565b916138fb565b92613229565b613229565b90565b906135d1916135c161069e565b50906135cb61350e565b916138fb565b90565b5f90565b5f7f6d61782075696e74313238206578636565646564000000000000000000000000910152565b6136096014612877565b90613616602083016135d8565b565b6136206135ff565b90565b61362b613618565b90565b5190565b61365161365a60209361365f936136488161362e565b938480936121b9565b95869101610b6f565b6100b0565b0190565b6136789160208201915f818403910152613632565b90565b156136835750565b6136be9061368f610052565b9182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301613663565b0390fd5b61370a906136ce6135d4565b50613705816136f56136ef6fffffffffffffffffffffffffffffffff610813565b91610125565b11156136ff613623565b9061367b565b612bef565b90565b90613740613731613746949361372161069e565b509361372b61326d565b90613229565b9161373a61321c565b90613229565b916138fb565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61378261378891610125565b91610125565b908115613793570490565b613749565b6137b26137d193926137cc926137ac61069e565b506134ba565b6137c6836137c060016104c5565b9061050e565b90613229565b613776565b90565b6137dd906106d6565b90565b60207f722063616c6c0000000000000000000000000000000000000000000000000000917f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201520152565b61383a60266040926121b9565b613843816137e0565b0190565b61385c9060208101905f81830391015261382d565b90565b1561386657565b61386e610052565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061389e60048201613847565b0390fd5b915f80916138f895936138b3612757565b506138da6138c0306137d4565b316138d36138cd85610125565b91610125565b101561385f565b8591602082019151925af1916138ee61275c565b90929091926139b6565b90565b61391792916139129161390c61069e565b506134ba565b613776565b90565b5f7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000910152565b61394e601d6020926121b9565b6139578161391a565b0190565b6139709060208101905f818303910152613941565b90565b1561397a57565b613982610052565b7f08c379a0000000000000000000000000000000000000000000000000000000008152806139b26004820161395b565b0390fd5b9192906139c1612757565b505f14613a0557506139d282610b62565b6139e46139de5f610645565b91610125565b146139ee575b5090565b6139fa6139ff916132b7565b613973565b5f6139ea565b8290613a1082610b62565b613a22613a1c5f610645565b91610125565b115f14613a325750805190602001fd5b613a6d90613a3e610052565b9182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301613663565b0390fd