0 txs
0 calls
constructor
No constructor.
functions
getShipmentRoutes
viewfunction getShipmentRoutes() view returns (tuple[])
seasonTime
viewfunction seasonTime() view returns (uint32)
gm
payablefunction gm(address account, uint8 mode) payable returns (uint256)
setShipmentRoutes
nonpayablefunction setShipmentRoutes(tuple[] shipmentRoutes)
sunrise
payablefunction sunrise() payable returns (uint256)
events
BeanToMaxLpGpPerBdvRatioChange
event BeanToMaxLpGpPerBdvRatioChange(uint256 indexed season, uint256 caseId, int80 absChange)
Engaged
event Engaged(uint8 gaugeId, bytes value)
Incentivization
event Incentivization(address indexed account, uint256 beans)
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
SeasonOfPlentyField
event SeasonOfPlentyField(uint256 toField)
ShipmentRoutesSet
event ShipmentRoutesSet((address planContract, bytes4 planSelector, uint8 recipient, bytes data)[] newShipmentRoutes)
Soil
event Soil(uint32 indexed season, uint256 soil)
Sunrise
event Sunrise(uint256 indexed season)
TemperatureChange
event TemperatureChange(uint256 indexed season, uint256 caseId, int32 absChange, uint256 fieldId)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
T
error T()
creation bytecode
0x6080604052348015600e575f80fd5b50615f188061001c5f395ff3fe608060405260043610610049575f3560e01c806364ee4b801461004d578063ca7b7d7b14610073578063f1e2dfb01461009c578063fc06d2a6146100bd578063fd497a68146100c5575b5f80fd5b61006061005b366004614aa4565b6100e6565b6040519081526020015b60405180910390f35b34801561007e575f80fd5b50610087610268565b60405163ffffffff909116815260200161006a565b3480156100a7575f80fd5b506100bb6100b6366004614ade565b6102aa565b005b610060610356565b3480156100d0575f80fd5b506100d96104d4565b60405161006a9190614ba2565b60c4545f90816100f4610621565b90505f61010082610749565b6003549091506001190161012f5760405162461bcd60e51b815260040161012690614c49565b60405180910390fd5b600260035561013e868661084a565b935060016003555f61014f83610749565b9050835f60c4015410156101755760405162461bcd60e51b815260040161012690614c80565b5f5b83518110156101da5781818151811061019257610192614cb7565b60200260200101518382815181106101ac576101ac614cb7565b602002602001015111156101d25760405162461bcd60e51b815260040161012690614ccb565b600101610177565b50505050505f6101e8610621565b90505f806101f58361096d565b915091505f5b835181101561025e5782818151811061021657610216614cb7565b602002602001015182828151811061023057610230614cb7565b602002602001015110156102565760405162461bcd60e51b815260040161012690614d11565b6001016101fb565b5050505092915050565b60d5545f9042101561027957505f90565b60d6545f0361028b575063ffffffff90565b60d65460d55461029b9042614d5c565b6102a59190614d83565b905090565b6102b2610d6d565b6102bd60235f614a03565b5f5b818110156103185760238383838181106102db576102db614cb7565b90506020028101906102ed9190614d96565b81546001810183555f928352602090922090916002020161030e8282614f69565b50506001016102bf565b507fca92e00c98390526297182f340f5f8f0f0fbd9f5f4a705d43fafcab4568207ed828260405161034a929190615042565b60405180910390a15050565b6003545f906001190161037b5760405162461bcd60e51b815260040161012690614c49565b600260035560c4545f61038c610621565b90505f61039882610749565b90506103ab6103a5610e03565b5f61084a565b93505f6103b783610749565b9050835f60c4015410156103dd5760405162461bcd60e51b815260040161012690614c80565b5f5b8351811015610442578181815181106103fa576103fa614cb7565b602002602001015183828151811061041457610414614cb7565b6020026020010151111561043a5760405162461bcd60e51b815260040161012690614ccb565b6001016103df565b50506001600355505f91506104579050610621565b90505f806104648361096d565b915091505f5b83518110156104cd5782818151811061048557610485614cb7565b602002602001015182828151811061049f5761049f614cb7565b602002602001015110156104c55760405162461bcd60e51b815260040161012690614d11565b60010161046a565b5050505090565b6023805460408051602080840282018101909252828152606093909290915f9084015b82821015610618575f848152602090819020604080516080810182526002860290920180546001600160a01b0381168452600160a01b810460e01b6001600160e01b03191694840194909452919290830190600160c01b900460ff16600481111561056457610564614b4c565b600481111561057557610575614b4c565b815260200160018201805461058990614e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546105b590614e2b565b80156106005780601f106105d757610100808354040283529160200191610600565b820191905f5260205f20905b8154815290600101906020018083116105e357829003601f168201915b505050505081525050815260200190600101906104f7565b50505050905090565b60605f61062c610e4e565b90505f610637610f4f565b90505f81518351610648919061513d565b9050806001600160401b0381111561066257610662614e17565b60405190808252806020026020018201604052801561068b578160200160208202803683370190505b5093505f5b83518110156106e5578381815181106106ab576106ab614cb7565b60200260200101518582815181106106c5576106c5614cb7565b6001600160a01b0390921660209283029190910190910152600101610690565b505f5b82518110156104cd5782818151811061070357610703614cb7565b602002602001015185828651610719919061513d565b8151811061072957610729614cb7565b6001600160a01b03909216602092830291909101909101526001016106e8565b606081516001600160401b0381111561076457610764614e17565b60405190808252806020026020018201604052801561078d578160200160208202803683370190505b5090505f5b8251811015610844578281815181106107ad576107ad614cb7565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107e09190615150565b602060405180830381865afa1580156107fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081f9190615164565b82828151811061083157610831614cb7565b6020908102919091010152600101610792565b50919050565b6001545f90600160a01b900460ff16156108765760405162461bcd60e51b81526004016101269061517b565b60d45463ffffffff16610887610268565b63ffffffff16116108aa5760405162461bcd60e51b8152600401610126906151a4565b6108b2610fbb565b5f6108bb611082565b90505f6108c6611114565b90507374f0910564523a9a9a0b4db23505f653af20548c63d9d11f09836108eb610e4e565b6040518363ffffffff1660e01b81526004016109089291906151db565b5f6040518083038186803b15801561091e575f80fd5b505af4158015610930573d5f803e3d5ffd5b505050505f8061093f836111f0565b9150915061094c816113cb565b61095682826114a1565b6109608787611679565b9450505050505b92915050565b6060805f83516001600160401b0381111561098a5761098a614e17565b6040519080825280602002602001820160405280156109b3578160200160208202803683370190505b50925083516001600160401b038111156109cf576109cf614e17565b6040519080825280602002602001820160405280156109f8578160200160208202803683370190505b5091505f5b8451811015610d665781600101601b015f868381518110610a2057610a20614cb7565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f878481518110610a6d57610a6d614cb7565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f888581518110610ac257610ac2614cb7565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a9087908110610b0c57610b0c614cb7565b6020908102919091018101516001600160a01b031682528101919091526040015f2054610b4291906001600160801b0316615238565b610b4c9190615238565b6001600160801b0316610b5f919061513d565b848281518110610b7157610b71614cb7565b6020908102919091010152600182015485516001600160a01b0390911690869083908110610ba157610ba1614cb7565b60200260200101516001600160a01b031603610c4d578160010160080154848281518110610bd157610bd1614cb7565b60200260200101818151610be5919061513d565b9052505f5b6008830154811015610c4b575f81815260208085019052604090206001810154600290910154610c1a9190614d5c565b858381518110610c2c57610c2c614cb7565b60200260200101818151610c40919061513d565b905250600101610bea565b505b81600101610101015f015f868381518110610c6a57610c6a614cb7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054848281518110610ca457610ca4614cb7565b60200260200101818151610cb8919061513d565b9052508451859082908110610ccf57610ccf614cb7565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610d029190615150565b602060405180830381865afa158015610d1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d419190615164565b838281518110610d5357610d53614cb7565b60209081029190910101526001016109fd565b5050915091565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600401546001600160a01b0316331480610da757503330145b610e015760405162461bcd60e51b815260206004820152602560248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f722060448201526437bbb732b960d91b6064820152608401610126565b565b5f610e357f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b03821611610e4b5750335b90565b60c9546060905f9081816001600160401b03811115610e6f57610e6f614e17565b604051908082528060200260200182016040528015610e98578160200160208202803683370190505b5093505f5b82811015610f455760c98401805482908110610ebb57610ebb614cb7565b5f91825260209091200154600160a01b900460ff1615610f3d5760c98401805482908110610eeb57610eeb614cb7565b5f918252602090912001546001600160a01b03168583610f0a8161525f565b945081518110610f1c57610f1c614cb7565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101610e9d565b5080845250505090565b60605f610f5a611822565b90505f5b815181101561084457610f89828281518110610f7c57610f7c614cb7565b6020026020010151611919565b828281518110610f9b57610f9b614cb7565b6001600160a01b0390921660209283029190910190910152600101610f5e565b600154600160a01b900460ff1615610fe55760405162461bcd60e51b81526004016101269061517b565b5f610fee610268565b60d45490915063ffffffff908116908216811061101d5760405162461bcd60e51b8152600401610126906151a4565b611028816001615277565b63ffffffff168263ffffffff16111561107e57611067600161104a8385615294565b6110549190615294565b60d6549063ffffffff908116906119a916565b60d580545f9061107890849061513d565b90915550505b5050565b60d480545f91600191839061109e90849063ffffffff16615277565b82546101009290920a63ffffffff81810219909316918316021790915560d4805467ffffffffffffffff60881b198116600160881b436001600160401b03160217909155604051911692508291507fb360bcf4b60112f485fd94b599df45181250ef0e80538be7b334728ab0990b1a905f90a290565b5f8061111e6119bb565b90505f5b81518110156111ce576111c4736dd836e7fe603bd73532bf6b5cbb188b7fcc7fa963c49a3e9284848151811061115a5761115a614cb7565b60200260200101516040518263ffffffff1660e01b815260040161117e9190615150565b602060405180830381865af4158015611199573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bd9190615164565b8490611ab2565b9250600101611122565b504260d7556111ea64ba43b74000668e1bc9bf04000084611abd565b91505090565b60408051610100810182525f60e082018181528252825160208082018552828252808401919091528351808201855282815283850152606083018290526080830182905260a0830182905260c0830182905260015484516318160ddd60e01b81529451929485936001600160a01b03909216926318160ddd926004808401938290030181865afa158015611286573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112aa9190615164565b9050805f036112d5575060e1805463ffffffff60c01b1916613d0960c61b1790556009939092509050565b60405163570d638f60e11b8152600481018590526024810182905273311877f9ffbaf12b905df3e1f8c3b5f3c5527bd49063ae1ac71e9060440161010060405180830381865af415801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f9190615357565b809350819450505061136683838460800151611baa565b6040516346edba7d60e11b81526004810184905273ff823fbb0ae114b8e41c0529c7d87702cc5d06a890638ddb74fa906024015f6040518083038186803b1580156113af575f80fd5b505af41580156113c1573d5f803e3d5ffd5b5050505050915091565b5f8160405160200161142f91908151518152602080830151519082015260408083015151908201526060808301516001600160a01b03169082015260808083015115159082015260a0808301519082015260c0918201519181019190915260e00190565b60405160208183030381529060405290507328d436b9bbbe755dea4db747483f693d718479846349f590446040518163ffffffff1660e01b81526004015f6040518083038186803b158015611482575f80fd5b505af4158015611494573d5f803e3d5ffd5b5050505061107e81611c6f565b60c08101515f8113156115e4576007545f908152602080526040908190206002015460d883905560015491516340c10f1960e01b815290916001600160a01b0316906340c10f19906114f990309086906004016153fe565b5f604051808303815f87803b158015611510575f80fd5b505af1158015611522573d5f803e3d5ffd5b505060405163244f643b60e01b815260048101859052733e3442a75ed4dd47e64e4522da625701049d6477925063244f643b91506024015f6040518083038186803b15801561156f575f80fd5b505af4158015611581573d5f803e3d5ffd5b505060ee546007545f9081526020805260408120600201549093506001600160801b0390911691506115b4908490614d5c565b6115be919061513d565b90506115ca8186611cc7565b505060d4805460ff60c81b1916600160c81b179055505050565b5f6115ed611d1c565b90505f808213156116375761010754620f42409061160a85615417565b6116149190615431565b61161e9190614d83565b905061163261162d8287611d72565b611e22565b611664565b61165161164384615417565b61164c84615417565b611e9c565b905061166461162d828660200151611eb1565b505060d4805460ff60c81b191690555b505050565b60d45460d6545f9182916116ae916116a79161169e9163ffffffff908116906119a916565b60d55490611fab565b4290611fb6565b90505f6116b96119bb565b90505f5b8151811015611746576116ff8282815181106116db576116db614cb7565b60200260200101516001600160a01b03165f908152601f6020526040902060019055565b61173e82828151811061171457611714614cb7565b60200260200101516001600160a01b03165f908152601e602052604090206001600160801b019055565b6001016116bd565b5060405163c8187cf160e01b8152600481018390525f907309240a6c83350caaf110d9de6e23a659625d54769063c8187cf190602401602060405180830381865af4158015611797573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117bb9190615164565b6001549091506117d6906001600160a01b0316828888611fc1565b856001600160a01b03167fbb4f656853bc420ad6e4321622c07eefb4ed40e3f91b35553ce14a6dff4c09818260405161181191815260200190565b60405180910390a295945050505050565b60c9546060905f9081816001600160401b0381111561184357611843614e17565b60405190808252806020026020018201604052801561186c578160200160208202803683370190505b5093505f5b82811015610f455760c9840180548290811061188f5761188f614cb7565b5f91825260209091200154600160b81b900460ff16156119115760c984018054829081106118bf576118bf614cb7565b5f918252602090912001546001600160a01b031685836118de8161525f565b9450815181106118f0576118f0614cb7565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101611871565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611956573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261197d919081019061546a565b905080611989826120a0565b8151811061199957611999614cb7565b6020026020010151915050919050565b5f6119b48284615431565b9392505050565b60c9546060905f9081816001600160401b038111156119dc576119dc614e17565b604051908082528060200260200182016040528015611a05578160200160208202803683370190505b5093505f5b82811015610f455760c98401805482908110611a2857611a28614cb7565b5f91825260209091200154600160b01b900460ff1615611aaa5760c98401805482908110611a5857611a58614cb7565b5f918252602090912001546001600160a01b03168583611a778161525f565b945081518110611a8957611a89614cb7565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101611a0a565b5f6119b482846154f8565b5f805f611b54670de0b6b3a7640000611b4e87856001015f015f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b489190615164565b906119a9565b90612131565b905080861315611b615750845b5f841215611b9157611b7281615417565b8413611b8657611b8181615417565b611b88565b835b925050506119b4565b808412611b9e5780611ba0565b835b9695505050505050565b5f611bb48461213c565b9050670de0b6b3a764000083604001515f01511115611c41575f8360c001511215611c3257611be460038561551f565b5f03611bf8576207a1206020820152611c32565b611c0360038561551f565b600103611c15575f6020820152611c32565b611c2060038561551f565b600203611c3257620f423f1960208201525b611c3e846103e861513d565b93505b611c4f816020015185612197565b8115611c5b5750505050565b611c698160600151856122be565b50505050565b5f805b6101478201548110156116745761014782018054611cbf919083908110611c9b57611c9b614cb7565b905f5260205f2090602091828204019190069054906101000a900460ff1684612461565b600101611c72565b60e1545f90611d0d90600160c01b900463ffffffff16611ceb620f42406064615431565b611cf5919061513d565b611b4e611d06620f42406064615431565b86906119a9565b905061167461162d8284611d72565b5f80611d266119bb565b90505f5b8151811015611d6d575f611d56838381518110611d4957611d49614cb7565b6020026020010151612706565b9050611d6281856154f8565b935050600101611d2a565b505090565b5f601b611d80836024612856565b10611da85760fe54611da190670de0b6b3a764000090611b4e9086906119a9565b9050610967565b6012611db5836024612856565b10611dd75761010554611da190670de0b6b3a764000090611b4e9086906119a9565b6009611de4836024612856565b10611e065761010654611da190670de0b6b3a764000090611b4e9086906119a9565b60ff54611da190670de0b6b3a764000090611b4e9086906119a9565b611e2b81612861565b600680546001600160801b0319166001600160801b039290921691909117905560d45463ffffffff167f120fa8f6031fee45346a5c55083305b3840521c041af94971694219f7c26db8b611e7e83612861565b6040516001600160801b03909116815260200160405180910390a250565b5f818310611eaa57816119b4565b5090919050565b5f825f03611ec057505f610967565b610104545f90611ed390620f4240612898565b90505f611ee084836128cd565b9050611ef8611ef160636064612898565b82906128ff565b15611f0c57611f0960636064612898565b90505b5f611f59611f54611f1c88612913565b611f4e85611f4860408051602080820183525f9091528151908101909152670de0b6b3a7640000815290565b90612947565b906128cd565b612970565b61010854909150611f6f908290610e1090612986565b90505f611f7b5f612a45565b806020019051810190611f8e9190615164565b9050610960611fa283836305f5e100612986565b61010954612b0d565b5f6119b4828461513d565b5f6119b48284614d5c565b5f816001811115611fd457611fd4614b4c565b03612039576040516340c10f1960e01b81526001600160a01b038516906340c10f199061200790859087906004016153fe565b5f604051808303815f87803b15801561201e575f80fd5b505af1158015612030573d5f803e3d5ffd5b50505050611c69565b6040516340c10f1960e01b81526001600160a01b038516906340c10f199061206790309087906004016153fe565b5f604051808303815f87803b15801561207e575f80fd5b505af1158015612090573d5f803e3d5ffd5b50505050611c6984848484612b1b565b5f805b82518210156120f1578282815181106120be576120be614cb7565b602090810291909101015160018201546001600160a01b039081169116146120e65750919050565b8160010191506120a3565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b6044820152606401610126565b5f6119b48284614d83565b604080516080810182525f80825260208201819052918101829052606081018290529061216883612b5e565b60c081901c63ffffffff1660030b6020848101919091521c6001600160501b031660090b606083015250919050565b60e154600160c01b900463ffffffff165f600384900b1215612230576121bc83615532565b60030b81116121f0576121d281620f4240615553565b60e1805463ffffffff60c01b1916613d0960c61b1790559250612264565b6121f983615532565b6122069060030b82614d5c565b60e1805463ffffffff92909216600160c01b0263ffffffff60c01b19909216919091179055612264565b61223e600384900b8261513d565b60e1805463ffffffff92909216600160c01b0263ffffffff60c01b199092169190911790555b60d45460075460408051858152600387900b60208201529081019190915263ffffffff909116907f73561a3e5de81ab23862fe7b59b32ebd204ca3dc0e7b3f2b3d500d9bae82b49c906060015b60405180910390a2505050565b60e654600160801b90046001600160801b03165f600984900b1215612373576122e68361557a565b60090b6001600160801b0316816001600160801b03161161233257612313816001600160801b0316612b7c565b61231c9061557a565b60e680546001600160801b03169055925061241c565b61235161233e8461557a565b6001600160801b0383169060090b612bb0565b60e680546001600160801b03928316600160801b02921691909117905561241c565b68056bc75e2d631000006123946001600160801b038316600986900b612bbb565b6001600160801b0316106123e7576123c66123b868056bc75e2d6310000083612bb0565b6001600160801b0316612b7c565b60e680546001600160801b03166556bc75e2d63160941b179055925061241c565b6123fe6001600160801b038216600985900b612bbb565b60e680546001600160801b03928316600160801b0292169190911790555b60d45460408051848152600986900b602082015263ffffffff909216917f8db44d78d51255c6e57bf14f04408783aa8b2524d7efe180df104f208199ae2991016122b1565b5f806101488185600181111561247957612479614b4c565b600181111561248a5761248a614b4c565b81526020019081526020015f206040518060800160405290815f820180546124b190614e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546124dd90614e2b565b80156125285780601f106124ff57610100808354040283529160200191612528565b820191905f5260205f20905b81548152906001019060200180831161250b57829003601f168201915b505050918352505060018201546001600160a01b0381166020830152600160a01b900460e01b6001600160e01b031916604082015260028201805460609092019161257290614e2b565b80601f016020809104026020016040519081016040528092919081815260200182805461259e90614e2b565b80156125e95780601f106125c0576101008083540402835291602001916125e9565b820191905f5260205f20905b8154815290600101906020018083116125cc57829003601f168201915b50505050508152505090506125fe8184612bc6565b61014884015f87600181111561261657612616614b4c565b600181111561262757612627614b4c565b815260208101919091526040015f9081209061014886018189600181111561265157612651614b4c565b600181111561266257612662614b4c565b815260208101919091526040015f2060020161267e8482615599565b5061268b90508382615599565b507f271ce2e27fd04220983085eb82b61596a128ed4181faa907f27ee3863af62a18915085905061014884015f8260018111156126ca576126ca614b4c565b60018111156126db576126db614b4c565b81526020019081526020015f205f016040516126f8929190615653565b60405180910390a150505050565b5f80826001600160a01b031663a1d89d966040518163ffffffff1660e01b81526004015f60405180830381865afa158015612743573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261276a91908101906157d6565b9050805f8151811061277e5761277e614cb7565b60200260200101515f01516001600160a01b0316636de13cba84835f815181106127aa576127aa614cb7565b6020026020010151602001516040518363ffffffff1660e01b81526004016127d392919061587f565b5f60405180830381865afa92505050801561280f57506040513d5f823e601f3d908101601f1916820160405261280c91908101906158a2565b60015b61281b57505f92915050565b80515f0361282c57505f9392505050565b604080515f8082526020820190925261284990869084905f612cf0565b5091979650505050505050565b5f6119b4828461551f565b5f6001600160801b03821115612894576040516306dfcc6560e41b81526080600482015260248101839052604401610126565b5090565b60408051602081019091525f815260405180602001604052806128c485670de0b6b3a764000086612e05565b90529392505050565b60408051602081019091525f815260405180602001604052806128c4855f0151855f0151670de0b6b3a7640000612e05565b5f8061290b8484612e1c565b119392505050565b60408051602081019091525f815260408051602081019091528061293f84670de0b6b3a76400006119a9565b905292915050565b60408051602081019091525f815260408051602081019091528251845182916128c49190611fb6565b80515f9061096790670de0b6b3a7640000612131565b5f838302815f1985870982811083820303915050805f036129ba578382816129b0576129b0614d6f565b04925050506119b4565b8084116129da5760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60605f61014881846001811115612a5e57612a5e614b4c565b6001811115612a6f57612a6f614b4c565b81526020019081526020015f205f018054612a8990614e2b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ab590614e2b565b8015612b005780601f10612ad757610100808354040283529160200191612b00565b820191905f5260205f20905b815481529060010190602001808311612ae357829003601f168201915b5050505050915050919050565b5f818311611eaa57816119b4565b8215611c69576001816001811115612b3557612b35614b4c565b03612b4a57612b45828585612e4c565b611c69565b611c696001600160a01b0385168385612e9d565b5f8060348360908110612b7357612b73614cb7565b01549392505050565b80600981900b8114612bab5760405163327269a760e01b81526050600482015260248101839052604401610126565b919050565b5f6119b48284615922565b5f6119b48284615238565b602082015160609081906001600160a01b0316612be4573060208501525b60408401516001600160e01b031916612c0557505081516060830151612ce9565b5f8085602001516001600160a01b03168660400151875f0151878960600151604051602401612c3693929190615942565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612c749190615991565b5f60405180830381855afa9150503d805f8114612cac576040519150601f19603f3d011682016040523d82523d5f602084013e612cb1565b606091505b509150915081612cce575050835160608501519092509050612ce9565b80806020019051810190612ce2919061599c565b9350935050505b9250929050565b5f60608060605f886001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612d32573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612d59919081019061546a565b90505f805f612d68848a612ef5565b925092509250629896808b8381518110612d8457612d84614cb7565b60200260200101511015612db4575050604080515f8082526020820190925290965088955093509150612dfa9050565b80612ddd57604080515f808252602082019092528b908d90975097509750975050505050612dfa565b5f612dea8d8d86866131b9565b98508a97508b9650929450505050505b945094509450949050565b5f612e1482611b4e86866119a9565b949350505050565b805182515f919003612e3057506001610967565b8151835111612e3f575f612e42565b60025b60ff169392505050565b6001600160a01b038381165f908152602081815260408083209386168352601b90930190529081205490612e808284611fab565b9050612e96858583612e91876132dd565b613309565b5050505050565b61167483846001600160a01b031663a9059cbb8585604051602401612ec39291906153fe565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613405565b60605f80806001915085516001600160401b03811115612f1757612f17614e17565b604051908082528060200260200182016040528015612f40578160200160208202803683370190505b5060018201549094505f1993505f906001600160a01b0316815b885181101561302d57816001600160a01b0316898281518110612f7f57612f7f614cb7565b60200260200101516001600160a01b031603612f9d57809550613025565b6008898281518110612fb157612fb1614cb7565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ff4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301891906159fb565b60ff161161302557600192505b600101612f5a565b505f5b885181101561316a57816001600160a01b031689828151811061305557613055614cb7565b60200260200101516001600160a01b0316036130b057821561309a5764e8d4a5100087828151811061308957613089614cb7565b602002602001018181525050613162565b620f424087828151811061308957613089614cb7565b82156130fc576130d98982815181106130cb576130cb614cb7565b60200260200101518961345d565b8782815181106130eb576130eb614cb7565b60200260200101818152505061313e565b61311f89828151811061311157613111614cb7565b6020026020010151896134cd565b87828151811061313157613131614cb7565b6020026020010181815250505b86818151811061315057613150614cb7565b60200260200101515f03613162575f94505b600101613030565b505f1985036131af5760405162461bcd60e51b81526020600482015260116024820152702132b0b7103737ba1034b7102bb2b6361760791b6044820152606401610126565b5050509250925092565b5f80856001600160a01b03166310dd08306040518163ffffffff1660e01b81526004015f60405180830381865afa1580156131f6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261321d9190810190615a1b565b80516020820151604051631017d19360e31b81529293506001600160a01b03909116916380be8c989161325991899188918a9190600401615a86565b602060405180830381865afa925050508015613292575060408051601f3d908101601f1916820190925261328f91810190615164565b60015b61329f575f915050612e14565b6132cb8685815181106132b4576132b4614cb7565b60200260200101518261353b90919063ffffffff16565b92505050612e14565b50949350505050565b5f6001600160ff1b038211156128945760405163123baf0360e11b815260048101839052602401610126565b5f8082121561335f5761333e61331e83615417565b6001600160a01b0386165f908152601c8401602052604090205490611fb6565b6001600160a01b0385165f908152601c8301602052604090208190556133a0565b6001600160a01b0384165f908152601c820160205260409020546133839083611fab565b6001600160a01b0385165f908152601c8301602052604090208190555b506001600160a01b038581165f81815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42910160405180910390a35050505050565b5f6134196001600160a01b03841683613546565b905080515f1415801561343d57508080602001905181019061343b9190615ac4565b155b156116745782604051635274afe760e01b81526004016101269190615150565b5f6119b483846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561349e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134c291906159fb565b60ff16846001613553565b5f6119b483846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061353291906159fb565b60ff1684613b6f565b5f6119b48284615add565b60606119b483835f613b7c565b6001600160a01b038481165f908152602260209081526040808320815160808101835281549586168152600160a01b860460e01b6001600160e01b03191693810193909352600160c01b90940460f81b6001600160f81b031916908201526001830180549293849384939260608401916135cc90614e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546135f890614e2b565b80156136435780601f1061361a57610100808354040283529160200191613643565b820191905f5260205f20905b81548152906001019060200180831161362657829003601f168201915b5050509190925250505060408101519091506001600160f81b03199081160161368d576132cb815f015182606001518060200190518101906136859190615164565b888888613c0b565b60408101516001600160f81b031916607f60f91b01613a56575f815f01516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061370a9190615afc565b9050876001600160a01b0316816001600160a01b03160361378b57815f01516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613764573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137889190615afc565b90505b613823861561379a578661379e565b6103845b83518a848b156137b8576137b38c600a615bef565b613c3d565b8c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061381891906159fb565b6137b390600a615bfa565b6001600160a01b038281165f9081526022860160209081526040808320815160808101835281549586168152600160a01b860460e01b6001600160e01b03191693810193909352600160c01b90940460f81b6001600160f81b031916908201526001830180549498509193909291606084019161389f90614e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546138cb90614e2b565b80156139165780601f106138ed57610100808354040283529160200191613916565b820191905f5260205f20905b8154815290600101906020018083116138f957829003601f168201915b50505050508152505090505f826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561395e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398291906159fb565b60ff1690505f6139bc835f015184606001518060200190518101906139a79190615164565b8c156139b357846139b5565b8c5b8c5f613c0b565b90508915613a485787156139f657866139d68b600a615bef565b6139e59064e8d4a51000615431565b6139ef9190614d83565b9650613a1c565b86613a028b600a615bef565b613a0f90620f4240615431565b613a199190614d83565b96505b613a2782600a615bef565b613a318289615431565b613a3b9190614d83565b9650505050505050612e14565b620f4240613a318289615431565b80516001600160a01b0316613a6f575f92505050612e14565b60608101518415613aa357816060015185604051602001613a91929190615c08565b60405160208183030381529060405290505b5f80835f01516001600160a01b031684602001518a8a86604051602401613acc93929190615c25565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051613b0a9190615991565b5f60405180830381855afa9150503d805f8114613b42576040519150601f19603f3d011682016040523d82523d5f602084013e613b47565b606091505b509150915081613b5e575f95505050505050612e14565b602001519998505050505050505050565b5f612e148484845f613553565b606081471015613ba1573060405163cd78605960e01b81526004016101269190615150565b5f80856001600160a01b03168486604051613bbc9190615991565b5f6040518083038185875af1925050503d805f8114613bf6576040519150601f19603f3d011682016040523d82523d5f602084013e613bfb565b606091505b5091509150611ba0868383613def565b5f808311613c2457613c1f86868685613e42565b613c31565b613c318686868686613fc3565b90505b95945050505050565b5f805f613c4a87896142b9565b9150915081613c5d575f92505050613c34565b613c698185888861447d565b92505f866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ca8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ccc91906159fb565b60ff1690505f866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d3291906159fb565b60ff1690505f613d428284615add565b9050805f03613d7957613d5683600a615bef565b613d63620f424088615431565b613d6d9190614d83565b95505050505050613c34565b5f811315613d9d57613d8c81600a615bef565b613d969087615431565b9550613dbe565b613da681615417565b613db190600a615bef565b613dbb9087614d83565b95505b613dc983600a615bef565b613dd6620f424088615431565b613de09190614d83565b9b9a5050505050505050505050565b606082613e0457613dff82614581565b6119b4565b8151158015613e1b57506001600160a01b0384163b155b15613e3b5783604051639996b31560e01b81526004016101269190615150565b50806119b4565b5f808590505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613ea2575060408051601f3d908101601f19168201909252613e9f918101906159fb565b60015b613eb0575f92505050612e14565b9050816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015613f0c575060408051601f3d908101601f19168201909252613f0991810190615c59565b60015b613f1a575f92505050612e14565b846001600160501b03165f03613f39575f975050505050505050612e14565b613f458285428e6145ad565b15613f59575f975050505050505050612e14565b8915613f96578815613f7357613f708a600661513d565b99505b613f8f84613f8460ff89168d61513d565b611b4e90600a615bef565b9750613fb4565b613fb1613fa487600a615bfa565b611b4e86620f42406119a9565b97505b50505050505050949350505050565b5f80866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561401f575060408051601f3d908101601f1916820190925261401c918101906159fb565b60015b61402c575f915050613c34565b9050866001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015614088575060408051601f3d908101601f1916820190925261408591810190615c59565b60015b614095575f915050613c34565b846001600160501b03165f036140b3575f9650505050505050613c34565b6140bf8285428e6145ad565b156140d2575f9650505050505050613c34565b6140f360405180606001604052805f81526020015f81526020015f81525090565b6140fd428b611fb6565b60208201528815614116576141138b600661513d565b9a505b80602001518311614161578a156141465761413885613f8460ff8a168e61513d565b975050505050505050613c34565b61413861415488600a615bfa565b611b4e87620f42406119a9565b4260408201525b806020015183111561421d578a156141a0578461418860ff89168d61513d565b61419390600a615bef565b61419d9190614d83565b94505b6141cc6141c46141bd858460400151611fb690919063ffffffff16565b87906119a9565b825190611fab565b81526141d9600187615ca5565b6040820184905295506141ec8d876145f9565b8094508196505050614204838683604001518f6145ad565b15614218575f975050505050505050613c34565b614168565b8a15614249578461423160ff89168d61513d565b61423c90600a615bef565b6142469190614d83565b94505b61426a6141c46141bd83602001518460400151611fb690919063ffffffff16565b81528a1561428557805161427e908b612131565b97506142a9565b6142a68a611b4e6142978a600a615bfa565b8451611b4e90620f42406119a9565b97505b5050505050505095945050505050565b5f808263ffffffff165f036142f55760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610126565b6040805160028082526060820183525f9260208301908036833701905050905083815f8151811061432857614328614cb7565b602002602001019063ffffffff16908163ffffffff16815250505f8160018151811061435657614356614cb7565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90614397908490600401615cc5565b5f60405180830381865afa9250505080156143d357506040513d5f823e601f3d908101601f191682016040526143d09190810190615d7e565b60015b15614475575f825f815181106143eb576143eb614cb7565b60200260200101518360018151811061440657614406614cb7565b60200260200101516144189190615e37565b905061443561442d63ffffffff891683615e64565b60060b614684565b94505f8160060b12801561445a575061445463ffffffff881682615ea0565b60060b15155b1561446d578461446981615ec1565b9550505b600195505050505b509250929050565b5f80614488866146b3565b90506001600160801b036001600160a01b0382161161450d575f6144b56001600160a01b03831680615431565b9050836001600160a01b0316856001600160a01b0316106144ed576144e8600160c01b876001600160801b0316836149c4565b614505565b61450581876001600160801b0316600160c01b6149c4565b9250506132d4565b5f6145266001600160a01b03831680600160401b6149c4565b9050836001600160a01b0316856001600160a01b03161061455e57614559600160801b876001600160801b0316836149c4565b614576565b61457681876001600160801b0316600160801b6149c4565b979650505050505050565b8051156145915780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b5f8415806145ba57508285115b156145c757506001612e14565b816145d28487611fb6565b11156145e057506001612e14565b5f84136145ef57506001612e14565b505f949350505050565b604051639a6fc8f560e01b81526001600160501b03821660048201525f9081906001600160a01b03851690639a6fc8f59060240160a060405180830381865afa925050508015614666575060408051601f3d908101601f1916820190925261466391810190615c59565b60015b61467557505f1990505f612ce9565b50919450909250612ce9915050565b80600281900b8114612bab5760405163327269a760e01b81526018600482015260248101839052604401610126565b5f805f8360020b126146c8578260020b6146cf565b8260020b5f035b9050620d89e88111156146f5576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f0361470a57600160801b61471c565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615614746576ffff97272373d413259a46990580e213a0260801c5b6004821615614765576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614784576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156147a3576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156147c2576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156147e1576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614800576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614820576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614840576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614860576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614880576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156148a0576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156148c0576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156148e0576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614900576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614921576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614941576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614960576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561497d576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561499c57805f198161499857614998614d6f565b0490505b6401000000008106156149b05760016149b2565b5f5b60ff16602082901c0192505050919050565b5f80805f19858709858702925082811083820303915050805f036149f8575f84116149ed575f80fd5b5082900490506119b4565b8084116129da575f80fd5b5080545f8255600202905f5260205f20908101906145aa91905b808211156128945780546001600160c81b03191681555f614a416001830182614a4a565b50600201614a1d565b508054614a5690614e2b565b5f825580601f10614a65575050565b601f0160209004905f5260205f20908101906145aa91905b80821115612894575f8155600101614a7d565b6001600160a01b03811681146145aa575f80fd5b5f8060408385031215614ab5575f80fd5b8235614ac081614a90565b9150602083013560028110614ad3575f80fd5b809150509250929050565b5f8060208385031215614aef575f80fd5b82356001600160401b0380821115614b05575f80fd5b818501915085601f830112614b18575f80fd5b813581811115614b26575f80fd5b8660208260051b8501011115614b3a575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52602160045260245ffd5b60058110614b7057614b70614b4c565b9052565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015614c3b57888303603f19018552815180516001600160a01b03168452878101516001600160e01b0319168885015286810151608090614c0e89870182614b60565b50606091820151918501819052614c2785820183614b74565b968901969450505090860190600101614bc9565b509098975050505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601e908201527f494e563a206e6f4f7574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526026908201527f494e563a206e6f4f7574466c6f7720546f6b656e2062616c616e6365206465636040820152651c99585cd95960d21b606082015260800190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561096757610967614d48565b634e487b7160e01b5f52601260045260245ffd5b5f82614d9157614d91614d6f565b500490565b5f8235607e19833603018112614daa575f80fd5b9190910192915050565b6001600160e01b0319811681146145aa575f80fd5b600581106145aa575f80fd5b5f808335601e19843603018112614dea575f80fd5b8301803591506001600160401b03821115614e03575f80fd5b602001915036819003821315612ce9575f80fd5b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680614e3f57607f821691505b60208210810361084457634e487b7160e01b5f52602260045260245ffd5b601f82111561167457805f5260205f20601f840160051c81016020851015614e825750805b601f840160051c820191505b81811015612e96575f8155600101614e8e565b5f19600383901b1c191660019190911b1790565b6001600160401b03831115614ecc57614ecc614e17565b614ee083614eda8354614e2b565b83614e5d565b5f601f841160018114614f0c575f8515614efa5750838201355b614f048682614ea1565b845550612e96565b5f83815260208120601f198716915b82811015614f3b5786850135825560209485019460019092019101614f1b565b5086821015614f57575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135614f7481614a90565b81546001600160a01b031981166001600160a01b039290921691821783556020840135614fa081614db4565b63ffffffff60a01b604091821c166001600160c01b0319831684178117855590850135614fcc81614dc9565b60058110614fdc57614fdc614b4c565b6001600160c81b0319929092169092179190911760c09190911b60ff60c01b1617815561500c6060830183614dd5565b611c69818360018601614eb5565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60208082528181018390525f906040808401600586901b8501820187855b88811015614c3b57878303603f190184528135368b9003607e19018112615085575f80fd5b8a016080813561509481614a90565b6001600160a01b03168552818801356150ac81614db4565b6001600160e01b03191685890152818701356150c781614dc9565b6150d388870182614b60565b50606080830135601e198436030181126150eb575f80fd5b9092018881019290356001600160401b03811115615107575f80fd5b803603841315615115575f80fd5b8282880152615127838801828661501a565b978a019796505050928701925050600101615060565b8082018082111561096757610967614d48565b6001600160a01b0391909116815260200190565b5f60208284031215615174575f80fd5b5051919050565b6020808252600f908201526e29b2b0b9b7b71d102830bab9b2b21760891b604082015260600190565b6020808252601d908201527f536561736f6e3a205374696c6c2063757272656e7420536561736f6e2e000000604082015260600190565b5f6040820163ffffffff851683526020604060208501528185518084526060860191506020870193505f5b8181101561522b5784516001600160a01b031683529383019391830191600101615206565b5090979650505050505050565b6001600160801b0381811683821601908082111561525857615258614d48565b5092915050565b5f6001820161527057615270614d48565b5060010190565b63ffffffff81811683821601908082111561525857615258614d48565b63ffffffff82811682821603908082111561525857615258614d48565b60405160e081016001600160401b03811182821017156152d3576152d3614e17565b60405290565b604051601f8201601f191681016001600160401b038111828210171561530157615301614e17565b604052919050565b5f60208284031215615319575f80fd5b604051602081018181106001600160401b038211171561533b5761533b614e17565b6040529151825250919050565b80518015158114612bab575f80fd5b5f8082840361010081121561536a575f80fd5b8351925060e0601f198201121561537f575f80fd5b506153886152b1565b6153958560208601615309565b81526153a48560408601615309565b60208201526153b68560608601615309565b604082015260808401516153c981614a90565b60608201526153da60a08501615348565b608082015260c084015160a082015260e084015160c0820152809150509250929050565b6001600160a01b03929092168252602082015260400190565b5f600160ff1b820161542b5761542b614d48565b505f0390565b808202811582820484141761096757610967614d48565b5f6001600160401b0382111561546057615460614e17565b5060051b60200190565b5f602080838503121561547b575f80fd5b82516001600160401b03811115615490575f80fd5b8301601f810185136154a0575f80fd5b80516154b36154ae82615448565b6152d9565b81815260059190911b820183019083810190878311156154d1575f80fd5b928401925b828410156145765783516154e981614a90565b825292840192908401906154d6565b8082018281125f83128015821682158216171561551757615517614d48565b505092915050565b5f8261552d5761552d614d6f565b500690565b5f8160030b637fffffff19810361554b5761554b614d48565b5f0392915050565b600382810b9082900b03637fffffff198112637fffffff8213171561096757610967614d48565b5f8160090b697fffffffffffffffffff19810361554b5761554b614d48565b81516001600160401b038111156155b2576155b2614e17565b6155c6816155c08454614e2b565b84614e5d565b602080601f8311600181146155f4575f84156155e25750858301515b6155ec8582614ea1565b86555061564b565b5f85815260208120601f198616915b8281101561562257888601518255948401946001909101908401615603565b508582101561563f57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6002841061566457615664614b4c565b8382526020604060208401525f845461567c81614e2b565b806040870152606060018084165f811461569d57600181146156b9576156e6565b60ff19851660608a0152606084151560051b8a010195506156e6565b895f5260205f205f5b858110156156dd5781548b82018601529083019088016156c2565b8a016060019650505b50939998505050505050505050565b5f82601f830112615704575f80fd5b81516001600160401b0381111561571d5761571d614e17565b615730601f8201601f19166020016152d9565b818152846020838601011115615744575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60408284031215615770575f80fd5b604051604081016001600160401b03828210818311171561579357615793614e17565b81604052829350845191506157a782614a90565b908252602084015190808211156157bc575f80fd5b506157c9858286016156f5565b6020830152505092915050565b5f60208083850312156157e7575f80fd5b82516001600160401b03808211156157fd575f80fd5b818501915085601f830112615810575f80fd5b815161581e6154ae82615448565b81815260059190911b8301840190848101908883111561583c575f80fd5b8585015b8381101561587257805185811115615856575f80fd5b6158648b89838a0101615760565b845250918601918601615840565b5098975050505050505050565b6001600160a01b03831681526040602082018190525f90612e1490830184614b74565b5f60208083850312156158b3575f80fd5b82516001600160401b038111156158c8575f80fd5b8301601f810185136158d8575f80fd5b80516158e66154ae82615448565b81815260059190911b82018301908381019087831115615904575f80fd5b928401925b8284101561457657835182529284019290840190615909565b6001600160801b0382811682821603908082111561525857615258614d48565b606081525f6159546060830186614b74565b82810360208401526159668186614b74565b90508281036040840152611ba08185614b74565b5f81518060208401855e5f93019283525090919050565b5f6119b4828461597a565b5f80604083850312156159ad575f80fd5b82516001600160401b03808211156159c3575f80fd5b6159cf868387016156f5565b935060208501519150808211156159e4575f80fd5b506159f1858286016156f5565b9150509250929050565b5f60208284031215615a0b575f80fd5b815160ff811681146119b4575f80fd5b5f60208284031215615a2b575f80fd5b81516001600160401b03811115615a40575f80fd5b612e1484828501615760565b5f815180845260208085019450602084015f5b83811015615a7b57815187529582019590820190600101615a5f565b509495945050505050565b608081525f615a986080830187615a4c565b8560208401528281036040840152615ab08186615a4c565b905082810360608401526145768185614b74565b5f60208284031215615ad4575f80fd5b6119b482615348565b8181035f83128015838313168383128216171561525857615258614d48565b5f60208284031215615b0c575f80fd5b81516119b481614a90565b600181815b8085111561447557815f1904821115615b3757615b37614d48565b80851615615b4457918102915b93841c9390800290615b1c565b5f82615b5f57506001610967565b81615b6b57505f610967565b8160018114615b815760028114615b8b57615ba7565b6001915050610967565b60ff841115615b9c57615b9c614d48565b50506001821b610967565b5060208310610133831016604e8410600b8410161715615bca575081810a610967565b615bd48383615b17565b805f1904821115615be757615be7614d48565b029392505050565b5f6119b48383615b51565b5f6119b460ff841683615b51565b5f615c13828561597a565b92151560f81b83525050600101919050565b838152826020820152606060408201525f613c346060830184614b74565b80516001600160501b0381168114612bab575f80fd5b5f805f805f60a08688031215615c6d575f80fd5b615c7686615c43565b9450602086015193506040860151925060608601519150615c9960808701615c43565b90509295509295909350565b6001600160501b0382811682821603908082111561525857615258614d48565b602080825282518282018190525f9190848201906040850190845b81811015615d0257835163ffffffff1683529284019291840191600101615ce0565b50909695505050505050565b5f82601f830112615d1d575f80fd5b81516020615d2d6154ae83615448565b8083825260208201915060208460051b870101935086841115615d4e575f80fd5b602086015b84811015615d73578051615d6681614a90565b8352918301918301615d53565b509695505050505050565b5f8060408385031215615d8f575f80fd5b82516001600160401b0380821115615da5575f80fd5b818501915085601f830112615db8575f80fd5b81516020615dc86154ae83615448565b82815260059290921b84018101918181019089841115615de6575f80fd5b948201945b83861015615e125785518060060b8114615e03575f80fd5b82529482019490820190615deb565b91880151919650909350505080821115615e2a575f80fd5b506159f185828601615d0e565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561096757610967614d48565b5f8160060b8360060b80615e7a57615e7a614d6f565b667fffffffffffff1982145f1982141615615e9757615e97614d48565b90059392505050565b5f8260060b80615eb257615eb2614d6f565b808360060b0791505092915050565b5f8160020b627fffff198103615ed957615ed9614d48565b5f19019291505056fea2646970667358221220f4022568bdbd7ff354c1bf785415609092b6ba8dc7669c9aab2c161ed6a6d2a864736f6c63430008190033