0 txs
13 calls
constructor
constructor(address pendleRouter)
functions
getAdapterId
viewfunction getAdapterId() view returns (bytes4)
getPendleRouter
viewfunction getPendleRouter() view returns (address)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
addLiquiditySingleToken
nonpayablefunction addLiquiditySingleToken(address market, tuple approxParams, tuple tokenInput, uint256 minLpOut) returns (uint256 netLpOut)
addLiquiditySingleTokenAllExcept
nonpayablefunction addLiquiditySingleTokenAllExcept(address market, tuple approxParams, tuple tokenInput, uint256 minLpOut) returns (uint256 netLpOut)
redeemPt
nonpayablefunction redeemPt(address market, uint256 ptIn, tuple tokenOut) returns (uint256 netTokenOut)
redeemPtAllExcept
nonpayablefunction redeemPtAllExcept(address market, uint256 exceptPt, tuple tokenOut) returns (uint256 netTokenOut)
redeemRewards
nonpayablefunction redeemRewards(address pendleMarket) returns (address[] assets, uint256[] rewards)
removeLiquiditySingleToken
nonpayablefunction removeLiquiditySingleToken(address market, uint256 lpAmount, tuple tokenOut) returns (uint256 netTokenOut)
removeLiquiditySingleTokenAllExcept
nonpayablefunction removeLiquiditySingleTokenAllExcept(address market, uint256 except, tuple tokenOut) returns (uint256 netTokenOut)
rollOverPt
nonpayablefunction rollOverPt(address oldMarket, address newMarket, address token, uint256 ptAmount, uint256 minNewPtOut) returns (uint256 netPtOut)
rollOverPtAllExcept
nonpayablefunction rollOverPtAllExcept(address oldMarket, address newMarket, address token, uint256 exceptPt, uint256 minNewPtOut) returns (uint256 netPtOut)
swapExactPtForToken
nonpayablefunction swapExactPtForToken(address market, uint256 exactPtIn, tuple tokenOut) returns (uint256 netTokenOut)
swapExactPtForTokenAllExcept
nonpayablefunction swapExactPtForTokenAllExcept(address market, uint256 exceptPt, tuple tokenOut) returns (uint256 netTokenOut)
swapExactTokenForPt
nonpayablefunction swapExactTokenForPt(address market, tuple approxParams, tuple tokenInput, uint256 minPtOut) returns (uint256 netPtOut)
swapExactTokenForPtAllExcept
nonpayablefunction swapExactTokenForPtAllExcept(address market, tuple approxParams, tuple tokenInput, uint256 minPtOut) returns (uint256 netPtOut)
swapTokenToToken
nonpayablefunction swapTokenToToken(address pendleSwap, tuple swap, uint256 netSwap) returns (uint256)
swapTokenToTokenAllExcept
nonpayablefunction swapTokenToTokenAllExcept(address pendleSwap, tuple swap, uint256 except) returns (uint256)
events
PendleRewardsRedeemed
event PendleRewardsRedeemed(address indexed vault)
Swap
event Swap(address indexed vault, address assetIn, uint256 amountIn, address assetOut, uint256 amountOut)
errors
PendleAdapter__MarketNotExpired
error PendleAdapter__MarketNotExpired()
PendleAdapter__SlippageProtection
error PendleAdapter__SlippageProtection()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60a0346100b057601f6132b938819003918201601f19168301916001600160401b038311848410176100b4578084926020946040528339810103126100b057516001600160a01b0381168082036100b057156100a1576080526040516131f090816100c98239608051818181610861015281816115e301528181611df50152818161211e01528181612327015281816126ac01528181612ce60152612e9d0152f35b63d92e233d60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610cef575080630d68657e14610c55578063180f967214610b9a5780632a11094a14610a645780633cb72906146109cd578063461bb63d146108855780634ac5fa40146108175780634fc0338d1461080457806353fe054a146107eb578063707992cb146107935780637df17add146106575780638e4525dc146105915780639262187b1461035b578063afbb4234146102b9578063b358cb1b1461029d578063b58288d3146101d7578063ee780b04146101bb5763f217018e146100e2575f80fd5b346101a45760246100f236610ef7565b602073ffffffffffffffffffffffffffffffffffffffff61011284611398565b16604051958680927f70a082310000000000000000000000000000000000000000000000000000000082523360048301525afa9384156101b0575f94610172575b602061016a8585610164868a6112e8565b91611503565b604051908152f35b935091906020843d6020116101a8575b8161018f60209383610ff1565b810103126101a4579251929091610164610153565b5f80fd5b3d9150610182565b6040513d5f823e3d90fd5b346101a457602061016a6101ce36611116565b929190916122a3565b346101a4576101e536611116565b916024602073ffffffffffffffffffffffffffffffffffffffff845116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523360048301525afa9081156101b0575f91610262575b602061016a8686868a8761025b878501918251906112e8565b90526122a3565b93929190506020843d602011610295575b8161028060209383610ff1565b810103126101a4579251919290916020610242565b3d9150610273565b346101a457602061016a6102b036611116565b92919091612098565b346101a4576102c736610e63565b604051917f2c8ce6bc00000000000000000000000000000000000000000000000000000000835260608360048173ffffffffffffffffffffffffffffffffffffffff88165afa80156101b05760209461016a945f92610327575b50612c57565b61034a91925060603d606011610354575b6103428183610ff1565b810190611275565b5090509086610321565b503d610338565b346101a45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a45760043573ffffffffffffffffffffffffffffffffffffffff81168091036101a457604051907fc4f59f9b0000000000000000000000000000000000000000000000000000000082525f82600481845afa9182156101b0575f926104dd575b505f80916024604051809481937f9262187b0000000000000000000000000000000000000000000000000000000083523360048401525af19081156101b0575f916104bb575b5060405190337f382054e9cf52a650ec7b184c1984a0af249b632ce439a7e6dc7568088d52880b5f80a2604082016040835283518091526020606084019401905f5b81811061048f57848061048b88878382036020850152611242565b0390f35b825173ffffffffffffffffffffffffffffffffffffffff16865260209586019590920191600101610470565b6104d791503d805f833e6104cf8183610ff1565b8101906113b9565b8261042e565b9091503d805f833e6104ef8183610ff1565b8101906020818303126101a45780519067ffffffffffffffff82116101a457019080601f830112156101a45781519061052782611322565b926105356040519485610ff1565b82845260208085019360051b8201019182116101a457602001915b8183106105645750919291505f90506103e8565b825173ffffffffffffffffffffffffffffffffffffffff811681036101a457815260209283019201610550565b346101a45761059f36611116565b916024602073ffffffffffffffffffffffffffffffffffffffff845116604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523360048301525afa9081156101b0575f9161061c575b602061016a8686868a87610615878501918251906112e8565b9052612098565b93929190506020843d60201161064f575b8161063a60209383610ff1565b810103126101a45792519192909160206105fc565b3d915061062d565b346101a45761066536610e63565b90916040517f2c8ce6bc00000000000000000000000000000000000000000000000000000000815260608160048173ffffffffffffffffffffffffffffffffffffffff86165afa9081156101b0575f905f92610770575b50604051947f70a0823100000000000000000000000000000000000000000000000000000000865233600487015260208660248173ffffffffffffffffffffffffffffffffffffffff86165afa9586156101b0575f96610730575b602061016a8787878761072a888e6112e8565b92612d9d565b9550939291906020863d602011610768575b8161074f60209383610ff1565b810103126101a45794519492939192909161072a610717565b3d9150610742565b905061078b915060603d606011610354576103428183610ff1565b9150856106bc565b346101a4575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a45760206040517f94dfa9d4000000000000000000000000000000000000000000000000000000008152f35b346101a457602061016a6107fe36610e63565b91611d82565b346101a457602061016a61016436610ef7565b346101a4575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a45761089336610dcc565b92604094929194517f2c8ce6bc00000000000000000000000000000000000000000000000000000000815260608160048173ffffffffffffffffffffffffffffffffffffffff88165afa9081156101b0575f905f926109aa575b50604051967f70a0823100000000000000000000000000000000000000000000000000000000885233600489015260208860248173ffffffffffffffffffffffffffffffffffffffff86165afa9788156101b0575f98610964575b509061095e61016a9796959493926020996112e8565b946125c2565b97509594939291906020883d6020116109a2575b8161098560209383610ff1565b810103126101a4579651969495939492939192909161095e610948565b3d9150610978565b90506109c5915060603d606011610354576103428183610ff1565b9150876108ed565b346101a4576109db36610e63565b6040517f2c8ce6bc000000000000000000000000000000000000000000000000000000008152929160608460048173ffffffffffffffffffffffffffffffffffffffff87165afa80156101b05760209461016a945f915f93610a3e575b50612d9d565b909250610a5a915060603d606011610354576103428183610ff1565b9150909187610a38565b346101a457610a7236610e63565b90916040517f2c8ce6bc00000000000000000000000000000000000000000000000000000000815260608160048173ffffffffffffffffffffffffffffffffffffffff86165afa9081156101b0575f91610b78575b50604051937f70a0823100000000000000000000000000000000000000000000000000000000855233600486015260208560248173ffffffffffffffffffffffffffffffffffffffff86165afa9485156101b0575f95610b3a575b602061016a868686610b34878c6112e8565b91612c57565b94509291906020853d602011610b70575b81610b5860209383610ff1565b810103126101a4579351939192909190610b34610b22565b3d9150610b4b565b610b91915060603d606011610354576103428183610ff1565b50905084610ac7565b346101a457610ba836610e63565b9091604051927f70a0823100000000000000000000000000000000000000000000000000000000845233600485015260208460248173ffffffffffffffffffffffffffffffffffffffff86165afa9384156101b0575f94610c1b575b602061016a8585610c15868a6112e8565b90611d82565b935091906020843d602011610c4d575b81610c3860209383610ff1565b810103126101a4579251929091610c15610c04565b3d9150610c2b565b346101a457610c6336610dcc565b91604094939451947f2c8ce6bc00000000000000000000000000000000000000000000000000000000865260608660048173ffffffffffffffffffffffffffffffffffffffff89165afa80156101b05760209661016a965f915f93610cc9575b506125c2565b909250610ce5915060603d606011610354576103428183610ff1565b9150909189610cc3565b346101a45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a457600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101a457817f707992cb0000000000000000000000000000000000000000000000000000000060209314908115610d81575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610d7a565b359073ffffffffffffffffffffffffffffffffffffffff821682036101a457565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126101a45760043573ffffffffffffffffffffffffffffffffffffffff811681036101a4579060243573ffffffffffffffffffffffffffffffffffffffff811681036101a4579060443573ffffffffffffffffffffffffffffffffffffffff811681036101a457906064359060843590565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101a45760043573ffffffffffffffffffffffffffffffffffffffff811681036101a45791602435916044359067ffffffffffffffff82116101a4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8260a0920301126101a45760040190565b9060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101a45760043573ffffffffffffffffffffffffffffffffffffffff811681036101a457916024359067ffffffffffffffff82116101a4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826080920301126101a4576004019060443590565b6080810190811067ffffffffffffffff821117610fa857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610fa857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610fa857604052565b359081151582036101a457565b91906080838203126101a4576040519061105882610f8c565b81938035600b8110156101a457835261107360208201610dab565b6020840152604081013567ffffffffffffffff81116101a457810182601f820112156101a45780359167ffffffffffffffff8311610fa857604051936110e160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8701160186610ff1565b838552602084840101116101a4576060935f60208561111196828997018386013783010152604086015201611032565b910152565b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101a45760043573ffffffffffffffffffffffffffffffffffffffff811681036101a4579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8301126101a45760249160c43567ffffffffffffffff81116101a45760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82840301126101a457604051916111da83610fd5565b6111e682600401610dab565b8352602482013560208401526111fe60448301610dab565b604084015261120f60648301610dab565b606084015260848201359167ffffffffffffffff83116101a457611236920160040161103f565b60808201529060e43590565b90602080835192838152019201905f5b81811061125f5750505090565b8251845260209384019390920191600101611252565b908160609103126101a457805173ffffffffffffffffffffffffffffffffffffffff811681036101a45791602082015173ffffffffffffffffffffffffffffffffffffffff811681036101a45760409092015173ffffffffffffffffffffffffffffffffffffffff811681036101a45790565b919082039182116112f557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b67ffffffffffffffff8111610fa85760051b60200190565b6040519061134782610f8c565b5f6060838281528260208201528160408201520152565b80511561136b5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b3573ffffffffffffffffffffffffffffffffffffffff811681036101a45790565b6020818303126101a45780519067ffffffffffffffff82116101a457019080601f830112156101a45781516113ed81611322565b926113fb6040519485610ff1565b81845260208085019260051b8201019283116101a457602001905b8282106114235750505090565b8151815260209182019101611416565b90600b8210156114405752565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b906114bc818351611433565b73ffffffffffffffffffffffffffffffffffffffff60208301511660208201526060806114f8604085015160806040860152608085019061146d565b930151151591015290565b915f6040928351906115158583610ff1565b600182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501915f5b83811061195657506080823603126101a45785519261155d84610f8c565b61156683610dab565b8452602083019561157687610dab565b602086015287840135948589820152606085013567ffffffffffffffff81116101a4576115a6903690870161103f565b60608201526115b48461135e565b526115be8361135e565b508751916115cc8984610ff1565b60018352366020840137806115e08361135e565b527f00000000000000000000000000000000000000000000000000000000000000009361160c81611398565b333b156101a45789517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091166024820152604481018390525f8160648183335af1801561194c57611930575b508492999391879573ffffffffffffffffffffffffffffffffffffffff6116a06116a694611398565b16613017565b87519889937fa373cf1a00000000000000000000000000000000000000000000000000000000855273ffffffffffffffffffffffffffffffffffffffff60648601911660048601526060602486015282518091526084850190602060848260051b88010194019187905b8c83831061188d57505050505073ffffffffffffffffffffffffffffffffffffffff846117698488947ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc84809803016044850152611242565b0393165af1948515611883578295611867575b506117868561135e565b511061183f575061180561183b939261183173ffffffffffffffffffffffffffffffffffffffff6117b961183695611398565b16916117c48661135e565b5190517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015233602482015260448101919091529283906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610ff1565b613133565b61135e565b5190565b807fe6adec0f0000000000000000000000000000000000000000000000000000000060049252fd5b61187c9195503d8084833e6104cf8183610ff1565b935f61177c565b84513d84823e3d90fd5b60209295979950866080606061191d937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c8796999d6001999c030189528c519073ffffffffffffffffffffffffffffffffffffffff825116855273ffffffffffffffffffffffffffffffffffffffff878301511687860152808201519085015201519181606082015201906114b0565b970192019201928b959389979593611710565b6116a6929197505f61194191610ff1565b5f9690915084611677565b8a513d5f823e3d90fd5b602090875161196481610f8c565b5f81525f838201525f8982015261197961133a565b60608201528282850101520161153f565b908160609103126101a4578051916040602083015192015190565b73ffffffffffffffffffffffffffffffffffffffff6119c382610dab565b1682526020810135602083015273ffffffffffffffffffffffffffffffffffffffff6119f160408301610dab565b16604083015273ffffffffffffffffffffffffffffffffffffffff611a1860608301610dab565b16606083015260808101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81823603018112156101a457019060a060808201528135600b8110156101a457611a719060a0830190611433565b73ffffffffffffffffffffffffffffffffffffffff611a9260208401610dab565b1660c082015260408201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112156101a45782019160208335930167ffffffffffffffff84116101a45783360381136101a45783611b3860607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09461014097601f95608060e08a0152816101208a0152898901375f88858901015201611032565b15156101008501520116010190565b90806020835191828152016020808360051b8501019401925f905b838210611b7157505050505090565b90919293947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301845285518051606083528051606084015260208101516080840152604081015160a084015260608101519160048310156114405783604080611cb4611ca461016060209897899860c060019c015273ffffffffffffffffffffffffffffffffffffffff60808201511660e088015273ffffffffffffffffffffffffffffffffffffffff60a08201511661010088015273ffffffffffffffffffffffffffffffffffffffff60c08201511661012088015273ffffffffffffffffffffffffffffffffffffffff60e082015116610140880152610100810151828801526101208101516101808801526101408101516101a088015201516101806101c08701526101e086019061146d565b868601518582038887015261146d565b9301519101529701959401920190611b62565b611d309173ffffffffffffffffffffffffffffffffffffffff8251168152602082015160208201526080611d1f611d0d604085015160a0604086015260a0850190611b47565b60608501518482036060860152611b47565b92015190608081840391015261146d565b90565b93909273ffffffffffffffffffffffffffffffffffffffff611d749381611d309896168752166020860152604085015260a0606085015260a08401906119a5565b916080818403910152611cc7565b909291333b156101a4576040517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83166024820152604481018590525f9490858160648183335af180156101b057611f85575b507f000000000000000000000000000000000000000000000000000000000000000091611e36828473ffffffffffffffffffffffffffffffffffffffff8716613017565b60608160405194611e4686610fd5565b8886528860208701528260408701528280870152826080870152848973ffffffffffffffffffffffffffffffffffffffff89611eb26040519a8b97889687947f60da08600000000000000000000000000000000000000000000000000000000086523360048701611d33565b0393165af1928315611f7a578693611f47575b5082956020820135841061183f575090611f42611f037f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a9493611398565b926040519384933397859094939273ffffffffffffffffffffffffffffffffffffffff9060609382608085019816845260208401521660408201520152565b0390a2565b611f6a91935060603d606011611f73575b611f628183610ff1565b81019061198a565b5050915f611ec5565b503d611f58565b6040513d88823e3d90fd5b611f929195505f90610ff1565b5f935f611df2565b9060a06080611d309373ffffffffffffffffffffffffffffffffffffffff81511684526020810151602085015273ffffffffffffffffffffffffffffffffffffffff604082015116604085015273ffffffffffffffffffffffffffffffffffffffff606082015116606085015201519181608082015201906114b0565b9491936120899373ffffffffffffffffffffffffffffffffffffffff611d30989681608095168952166020880152604087015280356060870152602081013582870152604081013560a0870152606081013560c0870152013560e0850152610140610100850152610140840190611f9a565b91610120818403910152611cc7565b909193929380515f6020830194855192333b156101a4576040517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116602482015260448101939093525f8360648183335af19283156101b057849361228d575b506060907f000000000000000000000000000000000000000000000000000000000000000061216173ffffffffffffffffffffffffffffffffffffffff865116828a5191613017565b898473ffffffffffffffffffffffffffffffffffffffff896121d960405161218881610fd5565b84815284602082015288604082015288808201528860808201526040519b8c98899788957f12599ac60000000000000000000000000000000000000000000000000000000087523360048801612017565b0393165af192831561228057819361225d575b508296831061183f57505192516040805173ffffffffffffffffffffffffffffffffffffffff958616815260208101929092529290931691830191909152606082015233907f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a908060808101611f42565b61227791935060603d606011611f7357611f628183610ff1565b5050915f6121ec565b50604051903d90823e3d90fd5b61229a9192505f90610ff1565b5f906060612118565b909392938251905f926020850192835190333b156101a4576040517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116602482015260448101919091525f8160648183335af180156101b05761257f575b506060857f000000000000000000000000000000000000000000000000000000000000000061236a73ffffffffffffffffffffffffffffffffffffffff83511682885191613017565b6040519461237786610fd5565b87865287602087015283604087015283808701528360808701528773ffffffffffffffffffffffffffffffffffffffff8c6123e3604051998a97889687947fc81f847a0000000000000000000000000000000000000000000000000000000086528c3360048801612017565b0393165af1918215612574578492612551575b508196821061252957606073ffffffffffffffffffffffffffffffffffffffff916004604051809481937f2c8ce6bc000000000000000000000000000000000000000000000000000000008352165afa93841561251d57936124bf575b50925190516040805173ffffffffffffffffffffffffffffffffffffffff938416815260208101929092529290911691810191909152606081019190915233907f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a908060808101611f42565b7f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a935073ffffffffffffffffffffffffffffffffffffffff612512611f429260603d606011610354576103428183610ff1565b509050945050612453565b604051903d90823e3d90fd5b6004847fe6adec0f000000000000000000000000000000000000000000000000000000008152fd5b61256b91925060603d606011611f7357611f628183610ff1565b5050905f6123f6565b6040513d86823e3d90fd5b61258c9194505f90610ff1565b5f925f612321565b908160209103126101a4575180151581036101a45790565b91908260409103126101a4576020825192015190565b9073ffffffffffffffffffffffffffffffffffffffff909796979592951692333b156101a4576040517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff85166024820152604481018490525f9590868160648183335af180156101b057612c42575b5061265761133a565b9673ffffffffffffffffffffffffffffffffffffffff6040519261267a84610fd5565b16808352876020840152604083015286606083015287608083015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000946126d787878a613017565b166040517f2f13b60c000000000000000000000000000000000000000000000000000000008152602081600481855afa908115612c37578991612c08575b5015612b00575073ffffffffffffffffffffffffffffffffffffffff604051917f47f1de2200000000000000000000000000000000000000000000000000000000835230600484015216602482015284604482015260806064820152604081806127826084820186611f9a565b03818a73ffffffffffffffffffffffffffffffffffffffff89165af1908115612af55791849392918b95928991612ac5575b50905b805173ffffffffffffffffffffffffffffffffffffffff16996040519a6127dd8c610fd5565b808c528360208d015260408c01528960608c015260808b01525173ffffffffffffffffffffffffffffffffffffffff169161281792613017565b8560405161282481610fd5565b818152816020820152816040820152816060820152608001526040519061284a82610fd5565b86825260208201977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff895260408301908882526060840161010081526080850190655af3107a40008252604051936128a185610fd5565b8b85528b60208601526040850160609052606085016060905260808501606090526040519c8d9788977fc81f847a0000000000000000000000000000000000000000000000000000000089523360048a015273ffffffffffffffffffffffffffffffffffffffff169a8b60248a015260448901525160648801525160848701525160a48601525160c48501525160e484015261010483016101409052610144830161294b91611f9a565b8281037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161012484015261297f91611cc7565b039173ffffffffffffffffffffffffffffffffffffffff169181875a94606095f1948515612574578495612aa2575b5084968510612529576060600491604051928380927f2c8ce6bc0000000000000000000000000000000000000000000000000000000082525afa93841561251d5793612a5a575b506040805173ffffffffffffffffffffffffffffffffffffffff938416815260208101929092529190921690820152606081019190915233907f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a908060808101611f42565b7f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a9350612a98611f429160603d606011610354576103428183610ff1565b50905093506129f5565b612abc91955060603d606011611f7357611f628183610ff1565b5050935f6129ae565b612ae7915060403d604011612aee575b612adf8183610ff1565b8101906125ac565b505f6127b4565b503d612ad5565b6040513d89823e3d90fd5b604051612bae9250606091612b1482610fd5565b898252896020830152826040830152828083015282608083015260405193849283927f594a88cc000000000000000000000000000000000000000000000000000000008452306004850152602484015289604484015260a06064840152612b7e60a4840188611f9a565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016084850152611cc7565b03818a73ffffffffffffffffffffffffffffffffffffffff89165af1908115612af55791849392918b95928991612be7575b50906127b7565b612c00915060603d606011611f7357611f628183610ff1565b50505f612be0565b612c2a915060203d602011612c30575b612c228183610ff1565b810190612594565b5f612715565b503d612c18565b6040513d8b823e3d90fd5b612c4f9196505f90610ff1565b5f945f61264e565b9073ffffffffffffffffffffffffffffffffffffffff909493941691333b156101a4576040517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff84166024820152604481018290525f9590868160648183335af180156101b057612d88575b506060817f0000000000000000000000000000000000000000000000000000000000000000612d10858289613017565b848973ffffffffffffffffffffffffffffffffffffffff60405198612d348a610fd5565b828a528260208b01528660408b015286808b01528660808b0152611eb26040519a8b97889687947f594a88cc0000000000000000000000000000000000000000000000000000000086523360048701611d33565b612d959196505f90610ff1565b5f945f612ce0565b90602073ffffffffffffffffffffffffffffffffffffffff9695929493946004604051809981937f2f13b60c000000000000000000000000000000000000000000000000000000008352165afa80156101b0575f965f91612ff8575b5015612fd05773ffffffffffffffffffffffffffffffffffffffff1692333b156101a4576040517f19eacfeb00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff85166024820152604481018490525f8160648183335af180156101b057612f9f575b5090604073ffffffffffffffffffffffffffffffffffffffff93927f0000000000000000000000000000000000000000000000000000000000000000612ec7858289613017565b82519586927f47f1de2200000000000000000000000000000000000000000000000000000000845233600485015216602483015284604483015260806064830152818973ffffffffffffffffffffffffffffffffffffffff82612f2d60848201896119a5565b0393165af1928315611f7a578693612f7d575082956020820135841061183f575090611f42611f037f5380cf97d8f645d3c4896da60c053458dca03a3a31cec642ac80e1ddf0d8d02a9493611398565b612f9791935060403d604011612aee57612adf8183610ff1565b50915f611ec5565b73ffffffffffffffffffffffffffffffffffffffff93929196505f612fc391610ff1565b60405f9691929350612e80565b7fdbb3337a000000000000000000000000000000000000000000000000000000005f5260045ffd5b613011915060203d602011612c3057612c228183610ff1565b5f612df9565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff85166024840152604480840196909652948252929390925f9061307c606486610ff1565b84519082855af15f513d82613101575b50501561309857505050565b6118316130ff9373ffffffffffffffffffffffffffffffffffffffff604051917f095ea7b30000000000000000000000000000000000000000000000000000000060208401521660248201525f6044820152604481526130f9606482610ff1565b82613133565b565b90915061312b575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f8061308c565b600114613124565b905f602091828151910182855af1156101b0575f513d6131b1575073ffffffffffffffffffffffffffffffffffffffff81163b155b61316f5750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561316856fea26469706673582212209ce0aa9cfa8cb80fc33e302cafa3a1efbd45614a08d10c42ac53dbf12799a3f864736f6c634300081c0033000000000000000000000000888888888889758f76e7103c6cbf23abbf58f946