0 txs
0 calls
constructor
constructor(address factoryV1, address legacyFactoryV2, address factoryV2, address legacyRouterV2, address routerV2)
functions
findBestPathFromAmountIn
viewfunction findBestPathFromAmountIn(address[] route, uint128 amountIn) view returns (tuple quote)
findBestPathFromAmountOut
viewfunction findBestPathFromAmountOut(address[] route, uint128 amountOut) view returns (tuple quote)
getFactoryV1
viewfunction getFactoryV1() view returns (address factoryV1)
getFactoryV2
viewfunction getFactoryV2() view returns (address factoryV2)
getLegacyFactoryV2
viewfunction getLegacyFactoryV2() view returns (address legacyFactoryV2)
getLegacyRouterV2
viewfunction getLegacyRouterV2() view returns (address legacyRouterV2)
getRouterV2
viewfunction getRouterV2() view returns (address routerV2)
events
No events.
errors
JoeLibrary__AddressZero
error JoeLibrary__AddressZero()
JoeLibrary__IdenticalAddresses
error JoeLibrary__IdenticalAddresses()
JoeLibrary__InsufficientAmount
error JoeLibrary__InsufficientAmount()
JoeLibrary__InsufficientLiquidity
error JoeLibrary__InsufficientLiquidity()
LBQuoter_InvalidLength
error LBQuoter_InvalidLength()
Uint128x128Math__PowUnderflow
error Uint128x128Math__PowUnderflow(uint256 x, int256 y)
Uint256x256Math__MulDivOverflow
error Uint256x256Math__MulDivOverflow()
Uint256x256Math__MulShiftOverflow
error Uint256x256Math__MulShiftOverflow()
creation bytecode
0x6101206040523480156200001257600080fd5b50604051620038573803806200385783398101604081905262000035916200007d565b6001600160a01b0394851660805292841660a05290831660c052908216610100521660e052620000ed565b80516001600160a01b03811681146200007857600080fd5b919050565b600080600080600060a086880312156200009657600080fd5b620000a18662000060565b9450620000b16020870162000060565b9350620000c16040870162000060565b9250620000d16060870162000060565b9150620000e16080870162000060565b90509295509295909350565b60805160a05160c05160e051610100516136e2620001756000396000818160f901528181610fbc015261229f01526000818160d3015281816109c40152611c3201526000818161015801528181610da00152612095015260008181610132015281816107a80152611a28015260008181607401528181610414015261165801526136e26000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c806307da8f57146100725780630f902a40146100b157806323229d6d146100d157806333141d3e146100f7578063592142261461011d5780638fe4b3ad14610130578063ca56fc7214610156575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100c46100bf366004612e98565b61017c565b6040516100a89190613039565b7f0000000000000000000000000000000000000000000000000000000000000000610094565b7f0000000000000000000000000000000000000000000000000000000000000000610094565b6100c461012b366004612e98565b6113c5565b7f0000000000000000000000000000000000000000000000000000000000000000610094565b7f0000000000000000000000000000000000000000000000000000000000000000610094565b610184612e43565b60028310156101a657604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506101e89150600190508561311c565b9050806001600160401b0381111561020257610202613133565b60405190808252806020026020018201604052801561022b578160200160208202803683370190505b506020830152806001600160401b0381111561024957610249613133565b604051908082528060200260200182016040528015610272578160200160208202803683370190505b506040830152806001600160401b0381111561029057610290613133565b6040519080825280602002602001820160405280156102b9578160200160208202803683370190505b506060830152806001600160401b038111156102d7576102d7613133565b604051908082528060200260200182016040528015610300578160200160208202803683370190505b5060c0830152836001600160401b0381111561031e5761031e613133565b604051908082528060200260200182016040528015610347578160200160208202803683370190505b506080830152836001600160401b0381111561036557610365613133565b60405190808252806020026020018201604052801561038e578160200160208202803683370190505b508260a001819052508282608001516000815181106103af576103af613149565b60200260200101906001600160801b031690816001600160801b031681525050828260a001516000815181106103e7576103e7613149565b60200260200101906001600160801b031690816001600160801b03168152505060005b818110156113bc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a4390587878481811061045357610453613149565b90506020020160208101906104689190613174565b8888610475866001613198565b81811061048457610484613149565b90506020020160208101906104999190613174565b6040518363ffffffff1660e01b81526004016104b69291906131b0565b602060405180830381865afa1580156104d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f791906131ca565b8360200151828151811061050d5761050d613149565b6001600160a01b039092166020928302919091018201528301518051600091908390811061053d5761053d613149565b60200260200101516001600160a01b031614158015610582575060008360800151828151811061056f5761056f613149565b60200260200101516001600160801b0316115b156107a457600080610608856020015184815181106105a3576105a3613149565b60200260200101518989868181106105bd576105bd613149565b90506020020160208101906105d29190613174565b8a8a6105df886001613198565b8181106105ee576105ee613149565b90506020020160208101906106039190613174565b612728565b9150915060008211801561061c5750600081115b156107a1576106528560800151848151811061063a5761063a613149565b60200260200101516001600160801b031683836127e8565b6080860151610662856001613198565b8151811061067257610672613149565b60200260200101906001600160801b031690816001600160801b0316815250506106db8560a0015184815181106106ab576106ab613149565b60200260200101516103e56106c091906131e7565b6001600160801b03166106d5846103e8613216565b8361287f565b60a08601516106eb856001613198565b815181106106fb576106fb613149565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008560c00151848151811061073957610739613149565b60200260200101906001600160801b031690816001600160801b03168152505060008560600151848151811061077157610771613149565b6020026020010190600281111561078a5761078a612f91565b9081600281111561079d5761079d612f91565b9052505b50505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106107e7576107e7613149565b90506020020160208101906107fc9190613174565b8989610809876001613198565b81811061081857610818613149565b905060200201602081019061082d9190613174565b6040518363ffffffff1660e01b815260040161084a9291906131b0565b600060405180830381865afa158015610867573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088f91908101906132d7565b9050600081511180156108c857506000846080015183815181106108b5576108b5613149565b60200260200101516001600160801b0316115b15610d9c5760005b8151811015610d9a578181815181106108eb576108eb613149565b602002602001015160600151610d88576000888861090a866001613198565b81811061091957610919613149565b905060200201602081019061092e9190613174565b6001600160a01b031683838151811061094957610949613149565b6020026020010151602001516001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b691906131ca565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632004b724848481518110610a0357610a03613149565b60200260200101516020015188608001518781518110610a2557610a25613149565b6020026020010151846040518463ffffffff1660e01b8152600401610a4c939291906133b9565b6040805180830381865afa925050508015610a84575060408051601f3d908101601f19168201909252610a81918101906133e5565b60015b610a8d57610d86565b6080880151610a9d876001613198565b81518110610aad57610aad613149565b60200260200101516001600160801b0316821115610d835760808801518290610ad7886001613198565b81518110610ae757610ae7613149565b60200260200101906001600160801b031690816001600160801b031681525050848481518110610b1957610b19613149565b60200260200101516020015188602001518781518110610b3b57610b3b613149565b60200260200101906001600160a01b031690816001600160a01b031681525050848481518110610b6d57610b6d613149565b60200260200101516000015161ffff1688604001518781518110610b9357610b93613149565b602002602001018181525050600188606001518781518110610bb757610bb7613149565b60200260200101906002811115610bd057610bd0612f91565b90816002811115610be357610be3612f91565b815250506000858581518110610bfb57610bfb613149565b6020026020010151602001516001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c689190613409565b92505050610cc6828a60a001518981518110610c8657610c86613149565b60200260200101516001600160801b0316610ca1919061311c565b828b604001518a81518110610cb857610cb8613149565b6020026020010151876128e5565b60a08a0151610cd6896001613198565b81518110610ce657610ce6613149565b60200260200101906001600160801b031690816001600160801b03168152505088608001518781518110610d1c57610d1c613149565b60200260200101516001600160801b031682670de0b6b3a7640000610d419190613216565b610d4b919061344d565b8960c001518881518110610d6157610d61613149565b60200260200101906001600160801b031690816001600160801b031681525050505b50505b505b80610d9281613461565b9150506108d0565b505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d7898986818110610ddf57610ddf613149565b9050602002016020810190610df49190613174565b8a8a610e01886001613198565b818110610e1057610e10613149565b9050602002016020810190610e259190613174565b6040518363ffffffff1660e01b8152600401610e429291906131b0565b600060405180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e87919081019061347c565b905060008151118015610ec05750600085608001518481518110610ead57610ead613149565b60200260200101516001600160801b0316115b156113a75760005b81518110156113a557818181518110610ee357610ee3613149565b6020026020010151606001516113935760008989610f02876001613198565b818110610f1157610f11613149565b9050602002016020810190610f269190613174565b6001600160a01b0316838381518110610f4157610f41613149565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae91906131ca565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf848481518110610ffb57610ffb613149565b6020026020010151602001518960800151888151811061101d5761101d613149565b6020026020010151846040518463ffffffff1660e01b8152600401611044939291906133b9565b606060405180830381865afa92505050801561107d575060408051601f3d908101601f1916820190925261107a91810190613559565b60015b61108657611391565b6001600160801b0383161580156110d5575060808a01516110a8896001613198565b815181106110b8576110b8613149565b60200260200101516001600160801b0316826001600160801b0316115b1561138d5760808a015182906110ec8a6001613198565b815181106110fc576110fc613149565b60200260200101906001600160801b031690816001600160801b03168152505085858151811061112e5761112e613149565b6020026020010151602001518a60200151898151811061115057611150613149565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061118257611182613149565b60200260200101516000015161ffff168a6040015189815181106111a8576111a8613149565b60200260200101818152505060028a6060015189815181106111cc576111cc613149565b602002602001019060028111156111e5576111e5612f91565b908160028111156111f8576111f8612f91565b81525050600086868151811061121057611210613149565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d919061359b565b90506112d9828c60a001518b8151811061129957611299613149565b60200260200101516112ab91906135c0565b6001600160801b0316828d604001518c815181106112cb576112cb613149565b6020026020010151886128e5565b60a08c01516112e98b6001613198565b815181106112f9576112f9613149565b60200260200101906001600160801b031690816001600160801b0316815250508a60800151898151811061132f5761132f613149565b602002602001015182670de0b6b3a764000061134b91906131e7565b61135591906135e8565b8b60c001518a8151811061136b5761136b613149565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b8061139d81613461565b915050610ec8565b505b505080806113b490613461565b91505061040a565b50509392505050565b6113cd612e43565b60028310156113ef57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506114319150600190508561311c565b9050806001600160401b0381111561144b5761144b613133565b604051908082528060200260200182016040528015611474578160200160208202803683370190505b506020830152806001600160401b0381111561149257611492613133565b6040519080825280602002602001820160405280156114bb578160200160208202803683370190505b506040830152806001600160401b038111156114d9576114d9613133565b604051908082528060200260200182016040528015611502578160200160208202803683370190505b506060830152806001600160401b0381111561152057611520613133565b604051908082528060200260200182016040528015611549578160200160208202803683370190505b5060c0830152836001600160401b0381111561156757611567613133565b604051908082528060200260200182016040528015611590578160200160208202803683370190505b506080830152836001600160401b038111156115ae576115ae613133565b6040519080825280602002602001820160405280156115d7578160200160208202803683370190505b508260a0018190525082826080015182815181106115f7576115f7613149565b60200260200101906001600160801b031690816001600160801b031681525050828260a00151828151811061162e5761162e613149565b6001600160801b0390921660209283029190910190910152805b80156113bc576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a43905878761168a60018661311c565b81811061169957611699613149565b90506020020160208101906116ae9190613174565b8888858181106116c0576116c0613149565b90506020020160208101906116d59190613174565b6040518363ffffffff1660e01b81526004016116f29291906131b0565b602060405180830381865afa15801561170f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173391906131ca565b602084015161174360018461311c565b8151811061175357611753613149565b6001600160a01b0390921660209283029190910182015283015160009061177b60018461311c565b8151811061178b5761178b613149565b60200260200101516001600160a01b0316141580156117d057506000836080015182815181106117bd576117bd613149565b60200260200101516001600160801b0316115b15611a1c5760008061184a85602001516001856117ed919061311c565b815181106117fd576117fd613149565b60200260200101518989600187611814919061311c565b81811061182357611823613149565b90506020020160208101906118389190613174565b8a8a878181106105ee576105ee613149565b9150915060008211801561188357508460800151838151811061186f5761186f613149565b60200260200101516001600160801b031681115b15611a19576118b9856080015184815181106118a1576118a1613149565b60200260200101516001600160801b0316838361292b565b60808601516118c960018661311c565b815181106118d9576118d9613149565b60200260200101906001600160801b031690816001600160801b0316815250506119428560a00151848151811061191257611912613149565b60200260200101516103e861192791906131e7565b6001600160801b031661193c836103e5613216565b8461287f565b61194d906001613198565b60a086015161195d60018661311c565b8151811061196d5761196d613149565b6001600160801b039092166020928302919091019091015260c0850151660aa87bee5380009061199e60018661311c565b815181106119ae576119ae613149565b6001600160801b039092166020928302919091019091015260608501516000906119d960018661311c565b815181106119e9576119e9613149565b60200260200101906002811115611a0257611a02612f91565b90816002811115611a1557611a15612f91565b9052505b50505b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d78888611a5a60018761311c565b818110611a6957611a69613149565b9050602002016020810190611a7e9190613174565b898986818110611a9057611a90613149565b9050602002016020810190611aa59190613174565b6040518363ffffffff1660e01b8152600401611ac29291906131b0565b600060405180830381865afa158015611adf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b0791908101906132d7565b905060008151118015611b405750600084608001518381518110611b2d57611b2d613149565b60200260200101516001600160801b0316115b156120895760005b815181101561208757818181518110611b6357611b63613149565b602002602001015160600151612075576000888885818110611b8757611b87613149565b9050602002016020810190611b9c9190613174565b6001600160a01b0316838381518110611bb757611bb7613149565b6020026020010151602001516001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2491906131ca565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635bdd4b7c848481518110611c7157611c71613149565b60200260200101516020015188608001518781518110611c9357611c93613149565b6020026020010151846040518463ffffffff1660e01b8152600401611cba939291906133b9565b6040805180830381865afa925050508015611cf2575060408051601f3d908101601f19168201909252611cef918101906133e5565b60015b611cfb57612073565b8115801590611d7357506080880151611d1560018861311c565b81518110611d2557611d25613149565b60200260200101516001600160801b0316821080611d7357506080880151611d4e60018861311c565b81518110611d5e57611d5e613149565b60200260200101516001600160801b03166000145b156120705760808801518290611d8a60018961311c565b81518110611d9a57611d9a613149565b60200260200101906001600160801b031690816001600160801b031681525050848481518110611dcc57611dcc613149565b6020026020010151602001518860200151600188611dea919061311c565b81518110611dfa57611dfa613149565b60200260200101906001600160a01b031690816001600160a01b031681525050848481518110611e2c57611e2c613149565b60200260200101516000015161ffff168860400151600188611e4e919061311c565b81518110611e5e57611e5e613149565b60209081029190910101526060880151600190611e7b828961311c565b81518110611e8b57611e8b613149565b60200260200101906002811115611ea457611ea4612f91565b90816002811115611eb757611eb7612f91565b815250506000858581518110611ecf57611ecf613149565b6020026020010151602001516001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3c9190613409565b9250505081611f9d8a60a001518981518110611f5a57611f5a613149565b60200260200101516001600160801b0316838c6040015160018c611f7e919061311c565b81518110611f8e57611f8e613149565b602002602001015188156128e5565b611fa7919061360e565b60a08a0151611fb760018a61311c565b81518110611fc757611fc7613149565b6001600160801b03909216602092830291909101909101526080890151611fef60018961311c565b81518110611fff57611fff613149565b60200260200101516001600160801b031682670de0b6b3a76400006120249190613216565b61202e919061344d565b60c08a015161203e60018a61311c565b8151811061204e5761204e613149565b60200260200101906001600160801b031690816001600160801b031681525050505b50505b505b8061207f81613461565b915050611b48565b505b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d789896120c760018861311c565b8181106120d6576120d6613149565b90506020020160208101906120eb9190613174565b8a8a878181106120fd576120fd613149565b90506020020160208101906121129190613174565b6040518363ffffffff1660e01b815260040161212f9291906131b0565b600060405180830381865afa15801561214c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612174919081019061347c565b9050600081511180156121ad575060008560800151848151811061219a5761219a613149565b60200260200101516001600160801b0316115b156127135760005b8151811015612711578181815181106121d0576121d0613149565b6020026020010151606001516126ff5760008989868181106121f4576121f4613149565b90506020020160208101906122099190613174565b6001600160a01b031683838151811061222457612224613149565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229191906131ca565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c8484815181106122de576122de613149565b6020026020010151602001518960800151888151811061230057612300613149565b6020026020010151846040518463ffffffff1660e01b8152600401612327939291906133b9565b606060405180830381865afa925050508015612360575060408051601f3d908101601f1916820190925261235d91810190613559565b60015b612369576126fd565b6001600160801b03821615801561238857506001600160801b03831615155b8015612406575060808a015161239f60018a61311c565b815181106123af576123af613149565b60200260200101516001600160801b0316836001600160801b03161080612406575060808a01516123e160018a61311c565b815181106123f1576123f1613149565b60200260200101516001600160801b03166000145b156126f95760808a0151839061241d60018b61311c565b8151811061242d5761242d613149565b60200260200101906001600160801b031690816001600160801b03168152505085858151811061245f5761245f613149565b6020026020010151602001518a6020015160018a61247d919061311c565b8151811061248d5761248d613149565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106124bf576124bf613149565b60200260200101516000015161ffff168a6040015160018a6124e1919061311c565b815181106124f1576124f1613149565b602090810291909101015260608a015160029061250f60018b61311c565b8151811061251f5761251f613149565b6020026020010190600281111561253857612538612f91565b9081600281111561254b5761254b612f91565b81525050600086868151811061256357612563613149565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d0919061359b565b90508161262f8c60a001518b815181106125ec576125ec613149565b60200260200101516001600160801b0316838e6040015160018e612610919061311c565b8151811061262057612620613149565b602002602001015189156128e5565b612639919061360e565b60a08c015161264960018c61311c565b8151811061265957612659613149565b6001600160801b039092166020928302919091019091015260808b015161268160018b61311c565b8151811061269157612691613149565b602002602001015182670de0b6b3a76400006126ad91906131e7565b6126b791906135e8565b60c08c01516126c760018c61311c565b815181106126d7576126d7613149565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b8061270981613461565b9150506121b5565b505b5050808061272090613639565b915050611648565b600080600061273785856129c7565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561277b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279f9190613667565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b0316146127d65780826127d9565b81815b90999098509650505050505050565b6000836128085760405163b229ed3360e01b815260040160405180910390fd5b821580612813575081155b15612831576040516398c59a2960e01b815260040160405180910390fd5b600061283f856103e5613216565b9050600061284d8483613216565b905060008261285e876103e8613216565b6128689190613198565b9050612874818361344d565b979650505050505050565b60008361289f5760405163b229ed3360e01b815260040160405180910390fd5b8215806128aa575081155b156128c8576040516398c59a2960e01b815260040160405180910390fd5b826128d38386613216565b6128dd919061344d565b949350505050565b6000811561290b576129048560806128fd8787612a53565b9190612a81565b90506128dd565b612922608061291a8686612a53565b879190612aee565b95945050505050565b60008361294b5760405163b229ed3360e01b815260040160405180910390fd5b821580612956575081155b15612974576040516398c59a2960e01b815260040160405180910390fd5b60006129808585613216565b61298c906103e8613216565b9050600061299a868561311c565b6129a6906103e5613216565b90506129b2818361344d565b6129bd906001613198565b9695505050505050565b600080826001600160a01b0316846001600160a01b031614156129fd57604051630df4665760e21b815260040160405180910390fd5b826001600160a01b0316846001600160a01b031610612a1d578284612a20565b83835b90925090506001600160a01b038216612a4c576040516304cda58760e51b815260040160405180910390fd5b9250929050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016129228282612b18565b6000806000612a908686612d7b565b9150915081600014612aa6578360ff1682901c92505b80156113bc57600160ff85161b8110612ad257604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c906129bd9087906001901b868585612d9a565b6000808083612b305750600160801b9150612d759050565b50826000811215612b42579015906000035b62100000811015612d3257600160801b9250846001600160801b03811115612b6c57911591600019045b6001821615612b7d5792830260801c925b800260801c6002821615612b935792830260801c925b800260801c6004821615612ba95792830260801c925b800260801c6008821615612bbf5792830260801c925b800260801c6010821615612bd55792830260801c925b800260801c6020821615612beb5792830260801c925b800260801c6040821615612c015792830260801c925b8002608090811c90821615612c185792830260801c925b800260801c610100821615612c2f5792830260801c925b800260801c610200821615612c465792830260801c925b800260801c610400821615612c5d5792830260801c925b800260801c610800821615612c745792830260801c925b800260801c611000821615612c8b5792830260801c925b800260801c612000821615612ca25792830260801c925b800260801c614000821615612cb95792830260801c925b800260801c618000821615612cd05792830260801c925b800260801c62010000821615612ce85792830260801c925b800260801c62020000821615612d005792830260801c925b800260801c62040000821615612d185792830260801c925b800260801c62080000821615612d305792830260801c925b505b82612d5e57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b81612d695782612922565b6129228360001961344d565b92915050565b6000806000198385098385029250828110838203039150509250929050565b600081612db857838381612db057612db0613437565b049050612922565b838210612dd8576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b6001600160801b0381168114612e9557600080fd5b50565b600080600060408486031215612ead57600080fd5b83356001600160401b0380821115612ec457600080fd5b818601915086601f830112612ed857600080fd5b813581811115612ee757600080fd5b8760208260051b8501011115612efc57600080fd5b60209283019550935050840135612f1281612e80565b809150509250925092565b600081518084526020808501945080840160005b83811015612f565781516001600160a01b031687529582019590820190600101612f31565b509495945050505050565b600081518084526020808501945080840160005b83811015612f5657815187529582019590820190600101612f75565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b84811015612ff457825160038110612fe257634e487b7160e01b83526021600452602483fd5b88529683019691830191600101612fbc565b50959695505050505050565b600081518084526020808501945080840160005b83811015612f565781516001600160801b031687529582019590820190600101613014565b602081526000825160e06020840152613056610100840182612f1d565b90506020840151601f19808584030160408601526130748383612f1d565b925060408601519150808584030160608601526130918383612f61565b925060608601519150808584030160808601526130ae8383612fa7565b925060808601519150808584030160a08601526130cb8383613000565b925060a08601519150808584030160c08601526130e88383613000565b925060c08601519150808584030160e0860152506129228282613000565b634e487b7160e01b600052601160045260246000fd5b60008282101561312e5761312e613106565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e9557600080fd5b60006020828403121561318657600080fd5b81356131918161315f565b9392505050565b600082198211156131ab576131ab613106565b500190565b6001600160a01b0392831681529116602082015260400190565b6000602082840312156131dc57600080fd5b81516131918161315f565b60006001600160801b038281168482168115158284048211161561320d5761320d613106565b02949350505050565b600081600019048311821515161561323057613230613106565b500290565b604051608081016001600160401b038111828210171561325757613257613133565b60405290565b604051601f8201601f191681016001600160401b038111828210171561328557613285613133565b604052919050565b60006001600160401b038211156132a6576132a6613133565b5060051b60200190565b805161ffff811681146132c257600080fd5b919050565b805180151581146132c257600080fd5b600060208083850312156132ea57600080fd5b82516001600160401b0381111561330057600080fd5b8301601f8101851361331157600080fd5b805161332461331f8261328d565b61325d565b81815260079190911b8201830190838101908783111561334357600080fd5b928401925b8284101561287457608084890312156133615760008081fd5b613369613235565b613372856132b0565b8152858501516133818161315f565b8187015260406133928682016132c7565b9082015260606133a38682016132c7565b9082015282526080939093019290840190613348565b6001600160a01b039390931683526001600160801b039190911660208301521515604082015260600190565b600080604083850312156133f857600080fd5b505080516020909101519092909150565b60008060006060848603121561341e57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601260045260246000fd5b60008261345c5761345c613437565b500490565b600060001982141561347557613475613106565b5060010190565b6000602080838503121561348f57600080fd5b82516001600160401b038111156134a557600080fd5b8301601f810185136134b657600080fd5b80516134c461331f8261328d565b81815260079190911b820183019083810190878311156134e357600080fd5b928401925b8284101561287457608084890312156135015760008081fd5b613509613235565b613512856132b0565b8152858501516135218161315f565b8187015260406135328682016132c7565b9082015260606135438682016132c7565b90820152825260809390930192908401906134e8565b60008060006060848603121561356e57600080fd5b835161357981612e80565b602085015190935061358a81612e80565b6040850151909250612f1281612e80565b6000602082840312156135ad57600080fd5b815162ffffff8116811461319157600080fd5b60006001600160801b03838116908316818110156135e0576135e0613106565b039392505050565b60006001600160801b038381168061360257613602613437565b92169190910492915050565b60006001600160801b0382811684821680830382111561363057613630613106565b01949350505050565b60008161364857613648613106565b506000190190565b80516001600160701b03811681146132c257600080fd5b60008060006060848603121561367c57600080fd5b61368584613650565b925061369360208501613650565b9150604084015163ffffffff81168114612f1257600080fdfea26469706673582212202162a20f4588c82c385ffd5bbb382616c3ffd78f31c2ec78e3fff03f95f058be64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008597db3ba8de6baadeda8cba4dac653e24a0e57b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9a64ab6b91f5c7a78c2360cff759de8a8a450d5