0 txs
0 calls
constructor
No constructor.
functions
convert
payablefunction convert(bytes convertData, int96[] stems, uint256[] amounts) payable returns (int96 toStem, uint256 fromAmount, uint256 toAmount, uint256 fromBdv, uint256 toBdv)
events
Convert
event Convert(address indexed account, address fromToken, address toToken, uint256 fromAmount, uint256 toAmount)
ConvertDownPenalty
event ConvertDownPenalty(address account, uint256 grownStalkLost, uint256 grownStalkKept)
FarmerGerminatingStalkBalanceChanged
event FarmerGerminatingStalkBalanceChanged(address indexed account, int256 delta, uint8 germ)
RemoveDeposits
event RemoveDeposits(address indexed account, address indexed token, int96[] stems, uint256[] amounts, uint256 amount, uint256[] bdvs)
StalkBalanceChanged
event StalkBalanceChanged(address indexed account, int256 delta, int256 deltaRoots)
TotalGerminatingBalanceChanged
event TotalGerminatingBalanceChanged(uint256 germinationSeason, address indexed token, int256 deltaAmount, int256 deltaBdv)
TotalGerminatingStalkChanged
event TotalGerminatingStalkChanged(uint256 germinationSeason, int256 deltaGerminatingStalk)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
errors
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
T
error T()
creation bytecode
0x6080604052348015600e575f80fd5b50615b868061001c5f395ff3fe60806040526004361061001d575f3560e01c8063b362a6e814610021575b5f80fd5b61003461002f366004614bf9565b610065565b60408051600b9690960b86526020860194909452928401919091526060830152608082015260a00160405180910390f35b5f80808080808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156100b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100d99190614ca8565b600354909150600119016101345760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260035560405163fab1aacf60e01b81525f9073a4a2d1e394faac3e60297a55cdceeb38c0b6ca189063fab1aacf90610174908e908e90600401614ce7565b5f60405180830381865af415801561018e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101b59190810190614def565b90505f7371e8ab0a025c0b96d64c34759880e6ba2ba0baa06395d3b4de8d8d6040518363ffffffff1660e01b81526004016101f1929190614ce7565b60e060405180830381865af415801561020c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102309190614ec0565b60808101519091506001600160a01b031661025c5761024d6107e2565b6001600160a01b031660808201525b8060a00151156102e55789516001148015610278575088516001145b6102e55760405162461bcd60e51b815260206004820152603860248201527f436f6e766572743a204465637265617365424456206f6e6c7920737570706f726044820152773a39903ab83230ba34b7339037b732903232b837b9b4ba1760411b606482015260840161012b565b5f8160400151116103385760405162461bcd60e51b815260206004820152601a60248201527f436f6e766572743a2046726f6d20616d6f756e7420697320302e000000000000604482015260640161012b565b60808101516020820151604051633594e5ff60e11b81526001600160a01b0392831660048201529116602482015273efa4e6492966228a7af3d5d9045bd9c9e5dc72bf90636b29cbfe906044015f6040518083038186803b15801561039b575f80fd5b505af41580156103ad573d5f803e3d5ffd5b50505050805f01516001600160a01b031681602001516001600160a01b0316146104485760808101518151604051633594e5ff60e11b81526001600160a01b0392831660048201529116602482015273efa4e6492966228a7af3d5d9045bd9c9e5dc72bf90636b29cbfe906044015f6040518083038186803b158015610431575f80fd5b505af4158015610443573d5f803e3d5ffd5b505050505b5f61046282602001518c8c8560400151866080015161082d565b855f018194508299508381525050505073a4a2d1e394faac3e60297a55cdceeb38c0b6ca18634b88fa99848f8f8660200151875f01518c6040518763ffffffff1660e01b81526004016104ba96959493929190614fa1565b5f6040518083038186803b1580156104d0575f80fd5b505af41580156104e2573d5f803e3d5ffd5b505050505f6104f8835f01518460600151610dbb565b90508681118061050957508260a001515b6105135786610515565b805b60c084015190965015156001036105385782518451610535919088610edb565b84525b60015483516001600160a01b0390811691161480159061056a575060015460208401516001600160a01b039081169116145b156105d757825184515f91610580918990610f22565b8187526080860151604080516001600160a01b0390921682526020820183905281019290925291507ff34508b67b67a25d12587dc11db6c27136db71fe3659d4edad5de0e726dbf2589060600160405180910390a1505b6105f3835f0151846060015188875f0151868860800151611053565b6040848101516060808701516080808901516020808b01518b5188516001600160a01b03928316815290821692810192909252968101869052938401839052959f50929d509b5091909216917f3f7117900f070f33613da64255c3e8a5b791ff071197653712e53fde9c3dab3d910160405180910390a250506001600381905554604080516318160ddd60e01b815290518594506001600160a01b0390921692506318160ddd9160048083019260209291908290030181865afa1580156106bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e09190614ca8565b146107235760405162461bcd60e51b81526020600482015260136024820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604482015260640161012b565b505f61072d6111c9565b90505f8061073a836112f8565b915091505f5b83518110156107d35782818151811061075b5761075b6150a2565b6020026020010151828281518110610775576107756150a2565b602002602001015110156107cb5760405162461bcd60e51b815260206004820152601f60248201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604482015260640161012b565b600101610740565b50505050945094509450945094565b5f6108147f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b0382161161082a5750335b90565b5f80808086518851146108945760405162461bcd60e51b815260206004820152602960248201527f436f6e766572743a207374656d732c20616d6f756e7473206172652064696666604482015268103632b733ba34399760b91b606482015260840161012b565b61089c614a2b565b5f808a516001600160401b038111156108b7576108b7614a72565b6040519080825280602002602001820160405280156108e0578160200160208202803683370190505b5060208401528a516001600160401b038111156108ff576108ff614a72565b604051908082528060200260200182016040528015610928578160200160208202803683370190505b5060408401528a516001600160401b0381111561094757610947614a72565b604051908082528060200260200182016040528015610970578160200160208202803683370190505b50606084015261097f8c6116f8565b90505f61098b8d611721565b90505b8b518310801561099f57508351518a115b15610c08578b83815181106109b6576109b66150a2565b6020026020010151600b0b815f0151600b0b136109df57826109d7816150ca565b93505061098e565b89610a098c85815181106109f5576109f56150a2565b60209081029190910101518651519061175c565b10610a3b57835151610a1c908b90611770565b8b8481518110610a2e57610a2e6150a2565b6020026020010181815250505b610a79898e8e8681518110610a5257610a526150a2565b60200260200101518e8781518110610a6c57610a6c6150a2565b602002602001015161177b565b84602001518481518110610a8f57610a8f6150a2565b602002602001018181525050610ae88c8481518110610ab057610ab06150a2565b60200260200101518260200151610ae387602001518781518110610ad657610ad66150a2565b6020026020010151611ac0565b611af7565b84604001518481518110610afe57610afe6150a2565b602002602001018181525050610b4184604001518481518110610b2357610b236150a2565b6020026020010151855f01516020015161175c90919063ffffffff16565b8451602001528a51610b73908c9085908110610b5f57610b5f6150a2565b60209081029190910101518551519061175c565b84515260208401518051610bb0919085908110610b9257610b926150a2565b6020026020010151855f01516040015161175c90919063ffffffff16565b8451604001528b51610bdd908e908e9086908110610bd057610bd06150a2565b6020026020010151611b2c565b84606001518481518110610bf357610bf36150a2565b6020908102919091010152826109d7816150ca565b8b51831015610c3b575f8b8481518110610c2457610c246150a2565b602002602001018181525050826001019250610c08565b8c6001600160a01b0316896001600160a01b03167f6008478fd0513693018a0ac8771ada053137941c0d833295a27629af7a3ab56b8e8e885f01515f01518960200151604051610c8e94939291906150e2565b60405180910390a35f6001600160a01b0316896001600160a01b03168a6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87606001518f604051610ce992919061514d565b60405180910390a4508251518914610d4f5760405162461bcd60e51b815260206004820152602360248201527f436f6e766572743a204e6f7420656e6f75676820746f6b656e732072656d6f7660448201526232b21760e91b606482015260840161012b565b82518051604090910151610d64918e91611b4e565b5f610d9789610d92610d8685885f015160400151611c3290919063ffffffff16565b8751602001519061175c565b611c3d565b94516020810151604090910151909f909e50949c50939a5050505050505050505050565b6001600160a01b0382165f90815260c86020526040812054819060e01b6001600160e01b031916610e2e5760405162461bcd60e51b815260206004820152601b60248201527f53696c6f3a20546f6b656e206e6f742077686974656c69737465640000000000604482015260640161012b565b6001600160a01b0384165f90815260c88201602052604081205481903090610e66908890600160f81b810460f81b9060e01b89611e16565b604051610e739190615188565b5f60405180830381855afa9150503d805f8114610eab576040519150601f19603f3d011682016040523d82523d5f602084013e610eb0565b606091505b509150915081610ece5780515f03610ec6575f80fd5b805181602001fd5b6020015195945050505050565b5f80610ee8858585611ef1565b915060029050816002811115610f0057610f00615193565b14610f1657610f0f8584611f41565b9150610f1a565b8391505b509392505050565b5f80805f610f308787611f41565b905080851015610f4757845f93509350505061104b565b610f5087611f59565b15610f6257845f93509350505061104b565b60015f9081526101488301602052604081208054610f7f906151a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610fab906151a7565b8015610ff65780601f10610fcd57610100808354040283529160200191610ff6565b820191905f5260205f20905b815481529060010190602001808311610fd957829003601f168201915b505050505080602001905181019061100e91906151d9565b5090506110396110298783670de0b6b3a7640000600161219d565b61103390886151fb565b836121f8565b945061104585876151fb565b93505050505b935093915050565b5f808511801561106257505f86115b6110ae5760405162461bcd60e51b815260206004820152601c60248201527f436f6e766572743a20424456206f7220616d6f756e7420697320302e00000000604482015260640161012b565b5f6110ba888688611ef1565b909250905060028160028111156110d3576110d3615193565b0361111e576110e388888861220d565b61110983611104876110fe6110f78d6116f8565b8b90611c32565b9061175c565b6122b6565b83156111195761111983856123da565b611151565b61112a88888884612435565b6111478361114161113a8b6116f8565b8990611c32565b8361268c565b61115183866122b6565b60405163720d6a9760e11b815273f2a0e7fb0e9b1189b14274418e4ac78ae449b4ed9063e41ad52e906111929086908c9087908d908d905f9060040161520e565b5f6040518083038186803b1580156111a8575f80fd5b505af41580156111ba573d5f803e3d5ffd5b50505050509695505050505050565b60605f6111d4612871565b90505f6111df612972565b90505f815183516111f0919061525f565b9050806001600160401b0381111561120a5761120a614a72565b604051908082528060200260200182016040528015611233578160200160208202803683370190505b5093505f5b835181101561128d57838181518110611253576112536150a2565b602002602001015185828151811061126d5761126d6150a2565b6001600160a01b0390921660209283029190910190910152600101611238565b505f5b82518110156112f1578281815181106112ab576112ab6150a2565b6020026020010151858286516112c1919061525f565b815181106112d1576112d16150a2565b6001600160a01b0390921660209283029190910190910152600101611290565b5050505090565b6060805f83516001600160401b0381111561131557611315614a72565b60405190808252806020026020018201604052801561133e578160200160208202803683370190505b50925083516001600160401b0381111561135a5761135a614a72565b604051908082528060200260200182016040528015611383578160200160208202803683370190505b5091505f5b84518110156116f15781600101601b015f8683815181106113ab576113ab6150a2565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f8784815181106113f8576113f86150a2565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f88858151811061144d5761144d6150a2565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a9087908110611497576114976150a2565b6020908102919091018101516001600160a01b031682528101919091526040015f20546114cd91906001600160801b0316615272565b6114d79190615272565b6001600160801b03166114ea919061525f565b8482815181106114fc576114fc6150a2565b6020908102919091010152600182015485516001600160a01b039091169086908390811061152c5761152c6150a2565b60200260200101516001600160a01b0316036115d857816001016008015484828151811061155c5761155c6150a2565b60200260200101818151611570919061525f565b9052505f5b60088301548110156115d6575f818152602080850190526040902060018101546002909101546115a591906151fb565b8583815181106115b7576115b76150a2565b602002602001018181516115cb919061525f565b905250600101611575565b505b81600101610101015f015f8683815181106115f5576115f56150a2565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205484828151811061162f5761162f6150a2565b60200260200101818151611643919061525f565b905250845185908290811061165a5761165a6150a2565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156116a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116cc9190614ca8565b8382815181106116de576116de6150a2565b6020908102919091010152600101611388565b5050915091565b6001600160a01b03165f90815260c86020526040902054600160481b900465ffffffffffff1690565b604080518082019091525f808252602082015261173d826129e4565b600b0b60208201819052611752908390612aa1565b600b0b8152919050565b5f611767828461525f565b90505b92915050565b5f61176782846151fb565b5f805f6117888686611b2c565b6001600160a01b0388165f908152602084815260408083208484526013019091529020546001600160801b03600160801b82048116955091925016808511156118135760405162461bcd60e51b815260206004820152601c60248201527f53696c6f3a2043726174652062616c616e636520746f6f206c6f772e00000000604482015260640161012b565b808510156119ec575f61183f60016110fe84611839836118338c8c611c32565b90611770565b90612abb565b90505f61184c8683611770565b90505f6118598489611770565b905080865f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f206013015f8781526020019081526020015f205f015f6101000a8154816001600160801b0302191690836001600160801b0316021790555081865f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f206013015f8781526020019081526020015f205f0160106101000a8154816001600160801b0302191690836001600160801b0316021790555061198d83875f015f8e6001600160a01b03166001600160a01b031681526020019081526020015f206018015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f01600c9054906101000a90046001600160801b03166001600160801b0316612ac690919063ffffffff16565b6001600160a01b03808d165f90815260209889526040808220928e168252601890920190985290962080546001600160801b0397909716600160601b02600160601b600160e01b031990971696909617909555509350611ab892505050565b8015611a21576001600160a01b0388165f90815260208481526040808320858452601301909152812055611a21888884612ad1565b6001600160a01b038881165f90815260208581526040808320938b168352601890930190522054611a6290600160601b90046001600160801b031685612ac6565b6001600160a01b03808a165f90815260209586526040808220928b168252601890920190955290932080546001600160801b0394909416600160601b02600160601b600160e01b03199094169390931790925550505b949350505050565b5f6001600160801b03821115611af3576040516306dfcc6560e41b8152608060048201526024810183905260440161012b565b5090565b5f611b226001600160801b038316611b13600b86900b87612bce565b6001600160601b031690611c32565b90505b9392505050565b6001600160601b031660609190911b6bffffffffffffffffffffffff19161790565b5f611b84611b5b84611ac0565b6001600160a01b0386165f90815260c7840160205260409020546001600160801b031690612ac6565b6001600160a01b0385165f90815260c783016020526040902080546001600160801b0319166001600160801b0392909216919091179055611bf7611bc783611ac0565b6001600160a01b0386165f90815260c784016020526040902054600160801b90046001600160801b031690612ac6565b6001600160a01b039094165f90815260c79091016020526040902080546001600160801b03948516600160801b029416939093179092555050565b5f6117678284615299565b5f8080835f03611c53575f809250925050611e0f565b60c481015460c5820154611c6c91906118399087611c32565b6001600160a01b0386165f90815260208390526040902054909350831115611ca9576001600160a01b0385165f9081526020829052604090205492505b60c4810154611cb89085611770565b60c48201556001600160a01b0385165f90815260208290526040902060010154611ce29085611770565b6001600160a01b0386165f9081526020839052604090206001015560c5810154611d0c9084611770565b60c58201556001600160a01b0385165f90815260208290526040902054611d339084611770565b6001600160a01b0386165f908152602083905260409020818155602c01541115611db8576001600160a01b0385165f9081526020829052604081208054602c90910154611d7f91611770565b6001600160a01b0387165f9081526020849052604090208054602c9091015560ed830154909150611db09082611770565b60ed83015591505b6001600160a01b0385167fb2d61db64b8ad7535308d2111c78934bc32baf9b7cd3a2e58cba25730003cd58611dec866152b0565b611df5866152b0565b6040805192835260208301919091520160405180910390a2505b9250929050565b60606001600160f81b031984165f03611e76578282604051602401611e3d91815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050611ab8565b6001600160f81b03198416600160f81b03611eae576040516001600160a01b0386166024820152604481018390528390606401611e3d565b60405162461bcd60e51b815260206004820152601860248201527753696c6f3a20496e76616c696420656e636f64655479706560401b604482015260640161012b565b5f805f611efd86611721565b9050611f2a611f1c611f17611f128888612abb565b612bd9565b612c05565b6020830151600b0b90612bce565b9250611f368382612c39565b915050935093915050565b5f80611f4c84612c9a565b9050611ab8848285612cb1565b5f805f805f611fc9866001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611f9c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611fc391908101906152ca565b5f612cd9565b9250925092508061201c5760405162461bcd60e51b815260206004820152601a60248201527f436f6e766572743a20555344204f7261636c65206661696c6564000000000000604482015260640161012b565b60fd8401548351849084908110612035576120356150a2565b6020026020010151620f424061204b9190615299565b6120559190615367565b838381518110612067576120676150a2565b6020026020010181815250505f61207d87612f9d565b90505f876001600160a01b03166310dd08306040518163ffffffff1660e01b81526004015f60405180830381865afa1580156120bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120e29190810190615424565b90505f815f01516001600160a01b03166380be8c9884878986602001516040518563ffffffff1660e01b815260040161211e9493929190615483565b602060405180830381865afa158015612139573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215d9190614ca8565b905080838681518110612172576121726150a2565b6020026020010151101561218f5750600198975050505050505050565b505f98975050505050505050565b5f806121aa8686866130d0565b905060018360028111156121c0576121c0615193565b1480156121dc57505f84806121d7576121d7615353565b868809115b156121ef576121ec60018261525f565b90505b95945050505050565b5f8183116122065781611767565b5090919050565b5f61224361221a84611ac0565b6001600160a01b0386165f90815260c7840160205260409020546001600160801b031690613198565b6001600160a01b0385165f90815260c783016020526040902080546001600160801b0319166001600160801b0392909216919091179055611bf761228683611ac0565b6001600160a01b0386165f90815260c784016020526040902054600160801b90046001600160801b031690613198565b60c5545f90819081036122d9576122d28364e8d4a51000611c32565b90506122f5565b60c482015460c58301546122f291906118399086611c32565b90505b60c4820154612304908461175c565b60c48301556001600160a01b0384165f9081526020839052604090206001015461232e908461175c565b6001600160a01b0385165f9081526020849052604090206001015560c5820154612358908261175c565b60c58301556001600160a01b0384165f9081526020839052604090205461237f908261175c565b6001600160a01b0385165f818152602085815260409182902093909355805186815292830184905290917fb2d61db64b8ad7535308d2111c78934bc32baf9b7cd3a2e58cba25730003cd58910160405180910390a250505050565b6001600160a01b0382165f908152602081905260408120602c015461240090839061525f565b6001600160a01b0384165f908152602083905260409020602c015560ed81015461242b90839061525f565b60ed909101555050565b5f8082600281111561244957612449615193565b141580156124695750600182600281111561246657612466615193565b14155b156124b05760405162461bcd60e51b8152602060048201526017602482015276696e76616c6964206765726d696e6174696f6e5369646560481b604482015260640161012b565b6124b984611ac0565b60ca82015f8460028111156124d0576124d0615193565b60028111156124e1576124e1615193565b815260208082019290925260409081015f9081206001600160a01b038a1682529092528120805490919061251f9084906001600160801b0316615272565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061254c83611ac0565b60ca82015f84600281111561256357612563615193565b600281111561257457612574615193565b815260208082019290925260409081015f9081206001600160a01b038a168252909252902080546010906125b9908490600160801b90046001600160801b0316615272565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550846001600160a01b03167f99f70d4286db852579c7e4c4e3d46125005d363d480494fec6524240ade1e00e83600281111561261a5761261a615193565b6126226131a3565b600281111561263357612633615193565b146126545760d483015461264f9060019063ffffffff166154c1565b612660565b60d483015463ffffffff165b6040805163ffffffff909216825260208201889052810186905260600160405180910390a25050505050565b6001600160a01b0383165f9081526020819052604081208390601a01828460028111156126bb576126bb615193565b60028111156126cc576126cc615193565b815260208101919091526040015f90812080549091906126f69084906001600160801b0316615272565b82546001600160801b039182166101009390930a92830291909202199091161790555060d481015463ffffffff1682600281111561273657612736615193565b61273e6131a3565b600281111561274f5761274f615193565b0361278e5763ffffffff81165f90815260cb83016020526040812080546001600160801b038716929061278390849061525f565b909155506127d79050565b6001600160801b03841660cb83015f6127a86001856154c1565b63ffffffff1663ffffffff1681526020019081526020015f205f015f8282546127d1919061525f565b90915550505b846001600160a01b03167f9c0c70ad39ba6959d6008b9bc651f15ce23613cc1c5ebb4c6ffba0e53a1ea705856001600160801b03168560405161281b9291906154de565b60405180910390a26040805163ffffffff831681526001600160801b03861660208201527f3dd97efd4911891b98b28287922dd7351872382b548b549517e183ee6544c743910160405180910390a15050505050565b60c9546060905f9081816001600160401b0381111561289257612892614a72565b6040519080825280602002602001820160405280156128bb578160200160208202803683370190505b5093505f5b828110156129685760c984018054829081106128de576128de6150a2565b5f91825260209091200154600160a01b900460ff16156129605760c9840180548290811061290e5761290e6150a2565b5f918252602090912001546001600160a01b0316858361292d816150ca565b94508151811061293f5761293f6150a2565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016128c0565b5080845250505090565b60605f61297d6131bb565b90505f5b81518110156129de576129ac82828151811061299f5761299f6150a2565b60200260200101516132b2565b8282815181106129be576129be6150a2565b6001600160a01b0390921660209283029190910190910152600101612981565b50919050565b6001600160a01b0381165f90815260c860205260408120548190612a7390612a3990612a1c90600160781b900463ffffffff16613342565b60d4840154612a309063ffffffff16613342565b600b0b90612bce565b6001600160a01b0385165f90815260c884016020526040902054612a6a90600160201b900464ffffffffff16613342565b600b0b9061334f565b6001600160a01b0384165f90815260c883016020526040902054611b259190600160981b9004600b0b615502565b5f61176782612aaf8561335a565b64ffffffffff16612bce565b5f6117678284615367565b5f611767828461552f565b6001600160a01b038381165f90815260208181526040808320938616835260149093018152828220848352600180820190925292822054835492939290918391612b1b91906151fb565b81548110612b2b57612b2b6150a2565b905f5260205f200154825f018281548110612b4857612b486150a2565b905f5260205f20018190555080826001015f845f018481548110612b6e57612b6e6150a2565b905f5260205f20015481526020019081526020015f20819055505f19826001015f8681526020019081526020015f2081905550815f01805480612bb357612bb361554f565b600190038181905f5260205f20015f90559055505050505050565b5f6117678284615563565b5f6001600160ff1b03821115611af35760405163123baf0360e11b81526004810183905260240161012b565b80600b81900b8114612c345760405163327269a760e01b8152606060048201526024810183905260440161012b565b919050565b5f815f0151600b0b83600b0b1215612c535750600261176a565b8160200151600b0b83600b0b03612c8057612c6c61345d565b612c77576001612c79565b5f5b905061176a565b612c8861345d565b612c92575f612c79565b50600161176a565b5f6001612ca683611721565b5161176a9190615563565b5f80612cbc856129e4565b90506121ef83612cd0600b84900b87612bce565b600b0b90611c32565b60605f80806001915085516001600160401b03811115612cfb57612cfb614a72565b604051908082528060200260200182016040528015612d24578160200160208202803683370190505b5060018201549094505f1993505f906001600160a01b0316815b8851811015612e1157816001600160a01b0316898281518110612d6357612d636150a2565b60200260200101516001600160a01b031603612d8157809550612e09565b6008898281518110612d9557612d956150a2565b60200260200101516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dfc9190615590565b60ff1611612e0957600192505b600101612d3e565b505f5b8851811015612f4e57816001600160a01b0316898281518110612e3957612e396150a2565b60200260200101516001600160a01b031603612e94578215612e7e5764e8d4a51000878281518110612e6d57612e6d6150a2565b602002602001018181525050612f46565b620f4240878281518110612e6d57612e6d6150a2565b8215612ee057612ebd898281518110612eaf57612eaf6150a2565b602002602001015189613479565b878281518110612ecf57612ecf6150a2565b602002602001018181525050612f22565b612f03898281518110612ef557612ef56150a2565b6020026020010151896134e9565b878281518110612f1557612f156150a2565b6020026020010181815250505b868181518110612f3457612f346150a2565b60200260200101515f03612f46575f94505b600101612e14565b505f198503612f935760405162461bcd60e51b81526020600482015260116024820152702132b0b7103737ba1034b7102bb2b6361760791b604482015260640161012b565b5050509250925092565b60605f826001600160a01b031663a1d89d966040518163ffffffff1660e01b81526004015f60405180830381865afa158015612fdb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261300291908101906155b0565b90505f815f81518110613017576130176150a2565b60200260200101515f01519050806001600160a01b0316636de13cba85845f81518110613046576130466150a2565b6020026020010151602001516040518363ffffffff1660e01b815260040161306f929190615659565b5f60405180830381865afa9250505080156130ab57506040513d5f823e601f3d908101601f191682016040526130a8919081019061567c565b60015b611ab857604080515f80825260208201909252905b50949350505050565b5050919050565b5f80805f19858709858702925082811083820303915050805f03613107578382816130fd576130fd615353565b0492505050611b25565b83811061313157604051631dcf306360e21b8152600481018290526024810185905260440161012b565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6117678284615272565b5f6131ac61345d565b6131b65750600190565b505f90565b60c9546060905f9081816001600160401b038111156131dc576131dc614a72565b604051908082528060200260200182016040528015613205578160200160208202803683370190505b5093505f5b828110156129685760c98401805482908110613228576132286150a2565b5f91825260209091200154600160b81b900460ff16156132aa5760c98401805482908110613258576132586150a2565b5f918252602090912001546001600160a01b03168583613277816150ca565b945081518110613289576132896150a2565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161320a565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156132ef573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261331691908101906152ca565b90508061332282613557565b81518110613332576133326150a2565b6020026020010151915050919050565b5f61176a611f1783612bd9565b5f61176782846156ad565b60d4546001600160a01b0382165f90815260c860205260408120549091829163ffffffff918216600160781b90910490911610156133c1576001600160a01b0383165f90815260c882016020526040902054600160201b900464ffffffffff1691506129de565b6001600160a01b0383165f90815260c88201602052604081206001015460040b908112613422576001600160a01b0384165f90815260c88301602052604090205461341b908290600160201b900464ffffffffff166156cc565b92506130c9565b61342b816156ea565b6001600160a01b0385165f90815260c884016020526040902054611ab89190600160201b900464ffffffffff1661570c565b60d4545f9081906134739063ffffffff166135e8565b91505090565b5f61176783846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134de9190615590565b60ff16846001613617565b5f61176783846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561352a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061354e9190615590565b60ff1684613c3c565b5f805b82518210156135a857828281518110613575576135756150a2565b602090810291909101015160018201546001600160a01b0390811691161461359d5750919050565b81600101915061355a565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b604482015260640161012b565b5f6135fe63ffffffff80841690600290613c4916565b63ffffffff161561361057600161176a565b5f92915050565b6001600160a01b038481165f908152602260209081526040808320815160808101835281549586168152600160a01b860460e01b6001600160e01b03191693810193909352600160c01b90940460f81b6001600160f81b03191690820152600183018054929384938493926060840191613690906151a7565b80601f01602080910402602001604051908101604052809291908181526020018280546136bc906151a7565b80156137075780601f106136de57610100808354040283529160200191613707565b820191905f5260205f20905b8154815290600101906020018083116136ea57829003601f168201915b5050509190925250505060408101519091506001600160f81b03199081160161375a57613751815f015182606001518060200190518101906137499190614ca8565b888888613c54565b92505050611ab8565b60408101516001600160f81b031916607f60f91b01613b23575f815f01516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137d7919061572a565b9050876001600160a01b0316816001600160a01b03160361385857815f01516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613831573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613855919061572a565b90505b6138f08615613867578661386b565b6103845b83518a848b15613885576138808c600a61581d565b613c7a565b8c6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138e59190615590565b61388090600a615828565b6001600160a01b038281165f9081526022860160209081526040808320815160808101835281549586168152600160a01b860460e01b6001600160e01b03191693810193909352600160c01b90940460f81b6001600160f81b031916908201526001830180549498509193909291606084019161396c906151a7565b80601f0160208091040260200160405190810160405280929190818152602001828054613998906151a7565b80156139e35780601f106139ba576101008083540402835291602001916139e3565b820191905f5260205f20905b8154815290600101906020018083116139c657829003601f168201915b50505050508152505090505f826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a4f9190615590565b60ff1690505f613a89835f01518460600151806020019051810190613a749190614ca8565b8c15613a805784613a82565b8c5b8c5f613c54565b90508915613b15578715613ac35786613aa38b600a61581d565b613ab29064e8d4a51000615299565b613abc9190615367565b9650613ae9565b86613acf8b600a61581d565b613adc90620f4240615299565b613ae69190615367565b96505b613af482600a61581d565b613afe8289615299565b613b089190615367565b9650505050505050611ab8565b620f4240613afe8289615299565b80516001600160a01b0316613b3c575f92505050611ab8565b60608101518415613b7057816060015185604051602001613b5e929190615836565b60405160208183030381529060405290505b5f80835f01516001600160a01b031684602001518a8a86604051602401613b9993929190615853565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051613bd79190615188565b5f60405180830381855afa9150503d805f8114613c0f576040519150601f19603f3d011682016040523d82523d5f602084013e613c14565b606091505b509150915081613c2b575f95505050505050611ab8565b602001519998505050505050505050565b5f611b228484845f613617565b5f6117678284615871565b5f808311613c6d57613c6886868685613e2c565b6121ec565b6121ec8686868686613fad565b5f805f613c8787896142a3565b9150915081613c9a575f925050506121ef565b613ca681858888614467565b92505f866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d099190615590565b60ff1690505f866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d6f9190615590565b60ff1690505f613d7f8284615893565b9050805f03613db657613d9383600a61581d565b613da0620f424088615299565b613daa9190615367565b955050505050506121ef565b5f811315613dda57613dc981600a61581d565b613dd39087615299565b9550613dfb565b613de3816152b0565b613dee90600a61581d565b613df89087615367565b95505b613e0683600a61581d565b613e13620f424088615299565b613e1d9190615367565b9b9a5050505050505050505050565b5f808590505f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613e8c575060408051601f3d908101601f19168201909252613e8991810190615590565b60015b613e9a575f92505050611ab8565b9050816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015613ef6575060408051601f3d908101601f19168201909252613ef3918101906158c8565b60015b613f04575f92505050611ab8565b846001600160501b03165f03613f23575f975050505050505050611ab8565b613f2f8285428e61456b565b15613f43575f975050505050505050611ab8565b8915613f80578815613f5d57613f5a8a600661525f565b99505b613f7984613f6e60ff89168d61525f565b61183990600a61581d565b9750613f9e565b613f9b613f8e87600a615828565b61183986620f4240611c32565b97505b50505050505050949350505050565b5f80866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015614009575060408051601f3d908101601f1916820190925261400691810190615590565b60015b614016575f9150506121ef565b9050866001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa925050508015614072575060408051601f3d908101601f1916820190925261406f918101906158c8565b60015b61407f575f9150506121ef565b846001600160501b03165f0361409d575f96505050505050506121ef565b6140a98285428e61456b565b156140bc575f96505050505050506121ef565b6140dd60405180606001604052805f81526020015f81526020015f81525090565b6140e7428b611770565b60208201528815614100576140fd8b600661525f565b9a505b8060200151831161414b578a156141305761412285613f6e60ff8a168e61525f565b9750505050505050506121ef565b61412261413e88600a615828565b61183987620f4240611c32565b4260408201525b8060200151831115614207578a1561418a578461417260ff89168d61525f565b61417d90600a61581d565b6141879190615367565b94505b6141b66141ae6141a785846040015161177090919063ffffffff16565b8790611c32565b82519061175c565b81526141c3600187615914565b6040820184905295506141d68d876145b7565b80945081965050506141ee838683604001518f61456b565b15614202575f9750505050505050506121ef565b614152565b8a15614233578461421b60ff89168d61525f565b61422690600a61581d565b6142309190615367565b94505b6142546141ae6141a78360200151846040015161177090919063ffffffff16565b81528a1561426f578051614268908b612abb565b9750614293565b6142908a6118396142818a600a615828565b845161183990620f4240611c32565b97505b5050505050505095945050505050565b5f808263ffffffff165f036142df5760405162461bcd60e51b8152602060048201526002602482015261042560f41b604482015260640161012b565b6040805160028082526060820183525f9260208301908036833701905050905083815f81518110614312576143126150a2565b602002602001019063ffffffff16908163ffffffff16815250505f81600181518110614340576143406150a2565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526001600160a01b0386169063883bdbfd90614381908490600401615934565b5f60405180830381865afa9250505080156143bd57506040513d5f823e601f3d908101601f191682016040526143ba91908101906159e2565b60015b1561445f575f825f815181106143d5576143d56150a2565b6020026020010151836001815181106143f0576143f06150a2565b60200260200101516144029190615aa5565b905061441f61441763ffffffff891683615ad2565b60060b614642565b94505f8160060b128015614444575061443e63ffffffff881682615b0e565b60060b15155b15614457578461445381615b2f565b9550505b600195505050505b509250929050565b5f8061447286614671565b90506001600160801b036001600160a01b038216116144f7575f61449f6001600160a01b03831680615299565b9050836001600160a01b0316856001600160a01b0316106144d7576144d2600160c01b876001600160801b031683614981565b6144ef565b6144ef81876001600160801b0316600160c01b614981565b9250506130c0565b5f6145106001600160a01b03831680600160401b614981565b9050836001600160a01b0316856001600160a01b03161061454857614543600160801b876001600160801b031683614981565b614560565b61456081876001600160801b0316600160801b614981565b979650505050505050565b5f84158061457857508285115b1561458557506001611ab8565b816145908487611770565b111561459e57506001611ab8565b5f84136145ad57506001611ab8565b505f949350505050565b604051639a6fc8f560e01b81526001600160501b03821660048201525f9081906001600160a01b03851690639a6fc8f59060240160a060405180830381865afa925050508015614624575060408051601f3d908101601f19168201909252614621918101906158c8565b60015b61463357505f1990505f611e0f565b50919450909250611e0f915050565b80600281900b8114612c345760405163327269a760e01b8152601860048201526024810183905260440161012b565b5f805f8360020b12614686578260020b61468d565b8260020b5f035b9050620d89e88111156146b3576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f036146c857600160801b6146da565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615614704576ffff97272373d413259a46990580e213a0260801c5b6004821615614723576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614742576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614761576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614780576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561479f576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156147be576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156147de576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156147fe576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561481e576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561483e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561485e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561487e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561489e576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156148be576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156148df576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156148ff576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561491e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561493b576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561495a57805f198161495657614956615353565b0490505b600160201b81061561496d57600161496f565b5f5b60ff16602082901c0192505050919050565b5f80805f19858709858702925082811083820303915050805f036149b5575f84116149aa575f80fd5b508290049050611b25565b8084116149c0575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6040518060800160405280614a5760405180606001604052805f81526020015f81526020015f81525090565b81526020016060815260200160608152602001606081525090565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715614aa957614aa9614a72565b60405290565b604080519081016001600160401b0381118282101715614aa957614aa9614a72565b604051601f8201601f191681016001600160401b0381118282101715614af957614af9614a72565b604052919050565b5f6001600160401b03821115614b1957614b19614a72565b5060051b60200190565b5f82601f830112614b32575f80fd5b81356020614b47614b4283614b01565b614ad1565b8083825260208201915060208460051b870101935086841115614b68575f80fd5b602086015b84811015614b9257803580600b0b8114614b85575f80fd5b8352918301918301614b6d565b509695505050505050565b5f82601f830112614bac575f80fd5b81356020614bbc614b4283614b01565b8083825260208201915060208460051b870101935086841115614bdd575f80fd5b602086015b84811015614b925780358352918301918301614be2565b5f805f8060608587031215614c0c575f80fd5b84356001600160401b0380821115614c22575f80fd5b818701915087601f830112614c35575f80fd5b813581811115614c43575f80fd5b886020828501011115614c54575f80fd5b602092830196509450908601359080821115614c6e575f80fd5b614c7a88838901614b23565b93506040870135915080821115614c8f575f80fd5b50614c9c87828801614b9d565b91505092959194509250565b5f60208284031215614cb8575f80fd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f611b22602083018486614cbf565b5f60c08284031215614d0a575f80fd5b60405160c081018181106001600160401b0382111715614d2c57614d2c614a72565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b6001600160a01b0381168114614d85575f80fd5b50565b8051612c3481614d71565b5f82601f830112614da2575f80fd5b81516020614db2614b4283614b01565b8083825260208201915060208460051b870101935086841115614dd3575f80fd5b602086015b84811015614b925780518352918301918301614dd8565b5f60208284031215614dff575f80fd5b81516001600160401b0380821115614e15575f80fd5b908301906101a08286031215614e29575f80fd5b614e31614a86565b82518152614e428660208501614cfa565b602082015260e0830151604082015261010083015160608201526101208301516080820152614e746101408401614d88565b60a082015261016083015160c082015261018083015182811115614e96575f80fd5b614ea287828601614d93565b60e08301525095945050505050565b80518015158114612c34575f80fd5b5f60e08284031215614ed0575f80fd5b60405160e081018181106001600160401b0382111715614ef257614ef2614a72565b6040528251614f0081614d71565b81526020830151614f1081614d71565b8060208301525060408301516040820152606083015160608201526080830151614f3981614d71565b6080820152614f4a60a08401614eb1565b60a0820152614f5b60c08401614eb1565b60c08201529392505050565b5f815180845260208085019450602084015f5b83811015614f9657815187529582019590820190600101614f7a565b509495945050505050565b60a0808252875182820152602080890151805160c08501529081015160e0840152604081015161010084015260608101516101208401526080810151610140840152908101516101608301525f9050604088015161018083015260608801516101a0818185015260808a01516101c085015260a08a015191506150306101e08501836001600160a01b03169052565b60c08a015161020085015260e08a015191508061022085015250615058610240840182614f67565b9050828103602084015261506d81888a614cbf565b91505061508560408301866001600160a01b03169052565b6001600160a01b0393909316606082015260800152949350505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016150db576150db6150b6565b5060010190565b608080825285519082018190525f9060209060a0840190828901845b8281101561511d578151600b0b845292840192908401906001016150fe565b50505083810360208501526151328188614f67565b91505084604084015282810360608401526145608185614f67565b604081525f61515f6040830185614f67565b82810360208401526121ef8185614f67565b5f81518060208401855e5f93019283525090919050565b5f6117678284615171565b634e487b7160e01b5f52602160045260245ffd5b600181811c908216806151bb57607f821691505b6020821081036129de57634e487b7160e01b5f52602260045260245ffd5b5f80604083850312156151ea575f80fd5b505080516020909101519092909150565b8181038181111561176a5761176a6150b6565b6001600160a01b03878116825286166020820152600b85900b6040820152606081018490526080810183905260c081016002831061524e5761524e615193565b8260a0830152979650505050505050565b8082018082111561176a5761176a6150b6565b6001600160801b03818116838216019080821115615292576152926150b6565b5092915050565b808202811582820484141761176a5761176a6150b6565b5f600160ff1b82016152c4576152c46150b6565b505f0390565b5f60208083850312156152db575f80fd5b82516001600160401b038111156152f0575f80fd5b8301601f81018513615300575f80fd5b805161530e614b4282614b01565b81815260059190911b8201830190838101908783111561532c575f80fd5b928401925b8284101561456057835161534481614d71565b82529284019290840190615331565b634e487b7160e01b5f52601260045260245ffd5b5f8261537557615375615353565b500490565b5f6040828403121561538a575f80fd5b615392614aaf565b9050815161539f81614d71565b81526020828101516001600160401b03808211156153bb575f80fd5b818501915085601f8301126153ce575f80fd5b8151818111156153e0576153e0614a72565b6153f2601f8201601f19168501614ad1565b91508082528684828501011115615407575f80fd5b808484018584015e5f908201840152918301919091525092915050565b5f60208284031215615434575f80fd5b81516001600160401b03811115615449575f80fd5b611ab88482850161537a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b608081525f6154956080830187614f67565b85602084015282810360408401526154ad8186614f67565b905082810360608401526145608185615455565b63ffffffff828116828216039080821115615292576152926150b6565b82815260408101600383106154f5576154f5615193565b8260208301529392505050565b600b81810b9083900b0160016001605f1b03811360016001605f1b03198212171561176a5761176a6150b6565b6001600160801b03828116828216039080821115615292576152926150b6565b634e487b7160e01b5f52603160045260245ffd5b600b82810b9082900b0360016001605f1b0319811260016001605f1b038213171561176a5761176a6150b6565b5f602082840312156155a0575f80fd5b815160ff81168114611b25575f80fd5b5f60208083850312156155c1575f80fd5b82516001600160401b03808211156155d7575f80fd5b818501915085601f8301126155ea575f80fd5b81516155f8614b4282614b01565b81815260059190911b83018401908481019088831115615616575f80fd5b8585015b8381101561564c57805185811115615630575f80fd5b61563e8b89838a010161537a565b84525091860191860161561a565b5098975050505050505050565b6001600160a01b03831681526040602082018190525f90611b2290830184615455565b5f6020828403121561568c575f80fd5b81516001600160401b038111156156a1575f80fd5b611ab884828501614d93565b5f82600b0b82600b0b0280600b0b9150808214615292576152926150b6565b64ffffffffff828116828216039080821115615292576152926150b6565b5f8160040b647fffffffff198103615704576157046150b6565b5f0392915050565b64ffffffffff818116838216019080821115615292576152926150b6565b5f6020828403121561573a575f80fd5b8151611b2581614d71565b600181815b8085111561445f57815f1904821115615765576157656150b6565b8085161561577257918102915b93841c939080029061574a565b5f8261578d5750600161176a565b8161579957505f61176a565b81600181146157af57600281146157b9576157d5565b600191505061176a565b60ff8411156157ca576157ca6150b6565b50506001821b61176a565b5060208310610133831016604e8410600b84101617156157f8575081810a61176a565b6158028383615745565b805f1904821115615815576158156150b6565b029392505050565b5f611767838361577f565b5f61176760ff84168361577f565b5f6158418285615171565b92151560f81b83525050600101919050565b838152826020820152606060408201525f6121ef6060830184615455565b5f63ffffffff8084168061588757615887615353565b92169190910692915050565b8181035f831280158383131683831282161715615292576152926150b6565b80516001600160501b0381168114612c34575f80fd5b5f805f805f60a086880312156158dc575f80fd5b6158e5866158b2565b9450602086015193506040860151925060608601519150615908608087016158b2565b90509295509295909350565b6001600160501b03828116828216039080821115615292576152926150b6565b602080825282518282018190525f9190848201906040850190845b8181101561597157835163ffffffff168352928401929184019160010161594f565b50909695505050505050565b5f82601f83011261598c575f80fd5b8151602061599c614b4283614b01565b8083825260208201915060208460051b8701019350868411156159bd575f80fd5b602086015b84811015614b925780516159d581614d71565b83529183019183016159c2565b5f80604083850312156159f3575f80fd5b82516001600160401b0380821115615a09575f80fd5b818501915085601f830112615a1c575f80fd5b81516020615a2c614b4283614b01565b82815260059290921b84018101918181019089841115615a4a575f80fd5b948201945b83861015615a765785518060060b8114615a67575f80fd5b82529482019490820190615a4f565b91880151919650909350505080821115615a8e575f80fd5b50615a9b8582860161597d565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff8213171561176a5761176a6150b6565b5f8160060b8360060b80615ae857615ae8615353565b667fffffffffffff1982145f1982141615615b0557615b056150b6565b90059392505050565b5f8260060b80615b2057615b20615353565b808360060b0791505092915050565b5f8160020b627fffff198103615b4757615b476150b6565b5f19019291505056fea2646970667358221220fac6cb773e0704d1bc50eab8145a2900affd40dfea6a09a58f3c8dca0617f1bb64736f6c63430008190033