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()
SafeCast__Exceeds128Bits
error SafeCast__Exceeds128Bits()
SafeCast__Exceeds24Bits
error SafeCast__Exceeds24Bits()
Uint128x128Math__PowUnderflow
error Uint128x128Math__PowUnderflow(uint256 x, int256 y)
Uint256x256Math__MulDivOverflow
error Uint256x256Math__MulDivOverflow()
Uint256x256Math__MulShiftOverflow
error Uint256x256Math__MulShiftOverflow()
creation bytecode
0x6101206040523480156200001257600080fd5b50604051620039a1380380620039a183398101604081905262000035916200007d565b6001600160a01b0394851660805292841660a05290831660c052908216610100521660e052620000ed565b80516001600160a01b03811681146200007857600080fd5b919050565b600080600080600060a086880312156200009657600080fd5b620000a18662000060565b9450620000b16020870162000060565b9350620000c16040870162000060565b9250620000d16060870162000060565b9150620000e16080870162000060565b90509295509295909350565b60805160a05160c05160e0516101005161382b62000176600039600081816101090152818161107b015261240601526000818160e301528181610a3f0152611d8301526000818161016801528181610e4e01526121eb015260008181610142015281816108120152611b680152600081816084015281816104620152611781015261382b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806333141d3e1161005b57806333141d3e14610107578063592142261461012d5780638fe4b3ad14610140578063ca56fc721461016657600080fd5b806307da8f57146100825780630f902a40146100c157806323229d6d146100e1575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100d46100cf366004613037565b61018c565b6040516100b891906131d9565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b6100d461013b366004613037565b6114b0565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b6101cc6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b60028310156101ee57604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250610230915060019050856132bc565b90508067ffffffffffffffff81111561024b5761024b6132d3565b604051908082528060200260200182016040528015610274578160200160208202803683370190505b5060208301528067ffffffffffffffff811115610293576102936132d3565b6040519080825280602002602001820160405280156102bc578160200160208202803683370190505b5060408301528067ffffffffffffffff8111156102db576102db6132d3565b604051908082528060200260200182016040528015610304578160200160208202803683370190505b5060608301528067ffffffffffffffff811115610323576103236132d3565b60405190808252806020026020018201604052801561034c578160200160208202803683370190505b5060c08301528367ffffffffffffffff81111561036b5761036b6132d3565b604051908082528060200260200182016040528015610394578160200160208202803683370190505b5060808301528367ffffffffffffffff8111156103b3576103b36132d3565b6040519080825280602002602001820160405280156103dc578160200160208202803683370190505b508260a001819052508282608001516000815181106103fd576103fd6132e9565b60200260200101906001600160801b031690816001600160801b031681525050828260a00151600081518110610435576104356132e9565b60200260200101906001600160801b031690816001600160801b03168152505060005b818110156114a7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058787848181106104a1576104a16132e9565b90506020020160208101906104b69190613314565b88886104c3866001613338565b8181106104d2576104d26132e9565b90506020020160208101906104e79190613314565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105569190613350565b8360200151828151811061056c5761056c6132e9565b6001600160a01b039092166020928302919091018201528301518051600091908390811061059c5761059c6132e9565b60200260200101516001600160a01b0316141580156105e157506000836080015182815181106105ce576105ce6132e9565b60200260200101516001600160801b0316115b1561080e5760008061066785602001518481518110610602576106026132e9565b602002602001015189898681811061061c5761061c6132e9565b90506020020160208101906106319190613314565b8a8a61063e886001613338565b81811061064d5761064d6132e9565b90506020020160208101906106629190613314565b61288e565b9150915060008211801561067b5750600081115b1561080b576106b96106b48660800151858151811061069c5761069c6132e9565b60200260200101516001600160801b0316848461295c565b6129f3565b60808601516106c9856001613338565b815181106106d9576106d96132e9565b60200260200101906001600160801b031690816001600160801b0316815250506107456106b48660a001518581518110610715576107156132e9565b60200260200101516103e561072a919061336d565b6001600160801b031661073f856103e861339c565b84612a22565b60a0860151610755856001613338565b81518110610765576107656132e9565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008560c0015184815181106107a3576107a36132e9565b60200260200101906001600160801b031690816001600160801b0316815250506000856060015184815181106107db576107db6132e9565b602002602001019060028111156107f4576107f4613131565b9081600281111561080757610807613131565b9052505b50505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d7888885818110610851576108516132e9565b90506020020160208101906108669190613314565b8989610873876001613338565b818110610882576108826132e9565b90506020020160208101906108979190613314565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090a919081019061345b565b9050600081511180156109435750600084608001518381518110610930576109306132e9565b60200260200101516001600160801b0316115b15610e4a5760005b8151811015610e4857818181518110610966576109666132e9565b602002602001015160600151610e365760008888610985866001613338565b818110610994576109946132e9565b90506020020160208101906109a99190613314565b6001600160a01b03168383815181106109c4576109c46132e9565b6020026020010151602001516001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a319190613350565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632004b724848481518110610a7e57610a7e6132e9565b60200260200101516020015188608001518781518110610aa057610aa06132e9565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b0316602482015283151560448201526064016040805180830381865afa925050508015610b20575060408051601f3d908101601f19168201909252610b1d9181019061353e565b60015b610b2957610e34565b6080880151610b39876001613338565b81518110610b4957610b496132e9565b60200260200101516001600160801b0316821115610e3157610b6a826129f3565b6080890151610b7a886001613338565b81518110610b8a57610b8a6132e9565b60200260200101906001600160801b031690816001600160801b031681525050848481518110610bbc57610bbc6132e9565b60200260200101516020015188602001518781518110610bde57610bde6132e9565b60200260200101906001600160a01b031690816001600160a01b031681525050848481518110610c1057610c106132e9565b60200260200101516000015161ffff1688604001518781518110610c3657610c366132e9565b602002602001018181525050600188606001518781518110610c5a57610c5a6132e9565b60200260200101906002811115610c7357610c73613131565b90816002811115610c8657610c86613131565b815250506000858581518110610c9e57610c9e6132e9565b6020026020010151602001516001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0b9190613562565b92505050610d71828a60a001518981518110610d2957610d296132e9565b60200260200101516001600160801b0316610d4491906132bc565b610d4d83612a88565b8b604001518a81518110610d6357610d636132e9565b602002602001015187612aae565b60a08a0151610d81896001613338565b81518110610d9157610d916132e9565b60200260200101906001600160801b031690816001600160801b031681525050610df989608001518881518110610dca57610dca6132e9565b60200260200101516001600160801b031683670de0b6b3a7640000610def919061339c565b6106b491906135a6565b8960c001518881518110610e0f57610e0f6132e9565b60200260200101906001600160801b031690816001600160801b031681525050505b50505b505b80610e40816135c8565b91505061094b565b505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d7898986818110610e8d57610e8d6132e9565b9050602002016020810190610ea29190613314565b8a8a610eaf886001613338565b818110610ebe57610ebe6132e9565b9050602002016020810190610ed39190613314565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f4691908101906135e3565b905060008151118015610f7f5750600085608001518481518110610f6c57610f6c6132e9565b60200260200101516001600160801b0316115b156114925760005b815181101561149057818181518110610fa257610fa26132e9565b60200260200101516060015161147e5760008989610fc1876001613338565b818110610fd057610fd06132e9565b9050602002016020810190610fe59190613314565b6001600160a01b0316838381518110611000576110006132e9565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d9190613350565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf8484815181106110ba576110ba6132e9565b602002602001015160200151896080015188815181106110dc576110dc6132e9565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa92505050801561115d575060408051601f3d908101601f1916820190925261115a918101906136c1565b60015b6111665761147c565b6001600160801b0383161580156111b5575060808a0151611188896001613338565b81518110611198576111986132e9565b60200260200101516001600160801b0316826001600160801b0316115b156114785760808a015182906111cc8a6001613338565b815181106111dc576111dc6132e9565b60200260200101906001600160801b031690816001600160801b03168152505085858151811061120e5761120e6132e9565b6020026020010151602001518a602001518981518110611230576112306132e9565b60200260200101906001600160a01b031690816001600160a01b031681525050858581518110611262576112626132e9565b60200260200101516000015161ffff168a604001518981518110611288576112886132e9565b60200260200101818152505060028a6060015189815181106112ac576112ac6132e9565b602002602001019060028111156112c5576112c5613131565b908160028111156112d8576112d8613131565b8152505060008686815181106112f0576112f06132e9565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135d9190613703565b90506113b9828c60a001518b81518110611379576113796132e9565b602002602001015161138b9190613728565b6001600160801b0316828d604001518c815181106113ab576113ab6132e9565b602002602001015188612aae565b60a08c01516113c98b6001613338565b815181106113d9576113d96132e9565b60200260200101906001600160801b031690816001600160801b0316815250506114408b608001518a81518110611412576114126132e9565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000610def919061339c565b8b60c001518a81518110611456576114566132e9565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b80611488816135c8565b915050610f87565b505b5050808061149f906135c8565b915050610458565b50509392505050565b6114f06040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561151257604051632973c80b60e01b815260040160405180910390fd5b838380806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093855250611554915060019050856132bc565b90508067ffffffffffffffff81111561156f5761156f6132d3565b604051908082528060200260200182016040528015611598578160200160208202803683370190505b5060208301528067ffffffffffffffff8111156115b7576115b76132d3565b6040519080825280602002602001820160405280156115e0578160200160208202803683370190505b5060408301528067ffffffffffffffff8111156115ff576115ff6132d3565b604051908082528060200260200182016040528015611628578160200160208202803683370190505b5060608301528067ffffffffffffffff811115611647576116476132d3565b604051908082528060200260200182016040528015611670578160200160208202803683370190505b5060c08301528367ffffffffffffffff81111561168f5761168f6132d3565b6040519080825280602002602001820160405280156116b8578160200160208202803683370190505b5060808301528367ffffffffffffffff8111156116d7576116d76132d3565b604051908082528060200260200182016040528015611700578160200160208202803683370190505b508260a001819052508282608001518281518110611720576117206132e9565b60200260200101906001600160801b031690816001600160801b031681525050828260a001518281518110611757576117576132e9565b6001600160801b0390921660209283029190910190910152805b80156114a7576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a4390587876117b36001866132bc565b8181106117c2576117c26132e9565b90506020020160208101906117d79190613314565b8888858181106117e9576117e96132e9565b90506020020160208101906117fe9190613314565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186d9190613350565b602084015161187d6001846132bc565b8151811061188d5761188d6132e9565b6001600160a01b039092166020928302919091018201528301516000906118b56001846132bc565b815181106118c5576118c56132e9565b60200260200101516001600160a01b03161415801561190a57506000836080015182815181106118f7576118f76132e9565b60200260200101516001600160801b0316115b15611b5c57600080611984856020015160018561192791906132bc565b81518110611937576119376132e9565b6020026020010151898960018761194e91906132bc565b81811061195d5761195d6132e9565b90506020020160208101906119729190613314565b8a8a8781811061064d5761064d6132e9565b915091506000821180156119bd5750846080015183815181106119a9576119a96132e9565b60200260200101516001600160801b031681115b15611b59576119f66106b4866080015185815181106119de576119de6132e9565b60200260200101516001600160801b03168484612afa565b6080860151611a066001866132bc565b81518110611a1657611a166132e9565b60200260200101906001600160801b031690816001600160801b031681525050611a8d611a828660a001518581518110611a5257611a526132e9565b60200260200101516103e8611a67919061336d565b6001600160801b0316611a7c846103e561339c565b85612a22565b6106b4906001613338565b60a0860151611a9d6001866132bc565b81518110611aad57611aad6132e9565b6001600160801b039092166020928302919091019091015260c0850151660aa87bee53800090611ade6001866132bc565b81518110611aee57611aee6132e9565b6001600160801b03909216602092830291909101909101526060850151600090611b196001866132bc565b81518110611b2957611b296132e9565b60200260200101906002811115611b4257611b42613131565b90816002811115611b5557611b55613131565b9052505b50505b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d78888611b9a6001876132bc565b818110611ba957611ba96132e9565b9050602002016020810190611bbe9190613314565b898986818110611bd057611bd06132e9565b9050602002016020810190611be59190613314565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c58919081019061345b565b905060008151118015611c915750600084608001518381518110611c7e57611c7e6132e9565b60200260200101516001600160801b0316115b156121df5760005b81518110156121dd57818181518110611cb457611cb46132e9565b6020026020010151606001516121cb576000888885818110611cd857611cd86132e9565b9050602002016020810190611ced9190613314565b6001600160a01b0316838381518110611d0857611d086132e9565b6020026020010151602001516001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d759190613350565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635bdd4b7c848481518110611dc257611dc26132e9565b60200260200101516020015188608001518781518110611de457611de46132e9565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b0316602482015283151560448201526064016040805180830381865afa925050508015611e64575060408051601f3d908101601f19168201909252611e619181019061353e565b60015b611e6d576121c9565b8115801590611ee557506080880151611e876001886132bc565b81518110611e9757611e976132e9565b60200260200101516001600160801b0316821080611ee557506080880151611ec06001886132bc565b81518110611ed057611ed06132e9565b60200260200101516001600160801b03166000145b156121c657611ef3826129f3565b6080890151611f036001896132bc565b81518110611f1357611f136132e9565b60200260200101906001600160801b031690816001600160801b031681525050848481518110611f4557611f456132e9565b6020026020010151602001518860200151600188611f6391906132bc565b81518110611f7357611f736132e9565b60200260200101906001600160a01b031690816001600160a01b031681525050848481518110611fa557611fa56132e9565b60200260200101516000015161ffff168860400151600188611fc791906132bc565b81518110611fd757611fd76132e9565b60209081029190910101526060880151600190611ff482896132bc565b81518110612004576120046132e9565b6020026020010190600281111561201d5761201d613131565b9081600281111561203057612030613131565b815250506000858581518110612048576120486132e9565b6020026020010151602001516001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613562565b925050506120c2826129f3565b61211e8a60a0015189815181106120db576120db6132e9565b60200260200101516001600160801b0316838c6040015160018c6120ff91906132bc565b8151811061210f5761210f6132e9565b60200260200101518815612aae565b6121289190613750565b60a08a015161213860018a6132bc565b81518110612148576121486132e9565b6001600160801b039092166020928302919091019091015260808901516121849061217460018a6132bc565b81518110610dca57610dca6132e9565b60c08a015161219460018a6132bc565b815181106121a4576121a46132e9565b60200260200101906001600160801b031690816001600160801b031681525050505b50505b505b806121d5816135c8565b915050611c99565b505b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d7898961221d6001886132bc565b81811061222c5761222c6132e9565b90506020020160208101906122419190613314565b8a8a87818110612253576122536132e9565b90506020020160208101906122689190613314565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa1580156122b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122db91908101906135e3565b9050600081511180156123145750600085608001518481518110612301576123016132e9565b60200260200101516001600160801b0316115b156128795760005b815181101561287757818181518110612337576123376132e9565b60200260200101516060015161286557600089898681811061235b5761235b6132e9565b90506020020160208101906123709190613314565b6001600160a01b031683838151811061238b5761238b6132e9565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190613350565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c848481518110612445576124456132e9565b60200260200101516020015189608001518881518110612467576124676132e9565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156124e8575060408051601f3d908101601f191682019092526124e5918101906136c1565b60015b6124f157612863565b6001600160801b03821615801561251057506001600160801b03831615155b801561258e575060808a015161252760018a6132bc565b81518110612537576125376132e9565b60200260200101516001600160801b0316836001600160801b0316108061258e575060808a015161256960018a6132bc565b81518110612579576125796132e9565b60200260200101516001600160801b03166000145b1561285f5760808a015183906125a560018b6132bc565b815181106125b5576125b56132e9565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106125e7576125e76132e9565b6020026020010151602001518a6020015160018a61260591906132bc565b81518110612615576126156132e9565b60200260200101906001600160a01b031690816001600160a01b031681525050858581518110612647576126476132e9565b60200260200101516000015161ffff168a6040015160018a61266991906132bc565b81518110612679576126796132e9565b602090810291909101015260608a015160029061269760018b6132bc565b815181106126a7576126a76132e9565b602002602001019060028111156126c0576126c0613131565b908160028111156126d3576126d3613131565b8152505060008686815181106126eb576126eb6132e9565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127589190613703565b9050816127b78c60a001518b81518110612774576127746132e9565b60200260200101516001600160801b0316838e6040015160018e61279891906132bc565b815181106127a8576127a86132e9565b60200260200101518915612aae565b6127c19190613750565b60a08c01516127d160018c6132bc565b815181106127e1576127e16132e9565b6001600160801b039092166020928302919091019091015260808b015161281d9061280d60018c6132bc565b81518110611412576114126132e9565b60c08c015161282d60018c6132bc565b8151811061283d5761283d6132e9565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b8061286f816135c8565b91505061231c565b505b505080806128869061377b565b915050611771565b600080600061289d8585612b96565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290591906137b0565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b03161461294a57808261294d565b81815b90999098509650505050505050565b60008361297c5760405163b229ed3360e01b815260040160405180910390fd5b821580612987575081155b156129a5576040516398c59a2960e01b815260040160405180910390fd5b60006129b3856103e561339c565b905060006129c1848361339c565b90506000826129d2876103e861339c565b6129dc9190613338565b90506129e881836135a6565b979650505050505050565b806001600160801b0381168114612a1d57604051632f45db3d60e21b815260040160405180910390fd5b919050565b600083612a425760405163b229ed3360e01b815260040160405180910390fd5b821580612a4d575081155b15612a6b576040516398c59a2960e01b815260040160405180910390fd5b82612a76838661339c565b612a8091906135a6565b949350505050565b8062ffffff81168114612a1d57604051639b63641560e01b815260040160405180910390fd5b60008115612ad757612ad06106b4866080612ac98888612c22565b9190612c5d565b9050612a80565b612af16106b46080612ae98787612c22565b889190612cca565b95945050505050565b600083612b1a5760405163b229ed3360e01b815260040160405180910390fd5b821580612b25575081155b15612b43576040516398c59a2960e01b815260040160405180910390fd5b6000612b4f858561339c565b612b5b906103e861339c565b90506000612b6986856132bc565b612b75906103e561339c565b9050612b8181836135a6565b612b8c906001613338565b9695505050505050565b600080826001600160a01b0316846001600160a01b03161415612bcc57604051630df4665760e21b815260040160405180910390fd5b826001600160a01b0316846001600160a01b031610612bec578284612bef565b83835b90925090506001600160a01b038216612c1b576040516304cda58760e51b815260040160405180910390fd5b9250929050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901612af18282612cf4565b6000806000612c6c8686612f57565b9150915081600014612c82578360ff1682901c92505b80156114a757600160ff85161b8110612cae57604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90612b8c9087906001901b868585612f76565b6000808083612d0c5750600160801b9150612f519050565b50826000811215612d1e579015906000035b62100000811015612f0e57600160801b9250846001600160801b03811115612d4857911591600019045b6001821615612d595792830260801c925b800260801c6002821615612d6f5792830260801c925b800260801c6004821615612d855792830260801c925b800260801c6008821615612d9b5792830260801c925b800260801c6010821615612db15792830260801c925b800260801c6020821615612dc75792830260801c925b800260801c6040821615612ddd5792830260801c925b8002608090811c90821615612df45792830260801c925b800260801c610100821615612e0b5792830260801c925b800260801c610200821615612e225792830260801c925b800260801c610400821615612e395792830260801c925b800260801c610800821615612e505792830260801c925b800260801c611000821615612e675792830260801c925b800260801c612000821615612e7e5792830260801c925b800260801c614000821615612e955792830260801c925b800260801c618000821615612eac5792830260801c925b800260801c62010000821615612ec45792830260801c925b800260801c62020000821615612edc5792830260801c925b800260801c62040000821615612ef45792830260801c925b800260801c62080000821615612f0c5792830260801c925b505b82612f3a57604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b81612f455782612af1565b612af1836000196135a6565b92915050565b6000806000198385098385029250828110838203039150509250929050565b600081612f9457838381612f8c57612f8c613590565b049050612af1565b838210612fb4576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b038116811461303457600080fd5b50565b60008060006040848603121561304c57600080fd5b833567ffffffffffffffff8082111561306457600080fd5b818601915086601f83011261307857600080fd5b81358181111561308757600080fd5b8760208260051b850101111561309c57600080fd5b602092830195509350508401356130b28161301f565b809150509250925092565b600081518084526020808501945080840160005b838110156130f65781516001600160a01b0316875295820195908201906001016130d1565b509495945050505050565b600081518084526020808501945080840160005b838110156130f657815187529582019590820190600101613115565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156131945782516003811061318257634e487b7160e01b83526021600452602483fd5b8852968301969183019160010161315c565b50959695505050505050565b600081518084526020808501945080840160005b838110156130f65781516001600160801b0316875295820195908201906001016131b4565b602081526000825160e060208401526131f66101008401826130bd565b90506020840151601f198085840301604086015261321483836130bd565b925060408601519150808584030160608601526132318383613101565b9250606086015191508085840301608086015261324e8383613147565b925060808601519150808584030160a086015261326b83836131a0565b925060a08601519150808584030160c086015261328883836131a0565b925060c08601519150808584030160e086015250612af182826131a0565b634e487b7160e01b600052601160045260246000fd5b6000828210156132ce576132ce6132a6565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461303457600080fd5b60006020828403121561332657600080fd5b8135613331816132ff565b9392505050565b6000821982111561334b5761334b6132a6565b500190565b60006020828403121561336257600080fd5b8151613331816132ff565b60006001600160801b0380831681851681830481118215151615613393576133936132a6565b02949350505050565b60008160001904831182151516156133b6576133b66132a6565b500290565b6040516080810167ffffffffffffffff811182821017156133de576133de6132d3565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561340d5761340d6132d3565b604052919050565b600067ffffffffffffffff82111561342f5761342f6132d3565b5060051b60200190565b805161ffff81168114612a1d57600080fd5b80518015158114612a1d57600080fd5b6000602080838503121561346e57600080fd5b825167ffffffffffffffff81111561348557600080fd5b8301601f8101851361349657600080fd5b80516134a96134a482613415565b6133e4565b81815260079190911b820183019083810190878311156134c857600080fd5b928401925b828410156129e857608084890312156134e65760008081fd5b6134ee6133bb565b6134f785613439565b815285850151613506816132ff565b81870152604061351786820161344b565b90820152606061352886820161344b565b90820152825260809390930192908401906134cd565b6000806040838503121561355157600080fd5b505080516020909101519092909150565b60008060006060848603121561357757600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601260045260246000fd5b6000826135c357634e487b7160e01b600052601260045260246000fd5b500490565b60006000198214156135dc576135dc6132a6565b5060010190565b600060208083850312156135f657600080fd5b825167ffffffffffffffff81111561360d57600080fd5b8301601f8101851361361e57600080fd5b805161362c6134a482613415565b81815260079190911b8201830190838101908783111561364b57600080fd5b928401925b828410156129e857608084890312156136695760008081fd5b6136716133bb565b61367a85613439565b815285850151613689816132ff565b81870152604061369a86820161344b565b9082015260606136ab86820161344b565b9082015282526080939093019290840190613650565b6000806000606084860312156136d657600080fd5b83516136e18161301f565b60208501519093506136f28161301f565b60408501519092506130b28161301f565b60006020828403121561371557600080fd5b815162ffffff8116811461333157600080fd5b60006001600160801b0383811690831681811015613748576137486132a6565b039392505050565b60006001600160801b03808316818516808303821115613772576137726132a6565b01949350505050565b60008161378a5761378a6132a6565b506000190190565b80516dffffffffffffffffffffffffffff81168114612a1d57600080fd5b6000806000606084860312156137c557600080fd5b6137ce84613792565b92506137dc60208501613792565b9150604084015163ffffffff811681146130b257600080fdfea2646970667358221220d3c62279653108d7faf9459aa96d0045357f1b44958ad1cec868896c414d39ce64736f6c634300080a00330000000000000000000000004f8bdc85e3eec5b9de67097c3f59b6db025d998600000000000000000000000043646a8e839b2f2766392c1bf8f60f6e587b69600000000000000000000000008e42f2f4101563bf679975178e880fd87d3efd4e000000000000000000000000b66a2704a0dabc1660941628be987b4418f7a9e8000000000000000000000000b4315e873dbcf96ffd0acd8ea43f689d8c20fb30