0 txs
208 calls
constructor
No constructor.
functions
deposit
payablefunction deposit(address token, uint256 _amount, uint8 mode) payable returns (uint256 amount, uint256 _bdv, int96 stem)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address sender, address recipient, uint256[] depositIds, uint256[] amounts, bytes)
safeTransferFrom
nonpayablefunction safeTransferFrom(address sender, address recipient, uint256 depositId, uint256 amount, bytes)
transferDeposit
payablefunction transferDeposit(address sender, address recipient, address token, int96 stem, uint256 amount) payable returns (uint256 _bdv)
transferDeposits
payablefunction transferDeposits(address sender, address recipient, address token, int96[] stem, uint256[] amounts) payable returns (uint256[] bdvs)
updateSortedDepositIds
payablefunction updateSortedDepositIds(address account, address token, uint256[] sortedDepositIds) payable
withdrawDeposit
payablefunction withdrawDeposit(address token, int96 stem, uint256 amount, uint8 mode) payable
withdrawDeposits
payablefunction withdrawDeposits(address token, int96[] stems, uint256[] amounts, uint8 mode) payable
events
FarmerGerminatingStalkBalanceChanged
event FarmerGerminatingStalkBalanceChanged(address indexed account, int256 delta, uint8 germ)
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
RemoveDeposit
event RemoveDeposit(address indexed account, address indexed token, int96 stem, uint256 amount, uint256 bdv)
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)
TransferSingle
event TransferSingle(address indexed operator, address indexed sender, address indexed recipient, uint256 depositId, uint256 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600f57600080fd5b50615f8d8061001f6000396000f3fe60806040526004361061006b5760003560e01c8063081d77ba1461007057806327e047f114610096578063297e6c69146100ab5780632eb2c2d6146100be578063c56411f6146100de578063e348f82b146100fe578063f19ed6be14610111578063f242432a14610142575b600080fd5b61008361007e36600461522a565b610162565b6040519081526020015b60405180910390f35b6100a96100a43660046152df565b6103f5565b005b6100a96100b9366004615370565b61071c565b3480156100ca57600080fd5b506100a96100d9366004615415565b610b1b565b6100f16100ec3660046154d3565b610e89565b60405161008d91906155b6565b6100a961010c3660046155c9565b611357565b61012461011f366004615618565b61166b565b604080519384526020840192909252600b0b9082015260600161008d565b34801561014e57600080fd5b506100a961015d36600461565e565b6119ff565b60c45460009081610171611ca7565b9050600061017e82611ddb565b905060008060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156101ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f291906156d9565b600354909150600119016102215760405162461bcd60e51b8152600401610218906156f2565b60405180910390fd5b60026003556102338a8a8a8a8a611edf565b6001600355945080600060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ac91906156d9565b146102c95760405162461bcd60e51b815260040161021890615729565b5060006102d583611ddb565b905083600060c4015410156102fc5760405162461bcd60e51b815260040161021890615756565b60005b83518110156103615781818151811061031a5761031a61578d565b60200260200101518382815181106103345761033461578d565b6020026020010151146103595760405162461bcd60e51b8152600401610218906157a3565b6001016102ff565b50505050506000610370611ca7565b905060008061037e8361217f565b9150915060005b83518110156103e8578281815181106103a0576103a061578d565b60200260200101518282815181106103ba576103ba61578d565b602002602001015110156103e05760405162461bcd60e51b8152600401610218906157e7565b600101610385565b5050505095945050505050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801561043f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046391906156d9565b9050866000610470611ca7565b9050600061047d82611ddb565b905089739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea334636b29cbfe6104a2612591565b836040518363ffffffff1660e01b81526004016104c092919061581e565b60006040518083038186803b1580156104d857600080fd5b505af41580156104ec573d6000803e3d6000fd5b505060035460011901915061051590505760405162461bcd60e51b8152600401610218906156f2565b60026003556000610531610527612591565b8d8d8d8d8d6125dd565b90506105468c82610540612591565b8a6126db565b50506001600355600061055883611ddb565b905060005b83518110156105f357846001600160a01b03168482815181106105825761058261578d565b60200260200101516001600160a01b031603156105eb578181815181106105ab576105ab61578d565b60200260200101518382815181106105c5576105c561578d565b602002602001015111156105eb5760405162461bcd60e51b815260040161021890615838565b60010161055d565b505050505080610601600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906156d9565b1461068d5760405162461bcd60e51b815260040161021890615729565b506000610698611ca7565b90506000806106a68361217f565b9150915060005b8351811015610710578281815181106106c8576106c861578d565b60200260200101518282815181106106e2576106e261578d565b602002602001015110156107085760405162461bcd60e51b8152600401610218906157e7565b6001016106ad565b50505050505050505050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a91906156d9565b600354909150600119016107b05760405162461bcd60e51b8152600401610218906156f2565b6002600355816107fa5760405162461bcd60e51b8152602060048201526015602482015274115b5c1d1e4819195c1bdcda5d081251081b1a5cdd605a1b6044820152606401610218565b6001600160a01b038086166000908152602081815260408083209388168352601490930181528282208054845181840281018401909552808552929392909183018282801561086857602002820191906000526020600020905b815481526020019060010190808311610854575b50505050509050805184849050146108b45760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610218565b60016001605f1b031960005b848110156109f05760006108ee8787848181106108df576108df61578d565b90506020020135606081901c91565b91505082600b0b81600b0b1361093f5760405162461bcd60e51b815260206004820152601660248201527511195c1bdcda5d0812511cc81b9bdd081cdbdc9d195960521b6044820152606401610218565b8092506000805b8551811015610998578581815181106109615761096161578d565b602002602001015189898681811061097b5761097b61578d565b90506020020135036109905760019150610998565b600101610946565b50806109e65760405162461bcd60e51b815260206004820152601c60248201527f4944206e6f7420666f756e6420696e2063757272656e74206c697374000000006044820152606401610218565b50506001016108c0565b506109fd87878787612724565b50506001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7191906156d9565b14610a8e5760405162461bcd60e51b815260040161021890615729565b506000610a99611ca7565b9050600080610aa78361217f565b9150915060005b8351811015610b1157828181518110610ac957610ac961578d565b6020026020010151828281518110610ae357610ae361578d565b60200260200101511015610b095760405162461bcd60e51b8152600401610218906157e7565b600101610aae565b5050505050505050565b60c4546000610b28611ca7565b90506000610b3582611ddb565b905060008060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610b85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba991906156d9565b60035490915060011901610bcf5760405162461bcd60e51b8152600401610218906156f2565b6002600355888714610c495760405162461bcd60e51b815260206004820152603b60248201527f53696c6f3a206465706f73697449447320616e6420616d6f756e74732061727260448201527f617973206d757374206265207468652073616d65206c656e67746800000000006064820152608401610218565b6001600160a01b038b16610c6f5760405162461bcd60e51b815260040161021890615889565b60008060005b8b811015610cc557610c928d8d838181106108df576108df61578d565b9093509150610cbc8f8f85858f8f87818110610cb057610cb061578d565b90506020020135611edf565b50600101610c75565b505060016003555080600060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f91906156d9565b14610d5c5760405162461bcd60e51b815260040161021890615729565b506000610d6883611ddb565b905083600060c401541015610d8f5760405162461bcd60e51b815260040161021890615756565b60005b8351811015610df457818181518110610dad57610dad61578d565b6020026020010151838281518110610dc757610dc761578d565b602002602001015114610dec5760405162461bcd60e51b8152600401610218906157a3565b600101610d92565b50505050506000610e03611ca7565b9050600080610e118361217f565b9150915060005b8351811015610e7b57828181518110610e3357610e3361578d565b6020026020010151828281518110610e4d57610e4d61578d565b60200260200101511015610e735760405162461bcd60e51b8152600401610218906157e7565b600101610e18565b505050505050505050505050565b60c4546060906000610e99611ca7565b90506000610ea682611ddb565b905060008060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906156d9565b60035490915060011901610f405760405162461bcd60e51b8152600401610218906156f2565b600260035585610f925760405162461bcd60e51b815260206004820152601c60248201527f53696c6f3a20616d6f756e747320617272617920697320656d707479000000006044820152606401610218565b6000805b8781101561103b576000898983818110610fb257610fb261578d565b90506020020135116110065760405162461bcd60e51b815260206004820152601a60248201527f53696c6f3a20616d6f756e7420696e20617272617920697320300000000000006044820152606401610218565b61103189898381811061101b5761101b61578d565b90506020020135836127d090919063ffffffff16565b9150600101610f96565b50739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea33463d670bde08e61105f612591565b8e856040518563ffffffff1660e01b815260040161108094939291906158ce565b60006040518083038186803b15801561109857600080fd5b505af41580156110ac573d6000803e3d6000fd5b50505050739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea334636b29cbfe8e8d6040518363ffffffff1660e01b81526004016110e992919061581e565b60006040518083038186803b15801561110157600080fd5b505af4158015611115573d6000803e3d6000fd5b5050604051633594e5ff60e11b8152739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea3349250636b29cbfe9150611152908f908f9060040161581e565b60006040518083038186803b15801561116a57600080fd5b505af415801561117e573d6000803e3d6000fd5b505050506111918d8d8d8d8d8d8d6127e5565b60016003559550819050600060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156111e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120c91906156d9565b146112295760405162461bcd60e51b815260040161021890615729565b50600061123583611ddb565b905083600060c40154101561125c5760405162461bcd60e51b815260040161021890615756565b60005b83518110156112c15781818151811061127a5761127a61578d565b60200260200101518382815181106112945761129461578d565b6020026020010151146112b95760405162461bcd60e51b8152600401610218906157a3565b60010161125f565b505050505060006112d0611ca7565b90506000806112de8361217f565b9150915060005b8351811015611348578281815181106113005761130061578d565b602002602001015182828151811061131a5761131a61578d565b602002602001015110156113405760405162461bcd60e51b8152600401610218906157e7565b6001016112e5565b50505050979650505050505050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c591906156d9565b90508460006113d2611ca7565b905060006113df82611ddb565b905087739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea334636b29cbfe611404612591565b836040518363ffffffff1660e01b815260040161142292919061581e565b60006040518083038186803b15801561143a57600080fd5b505af415801561144e573d6000803e3d6000fd5b505060035460011901915061147790505760405162461bcd60e51b8152600401610218906156f2565b600260035561148f611487612591565b8a8a8a612cd3565b6114a2898861149c612591565b896126db565b50600160035560006114b383611ddb565b905060005b835181101561154e57846001600160a01b03168482815181106114dd576114dd61578d565b60200260200101516001600160a01b03160315611546578181815181106115065761150661578d565b60200260200101518382815181106115205761152061578d565b602002602001015111156115465760405162461bcd60e51b815260040161021890615838565b6001016114b8565b50505050508061155c600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906156d9565b146115e85760405162461bcd60e51b815260040161021890615729565b5060006115f3611ca7565b90506000806116018361217f565b9150915060005b8351811015610b11578281815181106116235761162361578d565b602002602001015182828151811061163d5761163d61578d565b602002602001015110156116635760405162461bcd60e51b8152600401610218906157e7565b600101611608565b600154604080516318160ddd60e01b815290516000928392839283926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df91906156d9565b60c45490915060006116ef611ca7565b905060006116fc82611ddb565b600354909150600119016117225760405162461bcd60e51b8152600401610218906156f2565b600260035589739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea334636b29cbfe61174a612591565b836040518363ffffffff1660e01b815260040161176892919061581e565b60006040518083038186803b15801561178057600080fd5b505af4158015611794573d6000803e3d6000fd5b505050506117ab8b8b6117a5612591565b8c612d43565b97506117bf6117b8612591565b8c8a612ed5565b6001600355919850909650600091506117d9905083611ddb565b905083600060c4015410156118305760405162461bcd60e51b815260206004820152601e60248201527f494e563a206e6f4f7574466c6f77205374616c6b2064656372656173656400006044820152606401610218565b60005b83518110156118d55781818151811061184e5761184e61578d565b60200260200101518382815181106118685761186861578d565b602002602001015111156118cd5760405162461bcd60e51b815260206004820152602660248201527f494e563a206e6f4f7574466c6f7720546f6b656e2062616c616e6365206465636044820152651c99585cd95960d21b6064820152608401610218565b600101611833565b5050505050806118e3600090565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561192e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195291906156d9565b1461196f5760405162461bcd60e51b815260040161021890615729565b50600061197a611ca7565b90506000806119888361217f565b9150915060005b83518110156119f2578281815181106119aa576119aa61578d565b60200260200101518282815181106119c4576119c461578d565b602002602001015110156119ea5760405162461bcd60e51b8152600401610218906157e7565b60010161198f565b5050505093509350939050565b60c4546000611a0c611ca7565b90506000611a1982611ddb565b905060008060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8d91906156d9565b60035490915060011901611ab35760405162461bcd60e51b8152600401610218906156f2565b60026003556001600160a01b038916611ade5760405162461bcd60e51b815260040161021890615889565b606088901c88611af18c8c84848d611edf565b505060016003555080600060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6b91906156d9565b14611b885760405162461bcd60e51b815260040161021890615729565b506000611b9483611ddb565b905083600060c401541015611bbb5760405162461bcd60e51b815260040161021890615756565b60005b8351811015611c2057818181518110611bd957611bd961578d565b6020026020010151838281518110611bf357611bf361578d565b602002602001015114611c185760405162461bcd60e51b8152600401610218906157a3565b600101611bbe565b50505050506000611c2f611ca7565b9050600080611c3d8361217f565b9150915060005b835181101561071057828181518110611c5f57611c5f61578d565b6020026020010151828281518110611c7957611c7961578d565b60200260200101511015611c9f5760405162461bcd60e51b8152600401610218906157e7565b600101611c44565b60606000611cb3612fa0565b90506000611cbf6130a5565b9050600081518351611cd1919061590e565b9050806001600160401b03811115611ceb57611ceb615921565b604051908082528060200260200182016040528015611d14578160200160208202803683370190505b50935060005b8351811015611d6f57838181518110611d3557611d3561578d565b6020026020010151858281518110611d4f57611d4f61578d565b6001600160a01b0390921660209283029190910190910152600101611d1a565b5060005b8251811015611dd457828181518110611d8e57611d8e61578d565b602002602001015185828651611da4919061590e565b81518110611db457611db461578d565b6001600160a01b0390921660209283029190910190910152600101611d73565b5050505090565b606081516001600160401b03811115611df657611df6615921565b604051908082528060200260200182016040528015611e1f578160200160208202803683370190505b50905060005b8251811015611ed957828181518110611e4057611e4061578d565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611e739190615937565b602060405180830381865afa158015611e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb491906156d9565b828281518110611ec657611ec661578d565b6020908102919091010152600101611e25565b50919050565b6000739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea33463d670bde087611f04612591565b87866040518563ffffffff1660e01b8152600401611f2594939291906158ce565b60006040518083038186803b158015611f3d57600080fd5b505af4158015611f51573d6000803e3d6000fd5b5050604051633594e5ff60e11b8152739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea3349250636b29cbfe9150611f8e908990889060040161581e565b60006040518083038186803b158015611fa657600080fd5b505af4158015611fba573d6000803e3d6000fd5b5050604051633594e5ff60e11b8152739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea3349250636b29cbfe9150611ff7908890889060040161581e565b60006040518083038186803b15801561200f57600080fd5b505af4158015612023573d6000803e3d6000fd5b5050505060008060008061203b8a8989896001613113565b935093509350935073e97ee5afcb656126c6a89b72d8617061213f9f4d63e41ad52e8a8a8a8a8760016040518763ffffffff1660e01b815260040161208596959493929190615961565b60006040518083038186803b15801561209d57600080fd5b505af41580156120b1573d6000803e3d6000fd5b50600292506120be915050565b8160028111156120d0576120d061594b565b036120ee576120e98a8a6120e487876127d0565b61325c565b61210b565b6120fa8a8a86846134b6565b821561210b5761210b8a8a8561325c565b886001600160a01b03168a6001600160a01b0316612127612591565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6261215b8c8c613649565b60408051918252602082018c90520160405180910390a45098975050505050505050565b606080600083516001600160401b0381111561219d5761219d615921565b6040519080825280602002602001820160405280156121c6578160200160208202803683370190505b50925083516001600160401b038111156121e2576121e2615921565b60405190808252806020026020018201604052801561220b578160200160208202803683370190505b50915060005b845181101561258a5781600101601b0160008683815181106122355761223561578d565b6020908102919091018101516001600160a01b031682528101919091526040016000908120549060ca8401906001815260200190815260200160002060008784815181106122855761228561578d565b6020908102919091018101516001600160a01b031682528101919091526040016000908120546001600160801b03169060ca85019080815260200190815260200160002060008885815181106122dd576122dd61578d565b6020908102919091018101516001600160a01b0316825281019190915260400160009081205488516001600160801b039091169160c78701918a90879081106123285761232861578d565b6020908102919091018101516001600160a01b031682528101919091526040016000205461235f91906001600160801b03166159b2565b61236991906159b2565b6001600160801b031661237c919061590e565b84828151811061238e5761238e61578d565b6020908102919091010152600182015485516001600160a01b03909116908690839081106123be576123be61578d565b60200260200101516001600160a01b03160361246c5781600101600801548482815181106123ee576123ee61578d565b60200260200101818151612402919061590e565b90525060005b600883015481101561246a5760008181526020808501905260409020600181015460029091015461243991906159d9565b85838151811061244b5761244b61578d565b6020026020010181815161245f919061590e565b905250600101612408565b505b8160010161010101600001600086838151811061248b5761248b61578d565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548482815181106124c6576124c661578d565b602002602001018181516124da919061590e565b90525084518590829081106124f1576124f161578d565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016125249190615937565b602060405180830381865afa158015612541573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256591906156d9565b8382815181106125775761257761578d565b6020908102919091010152600101612211565b5050915091565b60006125c47f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b038216116125da5750335b90565b60008382146125fe5760405162461bcd60e51b8152600401610218906159ec565b600061260e88888888888861366b565b8051519091501561263857805180516040820151602090920151612638928b928b92909190613a96565b6020810151511561266457602080820151805160408201519190920151612664928b928b926000613ab4565b6040810151511561269057604080820151805191810151602090910151612690928b928b926001613ab4565b6060810151156126ab576126a8888260600151613b27565b50505b6040810151516020820151518251516126cf92916126c991906127d0565b906127d0565b98975050505050505050565b821561271e5760018160018111156126f5576126f561594b565b0361270a57612705828585613cf9565b61271e565b61271e6001600160a01b0385168385613d30565b50505050565b6000805b82811015612795576001600160a01b0380871660009081526020848152604080832093891683526014909301905290812082916001909101908686848181106127735761277361578d565b6020908102929092013583525081019190915260400160002055600101612728565b506001600160a01b03808616600090815260208381526040808320938816835260149093019052206127c890848461514c565b505050505050565b60006127dc828461590e565b90505b92915050565b60608382146128065760405162461bcd60e51b8152600401610218906159ec565b61280e615193565b6000856001600160401b0381111561282857612828615921565b604051908082528060200260200182016040528015612851578160200160208202803683370190505b5090506000866001600160401b0381111561286e5761286e615921565b604051908082528060200260200182016040528015612897578160200160208202803683370190505b50905060006128a58a613d94565b905060005b88811015612ba25760006128e48b8b848181106128c9576128c961578d565b90506020020160208101906128de9190615a33565b84613dd0565b905060006129328f8e8e8e878181106128ff576128ff61578d565b90506020020160208101906129149190615a33565b8d8d888181106129265761292661578d565b90506020020135613e35565b905073e97ee5afcb656126c6a89b72d8617061213f9f4d63e41ad52e8f8f8f8f888181106129625761296261578d565b90506020020160208101906129779190615a33565b8e8e898181106129895761298961578d565b905060200201358660016040518763ffffffff1660e01b81526004016129b496959493929190615961565b60006040518083038186803b1580156129cc57600080fd5b505af41580156129e0573d6000803e3d6000fd5b505050506000612a238d8d868181106129fb576129fb61578d565b9050602002016020810190612a109190615a33565b8660200151612a1e8561418a565b6141c2565b9050612a4c8b8b86818110612a3a57612a3a61578d565b8b5151926020909102013590506127d0565b8851526002836002811115612a6357612a6361594b565b03612a9957875160400151612a7890836127d0565b885160400152875160200151612a8e90826127d0565b885160200152612b27565b6000836002811115612aad57612aad61594b565b03612aee57602088015160400151612ac590836127d0565b6020808a0180516040019290925290510151612ae190826127d0565b6020808a01510152612b27565b6040808901510151612b0090836127d0565b6040808a018051909101919091525160200151612b1d90826127d0565b6040890151602001525b81878581518110612b3a57612b3a61578d565b602002602001018181525050612b768e8e8e87818110612b5c57612b5c61578d565b9050602002016020810190612b719190615a33565b613649565b868581518110612b8857612b8861578d565b6020026020010181815250505050508060010190506128aa565b5060405163d7787ee560e01b8152739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea3349063d7787ee590612be0908f908f908f908a90600401615a4e565b60006040518083038186803b158015612bf857600080fd5b505af4158015612c0c573d6000803e3d6000fd5b505050508a6001600160a01b03168c6001600160a01b0316612c2c612591565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb858b8b604051612c6893929190615b1a565b60405180910390a48351516040516001600160a01b03808d1692908f16917f6008478fd0513693018a0ac8771ada053137941c0d833295a27629af7a3ab56b91612cbb918e918e918e918e918c90615b40565b60405180910390a350909a9950505050505050505050565b600080600080612ce7888888886000613113565b929650909450925090506002816002811115612d0557612d0561594b565b03612d2557612d2088888785612d1b89896127d0565b613a96565b610b11565b612d33888887858886613ab4565b8215610b11576107108884613b27565b600083600003612d5557506000612ecd565b6000826003811115612d6957612d6961594b565b14612db557612d8f8386866001866003811115612d8857612d8861594b565b14156141f8565b905080841480612db057506003826003811115612dae57612dae61594b565b145b612ecd575b6040516370a0823160e01b81526000906001600160a01b038716906370a0823190612de4903090600401615937565b602060405180830381865afa158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2591906156d9565b9050612e488430612e3685896159d9565b6001600160a01b038a169291906142aa565b612ec9612ec282886001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e7b9190615937565b602060405180830381865afa158015612e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebc91906156d9565b906142e3565b83906127d0565b9150505b949350505050565b60008060008073e97ee5afcb656126c6a89b72d8617061213f9f4d631ade41108888612f008a6142ef565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600b81900b6044830152606482018990529450608401606060405180830381865af4158015612f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f849190615bb7565b91955093509050612f968784836143af565b5093509350939050565b60c95460609060009081816001600160401b03811115612fc257612fc2615921565b604051908082528060200260200182016040528015612feb578160200160208202803683370190505b50935060005b8281101561309b5760c9840180548290811061300f5761300f61578d565b600091825260209091200154600160a01b900460ff16156130935760c984018054829081106130405761304061578d565b6000918252602090912001546001600160a01b0316858361306081615be9565b9450815181106130725761307261578d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612ff1565b5080845250505090565b606060006130b1614589565b905060005b8151811015611ed9576130e18282815181106130d4576130d461578d565b6020026020010151614684565b8282815181106130f3576130f361578d565b6001600160a01b03909216602092830291909101909101526001016130b6565b60008080808060006131258a8a614719565b90935090506131368b8b8b8b613e35565b6001600160a01b038b16600090815260c88401602052604090205490945061316e908590600160481b900465ffffffffffff16614744565b955061317e8982612a1e8761418a565b945060008760018111156131945761319461594b565b036131f95760006001600160a01b038c166131ad612591565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626131e18e8e613649565b60408051918252602082018e90520160405180910390a45b60408051600b8b900b8152602081018a90529081018590526001600160a01b03808c1691908d16907f153f0425cb9f489d8ca1232a9a790fb1ee212c4d80bb8cf8c83b0f5b203bab1c9060600160405180910390a3505095509550955095915050565b6001600160a01b038316600090815260208190526040812060010154819083146132b15760c482015460c58301546132ac916001916126c991906132a6908490612ebc908a614744565b90614750565b6132cb565b6001600160a01b0385166000908152602083905260409020545b6001600160a01b0386166000908152602084905260409020600101549091506132f490846142e3565b6001600160a01b038616600090815260208490526040902060018101919091555461331f90826142e3565b6001600160a01b038616600081815260208590526040902091909155600080516020615f3883398151915261335385615c02565b61335c84615c02565b6040805192835260208301919091520160405180910390a26001600160a01b03851660009081526020839052604090208054602c909101541115613419576001600160a01b03851660009081526020839052604081208054602c909101546133c3916142e3565b6001600160a01b038088166000908152602086905260408082208054602c918201559289168252902001549091506133fb90826127d0565b6001600160a01b0386166000908152602085905260409020602c0155505b6001600160a01b03841660009081526020839052604090206001015461343f90846127d0565b6001600160a01b038516600090815260208490526040902060018101919091555461346a90826127d0565b6001600160a01b038516600081815260208581526040918290209390935580518681529283018490529091600080516020615f3883398151915291015b60405180910390a25050505050565b60006134c18361418a565b6001600160a01b0386166000908152602083905260408120601a01908460028111156134ef576134ef61594b565b60028111156135005761350061594b565b815260208101919091526040016000908120805490919061352b9084906001600160801b0316615c1e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506135588361418a565b6001600160a01b0385166000908152602083905260408120601a01908460028111156135865761358661594b565b60028111156135975761359761594b565b81526020810191909152604001600090812080549091906135c29084906001600160801b03166159b2565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550846001600160a01b0316600080516020615f188339815191528461360990615c02565b84604051613618929190615c52565b60405180910390a2836001600160a01b0316600080516020615f1883398151915284846040516134a7929190615c52565b6001600160601b031660609190911b6bffffffffffffffffffffffff19161790565b613673615193565b600080856001600160401b0381111561368e5761368e615921565b6040519080825280602002602001820160405280156136b7578160200160208202803683370190505b5090506000866001600160401b038111156136d4576136d4615921565b6040519080825280602002602001820160405280156136fd578160200160208202803683370190505b509050600061370b8a613d94565b905060005b8881101561390257600061372f8b8b848181106128c9576128c961578d565b9050600061374a8e8e8e8e878181106128ff576128ff61578d565b90508086848151811061375f5761375f61578d565b6020026020010181815250506137818d8d8d86818110612b5c57612b5c61578d565b8584815181106137935761379361578d565b60200260200101818152505060006137b68d8d868181106129fb576129fb61578d565b905060028360028111156137cc576137cc61594b565b0361382c578851604001516137e190836127d0565b8951604001528851602001516137f790826127d0565b8951602001526138248b8b868181106138125761381261578d565b8c5151926020909102013590506127d0565b8951526138f4565b60008360028111156138405761384061594b565b036138945760208901516040015161385890836127d0565b60208a0151604001526138898b8b868181106138765761387661578d565b60208d81015151939102013590506127d0565b60208a0151526138df565b6040808a015101516138a690836127d0565b6040808b015101526138d88b8b868181106138c3576138c361578d565b60408d015151926020909102013590506127d0565b60408a0151525b60608901516138ee90826127d0565b60608a01525b505050806001019050613710565b506001600160a01b038a16600090815260c885016020526040902054855151600160481b90910465ffffffffffff16901561395e578551604001516139579061394b9083614744565b875160200151906127d0565b8651602001525b602086015151156139855760208601516040015161397c9082614744565b60208088015101525b604086015151156139ac5760408087015101516139a29082614744565b6040870151602001525b5060006001600160a01b038c166139c1612591565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb858b8b6040516139fd93929190615b1a565b60405180910390a4896001600160a01b03168b6001600160a01b03167f6008478fd0513693018a0ac8771ada053137941c0d833295a27629af7a3ab56b8b8b8b8b613a6d8c60400151600001516126c98e60200151600001518f60000151600001516127d090919063ffffffff16565b8a604051613a8096959493929190615b40565b60405180910390a3505050509695505050505050565b613aa184848461475c565b613aab8582613b27565b50505050505050565b613ac085858584614845565b60405163100ca29360e01b8152739f327f1f6810aaf5a4ab0704b62b4ed6bb0ea3349063100ca29390613afb90899086908690600401615c66565b60006040518083038186803b158015613b1357600080fd5b505af4158015610710573d6000803e3d6000fd5b6000808083600003613b40576000809250925050613cf2565b60c481015460c5820154613b5991906132a69087614744565b6001600160a01b038616600090815260208390526040902054909350831115613b98576001600160a01b03851660009081526020829052604090205492505b60c4810154613ba790856142e3565b60c48201556001600160a01b038516600090815260208290526040902060010154613bd290856142e3565b6001600160a01b03861660009081526020839052604090206001015560c5810154613bfd90846142e3565b60c58201556001600160a01b038516600090815260208290526040902054613c2590846142e3565b6001600160a01b0386166000908152602083905260409020818155602c01541115613cad576001600160a01b03851660009081526020829052604081208054602c90910154613c73916142e3565b6001600160a01b03871660009081526020849052604090208054602c9091015560ed830154909150613ca590826142e3565b60ed83015591505b6001600160a01b038516600080516020615f38833981519152613ccf86615c02565b613cd886615c02565b6040805192835260208301919091520160405180910390a2505b9250929050565b6000613d058484614aa9565b90506000613d1382846127d0565b9050613d29858583613d2487614ad6565b614b03565b5050505050565b6040516001600160a01b03838116602483015260448201839052613d8f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614c05565b505050565b6040805180820190915260008082526020820152613db1826142ef565b600b0b60208201819052613dc6908390614c5f565b600b0b8152919050565b60008160000151600b0b83600b0b1215613dec575060026127df565b8160200151600b0b83600b0b03613e1a57613e05614c7a565b613e10576001613e13565b60005b90506127df565b613e22614c7a565b613e2d576000613e13565b5060016127df565b6000806000613e448686613649565b6001600160a01b0388166000908152602084815260408083208484526013019091529020546001600160801b03600160801b8204811695509192501680851115613ed05760405162461bcd60e51b815260206004820152601c60248201527f53696c6f3a2043726174652062616c616e636520746f6f206c6f772e000000006044820152606401610218565b808510156140b4576000613ef160016126c9846132a683612ebc8c8c614744565b90506000613eff86836142e3565b90506000613f0d84896142e3565b9050808660000160008d6001600160a01b03166001600160a01b03168152602001908152602001600020601301600087815260200190815260200160002060000160006101000a8154816001600160801b0302191690836001600160801b03160217905550818660000160008d6001600160a01b03166001600160a01b03168152602001908152602001600020601301600087815260200190815260200160002060000160106101000a8154816001600160801b0302191690836001600160801b03160217905550614054838760000160008e6001600160a01b03166001600160a01b0316815260200190815260200160002060180160008d6001600160a01b03166001600160a01b03168152602001908152602001600020600001600c9054906101000a90046001600160801b03166001600160801b0316614c9790919063ffffffff16565b6001600160a01b03808d16600090815260209889526040808220928e168252601890920190985290962080546001600160801b0397909716600160601b02600160601b600160e01b031990971696909617909555509350612ecd92505050565b80156140ea576001600160a01b0388166000908152602084815260408083208584526013019091528120556140ea888884614ca3565b6001600160a01b03888116600090815260208581526040808320938b16835260189093019052205461412c90600160601b90046001600160801b031685614c97565b6001600160a01b03808a16600090815260209586526040808220928b168252601890920190955290932080546001600160801b0394909416600160601b02600160601b600160e01b0319909416939093179092555050949350505050565b60006001600160801b038211156141be576040516306dfcc6560e41b81526080600482015260248101839052604401610218565b5090565b60006141ee6001600160801b0383166141df600b86900b87614db2565b6001600160601b031690614744565b90505b9392505050565b6000806142058686614aa9565b905082806142135750838110155b61426e5760405162461bcd60e51b815260206004820152602660248201527f42616c616e63653a20496e73756666696369656e7420696e7465726e616c2062604482015265616c616e636560d01b6064820152608401610218565b6142788185614dbe565b9150600061428683836159d9565b90506142a087878361429787614ad6565b613d2490615c02565b5050949350505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261271e9186918216906323b872dd90608401613d5d565b60006127dc82846159d9565b6001600160a01b038116600090815260c860205260408120548190614380906143459061432890600160781b900463ffffffff16614dd4565b60d484015461433c9063ffffffff16614dd4565b600b0b90614db2565b6001600160a01b038516600090815260c88401602052604090205461437790600160201b900464ffffffffff16614dd4565b600b0b90614de7565b6001600160a01b038416600090815260c8830160205260409020546141f19190600160981b9004600b0b615c92565b6001600160a01b03831660009081526020819052604081208390601a01828460028111156143df576143df61594b565b60028111156143f0576143f061594b565b815260208101919091526040016000908120805490919061441b9084906001600160801b03166159b2565b82546001600160801b039182166101009390930a92830291909202199091161790555060d481015463ffffffff1682600281111561445b5761445b61594b565b614463614df3565b60028111156144745761447461594b565b036144b45763ffffffff8116600090815260cb83016020526040812080546001600160801b03871692906144a990849061590e565b909155506145019050565b6001600160801b03841660cb830160006144cf600185615cbf565b63ffffffff1663ffffffff16815260200190815260200160002060000160008282546144fb919061590e565b90915550505b846001600160a01b0316600080516020615f18833981519152856001600160801b031685604051614533929190615c52565b60405180910390a26040805163ffffffff831681526001600160801b03861660208201527f3dd97efd4911891b98b28287922dd7351872382b548b549517e183ee6544c743910160405180910390a15050505050565b60c95460609060009081816001600160401b038111156145ab576145ab615921565b6040519080825280602002602001820160405280156145d4578160200160208202803683370190505b50935060005b8281101561309b5760c984018054829081106145f8576145f861578d565b600091825260209091200154600160b81b900460ff161561467c5760c984018054829081106146295761462961578d565b6000918252602090912001546001600160a01b0316858361464981615be9565b94508151811061465b5761465b61578d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016145da565b600080826001600160a01b0316639d63848a6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156146c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146ed9190810190615ce7565b9050806146f982614e0d565b815181106147095761470961578d565b6020026020010151915050919050565b600080600061472785613d94565b90506147338482613dd0565b816020015192509250509250929050565b60006127dc8284615d9f565b60006127dc8284615dcc565b600061479461476a8461418a565b6001600160a01b038616600090815260c7840160205260409020546001600160801b031690614c97565b6001600160a01b038516600090815260c783016020526040902080546001600160801b0319166001600160801b03929092169190911790556148096147d88361418a565b6001600160a01b038616600090815260c784016020526040902054600160801b90046001600160801b031690614c97565b6001600160a01b03909416600090815260c79091016020526040902080546001600160801b03948516600160801b029416939093179092555050565b60008082600281111561485a5761485a61594b565b1415801561487a575060018260028111156148775761487761594b565b14155b156148c15760405162461bcd60e51b8152602060048201526017602482015276696e76616c6964206765726d696e6174696f6e5369646560481b6044820152606401610218565b6148ca8461418a565b60ca820160008460028111156148e2576148e261594b565b60028111156148f3576148f361594b565b8152602080820192909252604090810160009081206001600160a01b038a168252909252812080549091906149329084906001600160801b0316615c1e565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061495f8361418a565b60ca820160008460028111156149775761497761594b565b60028111156149885761498861594b565b8152602080820192909252604090810160009081206001600160a01b038a168252909252902080546010906149ce908490600160801b90046001600160801b0316615c1e565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550846001600160a01b03167f99f70d4286db852579c7e4c4e3d46125005d363d480494fec6524240ade1e00e836002811115614a2f57614a2f61594b565b614a37614df3565b6002811115614a4857614a4861594b565b14614a695760d4830154614a649060019063ffffffff16615cbf565b614a75565b60d483015463ffffffff165b614a7e87615c02565b614a8787615c02565b6040805163ffffffff90941684526020840192909252908201526060016134a7565b6001600160a01b03918216600090815260208181526040808320939094168252601b909201909152205490565b60006001600160ff1b038211156141be5760405163123baf0360e11b815260048101839052602401610218565b600080821215614b5c57614b3a614b1983615c02565b6001600160a01b0386166000908152601c84016020526040902054906142e3565b6001600160a01b0385166000908152601c830160205260409020819055614b9f565b6001600160a01b0384166000908152601c82016020526040902054614b8190836127d0565b6001600160a01b0385166000908152601c8301602052604090208190555b506001600160a01b03858116600081815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42910160405180910390a35050505050565b6000614c1a6001600160a01b03841683614e9f565b90508051600014158015614c3f575080806020019051810190614c3d9190615de0565b155b15613d8f5782604051635274afe760e01b81526004016102189190615937565b60006127dc82614c6e85614ead565b64ffffffffff16614db2565b60d4546000908190614c919063ffffffff16614fbf565b91505090565b60006127dc8284615c1e565b6001600160a01b03838116600090815260208181526040808320938616835260149093018152828220848352600180820190925292822054835492939290918391614cee91906159d9565b81548110614cfe57614cfe61578d565b9060005260206000200154826000018281548110614d1e57614d1e61578d565b906000526020600020018190555080826001016000846000018481548110614d4857614d4861578d565b90600052602060002001548152602001908152602001600020819055506000198260010160008681526020019081526020016000208190555081600001805480614d9457614d94615e02565b60019003818190600052602060002001600090559055505050505050565b60006127dc8284615e18565b6000818310614dcd57816127dc565b5090919050565b60006127df614de283614ad6565b614ff0565b60006127dc8284615e45565b6000614dfd614c7a565b614e075750600190565b50600090565b6000805b8251821015614e5f57828281518110614e2c57614e2c61578d565b602090810291909101015160018201546001600160a01b03908116911614614e545750919050565b816001019150614e11565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b6044820152606401610218565b60606127dc83836000615024565b60d4546001600160a01b038216600090815260c860205260408120549091829163ffffffff918216600160781b9091049091161015614f16576001600160a01b038316600090815260c882016020526040902054600160201b900464ffffffffff169150611ed9565b6001600160a01b038316600090815260c88201602052604081206001015460040b908112614f79576001600160a01b038416600090815260c883016020526040902054614f72908290600160201b900464ffffffffff16615e65565b9250614fb8565b614f8281615e83565b6001600160a01b038516600090815260c884016020526040902054614fb59190600160201b900464ffffffffff16615ea7565b92505b5050919050565b6000614fd663ffffffff808416906002906150c116565b63ffffffff1615614fe85760016127df565b600092915050565b80600b81900b811461501f5760405163327269a760e01b81526060600482015260248101839052604401610218565b919050565b606081471015615049573060405163cd78605960e01b81526004016102189190615937565b600080856001600160a01b031684866040516150659190615ec5565b60006040518083038185875af1925050503d80600081146150a2576040519150601f19603f3d011682016040523d82523d6000602084013e6150a7565b606091505b50915091506150b78683836150cd565b9695505050505050565b60006127dc8284615ef4565b6060826150e2576150dd82615120565b6141f1565b81511580156150f957506001600160a01b0384163b155b156151195783604051639996b31560e01b81526004016102189190615937565b50806141f1565b8051156151305780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b828054828255906000526020600020908101928215615187579160200282015b8281111561518757823582559160200191906001019061516c565b506141be9291506151cd565b60405180608001604052806151a66151e2565b81526020016151b36151e2565b81526020016151c06151e2565b8152602001600081525090565b5b808211156141be57600081556001016151ce565b60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b038116811461514957600080fd5b8035600b81900b811461501f57600080fd5b600080600080600060a0868803121561524257600080fd5b853561524d81615203565b9450602086013561525d81615203565b9350604086013561526d81615203565b925061527b60608701615218565b949793965091946080013592915050565b60008083601f84011261529e57600080fd5b5081356001600160401b038111156152b557600080fd5b6020830191508360208260051b8501011115613cf257600080fd5b80356002811061501f57600080fd5b600080600080600080608087890312156152f857600080fd5b863561530381615203565b955060208701356001600160401b038082111561531f57600080fd5b61532b8a838b0161528c565b9097509550604089013591508082111561534457600080fd5b5061535189828a0161528c565b90945092506153649050606088016152d0565b90509295509295509295565b6000806000806060858703121561538657600080fd5b843561539181615203565b935060208501356153a181615203565b925060408501356001600160401b038111156153bc57600080fd5b6153c88782880161528c565b95989497509550505050565b60008083601f8401126153e657600080fd5b5081356001600160401b038111156153fd57600080fd5b602083019150836020828501011115613cf257600080fd5b60008060008060008060008060a0898b03121561543157600080fd5b883561543c81615203565b9750602089013561544c81615203565b965060408901356001600160401b038082111561546857600080fd5b6154748c838d0161528c565b909850965060608b013591508082111561548d57600080fd5b6154998c838d0161528c565b909650945060808b01359150808211156154b257600080fd5b506154bf8b828c016153d4565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156154ee57600080fd5b87356154f981615203565b9650602088013561550981615203565b9550604088013561551981615203565b945060608801356001600160401b038082111561553557600080fd5b6155418b838c0161528c565b909650945060808a013591508082111561555a57600080fd5b506155678a828b0161528c565b989b979a50959850939692959293505050565b60008151808452602080850194506020840160005b838110156155ab5781518752958201959082019060010161558f565b509495945050505050565b6020815260006127dc602083018461557a565b600080600080608085870312156155df57600080fd5b84356155ea81615203565b93506155f860208601615218565b92506040850135915061560d606086016152d0565b905092959194509250565b60008060006060848603121561562d57600080fd5b833561563881615203565b92506020840135915060408401356004811061565357600080fd5b809150509250925092565b60008060008060008060a0878903121561567757600080fd5b863561568281615203565b9550602087013561569281615203565b9450604087013593506060870135925060808701356001600160401b038111156156bb57600080fd5b6156c789828a016153d4565b979a9699509497509295939492505050565b6000602082840312156156eb57600080fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b6001600160a01b0392831681529116602082015260400190565b60208082526031908201527f494e563a206f6e654f7574466c6f77206d756c7469706c6520746f6b656e2062604082015270185b185b98d95cc8191958dc99585cd959607a1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156127df576127df6158f8565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03878116825286166020820152600b85900b6040820152606081018490526080810183905260c08101600283106159a1576159a161594b565b8260a0830152979650505050505050565b6001600160801b038181168382160190808211156159d2576159d26158f8565b5092915050565b818103818111156127df576127df6158f8565b60208082526027908201527f53696c6f3a204372617465732c20616d6f756e7473206172652064696666206c60408201526632b733ba34399760c91b606082015260800190565b600060208284031215615a4557600080fd5b6127dc82615218565b6001600160a01b03858116825284811660208301528316604082015281516101a0820190615a949060608401908051825260208082015190830152604090810151910152565b602083810151805160c08501528082015160e0850152604090810151610100850152808501518051610120860152918201516101408501520151610160830152606090920151610180909101529392505050565b81835260006001600160fb1b03831115615b0157600080fd5b8260051b80836020870137939093016020019392505050565b604081526000615b2d604083018661557a565b8281036020840152612ec9818587615ae8565b6080808252810186905260008760a08301825b89811015615b7b57615b6483615218565b600b0b825260209283019290910190600101615b53565b508381036020850152615b8f81888a615ae8565b9150508460408401528281036060840152615baa818561557a565b9998505050505050505050565b600080600060608486031215615bcc57600080fd5b835192506020840151915060408401516003811061565357600080fd5b600060018201615bfb57615bfb6158f8565b5060010190565b6000600160ff1b8201615c1757615c176158f8565b5060000390565b6001600160801b038281168282160390808211156159d2576159d26158f8565b60038110615c4e57615c4e61594b565b9052565b828152604081016141f16020830184615c3e565b6001600160a01b03841681526001600160801b038316602082015260608101612ecd6040830184615c3e565b600b81810b9083900b0160016001605f1b03811360016001605f1b0319821217156127df576127df6158f8565b63ffffffff8281168282160390808211156159d2576159d26158f8565b805161501f81615203565b60006020808385031215615cfa57600080fd5b82516001600160401b0380821115615d1157600080fd5b818501915085601f830112615d2557600080fd5b815181811115615d3757615d37615921565b8060051b604051601f19603f83011681018181108582111715615d5c57615d5c615921565b604052918252848201925083810185019188831115615d7a57600080fd5b938501935b828510156126cf57615d9085615cdc565b84529385019392850192615d7f565b80820281158282048414176127df576127df6158f8565b634e487b7160e01b600052601260045260246000fd5b600082615ddb57615ddb615db6565b500490565b600060208284031215615df257600080fd5b815180151581146141f157600080fd5b634e487b7160e01b600052603160045260246000fd5b600b82810b9082900b0360016001605f1b0319811260016001605f1b03821317156127df576127df6158f8565b600082600b0b82600b0b0280600b0b91508082146159d2576159d26158f8565b64ffffffffff8281168282160390808211156159d2576159d26158f8565b60008160040b647fffffffff198103615e9e57615e9e6158f8565b60000392915050565b64ffffffffff8181168382160190808211156159d2576159d26158f8565b6000825160005b81811015615ee65760208186018101518583015201615ecc565b506000920191825250919050565b600063ffffffff80841680615f0b57615f0b615db6565b9216919091069291505056fe9c0c70ad39ba6959d6008b9bc651f15ce23613cc1c5ebb4c6ffba0e53a1ea705b2d61db64b8ad7535308d2111c78934bc32baf9b7cd3a2e58cba25730003cd58a2646970667358221220cfa13ec7bf969268dbac7402042c5b3f65eb005ea1b886f6e5fc7eb6022d329564736f6c63430008190033