@pendle/core-v2 0.5.1-beta-4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/contracts/SuperComposableYield/ISuperComposableYield.sol +2 -0
  2. package/contracts/SuperComposableYield/implementations/RewardManager.sol +35 -20
  3. package/contracts/SuperComposableYield/implementations/SCYBase.sol +39 -19
  4. package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +26 -14
  5. package/contracts/core/PendleBaseToken.sol +2 -2
  6. package/contracts/core/PendleMarket.sol +145 -61
  7. package/contracts/core/PendleMarketFactory.sol +30 -19
  8. package/contracts/core/{PendleOwnershipToken.sol → PendlePrincipalToken.sol} +14 -2
  9. package/contracts/core/PendleRouter.sol +23 -9
  10. package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +21 -20
  11. package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +22 -16
  12. package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +13 -13
  13. package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +107 -0
  14. package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +14 -15
  15. package/contracts/core/PendleYieldContractFactory.sol +29 -14
  16. package/contracts/core/PendleYieldToken.sol +130 -76
  17. package/contracts/core/RouterStatic.sol +16 -157
  18. package/contracts/core/actions/ActionCallback.sol +36 -18
  19. package/contracts/core/actions/ActionCore.sol +41 -88
  20. package/contracts/core/actions/ActionRedeem.sol +36 -0
  21. package/contracts/core/actions/ActionYT.sol +41 -59
  22. package/contracts/core/actions/base/{ActionSCYAndOTBase.sol → ActionSCYAndPTBase.sol} +59 -45
  23. package/contracts/core/actions/base/{ActionSCYAndYOBase.sol → ActionSCYAndPYBase.sol} +57 -19
  24. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +31 -21
  25. package/contracts/interfaces/IPActionCore.sol +21 -28
  26. package/contracts/interfaces/IPActionRedeem.sol +17 -0
  27. package/contracts/interfaces/IPActionYT.sol +5 -12
  28. package/contracts/interfaces/IPAllAction.sol +2 -2
  29. package/contracts/interfaces/IPMarket.sol +33 -10
  30. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +2 -2
  31. package/contracts/interfaces/IPMarketFactory.sol +3 -1
  32. package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
  33. package/contracts/interfaces/{IPOwnershipToken.sol → IPPrincipalToken.sol} +1 -1
  34. package/contracts/interfaces/IPRouterStatic.sol +7 -82
  35. package/contracts/interfaces/IPYieldContractFactory.sol +10 -2
  36. package/contracts/interfaces/IPYieldToken.sol +14 -5
  37. package/contracts/interfaces/IWstETH.sol +10 -0
  38. package/contracts/libraries/JoeLibrary.sol +1 -1
  39. package/contracts/libraries/math/LogExpMath.sol +1 -1
  40. package/contracts/libraries/math/MarketApproxLib.sol +128 -88
  41. package/contracts/libraries/math/MarketMathAux.sol +13 -13
  42. package/contracts/libraries/math/MarketMathCore.sol +62 -93
  43. package/contracts/libraries/math/Math.sol +14 -2
  44. package/contracts/periphery/PendleGovernanceManager.sol +5 -3
  45. package/package.json +3 -2
  46. package/typechain-types/ActionCallback.ts +5 -5
  47. package/typechain-types/ActionCore.ts +312 -234
  48. package/typechain-types/ActionRedeem.ts +125 -0
  49. package/typechain-types/ActionSCYAndPYBase.ts +223 -0
  50. package/typechain-types/ActionSCYAndYOBase.ts +129 -3
  51. package/typechain-types/ActionSCYAndYTBase.ts +149 -3
  52. package/typechain-types/ActionYT.ts +192 -94
  53. package/typechain-types/IPActionCore.ts +183 -231
  54. package/typechain-types/IPActionRedeem.ts +125 -0
  55. package/typechain-types/IPActionYT.ts +43 -91
  56. package/typechain-types/IPAllAction.ts +258 -321
  57. package/typechain-types/IPMarket.ts +150 -50
  58. package/typechain-types/IPMarketAddRemoveCallback.ts +10 -10
  59. package/typechain-types/IPMarketFactory.ts +28 -6
  60. package/typechain-types/IPMarketSwapCallback.ts +5 -5
  61. package/typechain-types/{IPOwnershipToken.ts → IPPrincipalToken.ts} +5 -5
  62. package/typechain-types/IPRouterStatic.ts +50 -530
  63. package/typechain-types/IPYieldContractFactory.ts +85 -19
  64. package/typechain-types/IPYieldToken.ts +138 -37
  65. package/typechain-types/ISuperComposableYield.ts +13 -0
  66. package/typechain-types/IWstETH.ts +149 -0
  67. package/typechain-types/PendleAaveV3SCY.ts +110 -0
  68. package/typechain-types/PendleBaseToken.ts +1 -1
  69. package/typechain-types/PendleBenQiErc20SCY.ts +55 -12
  70. package/typechain-types/PendleBtrflyScy.ts +27 -23
  71. package/typechain-types/PendleGovernanceManager.ts +5 -5
  72. package/typechain-types/PendleMarket.ts +197 -100
  73. package/typechain-types/PendleMarketFactory.ts +96 -34
  74. package/typechain-types/{PendleOwnershipToken.ts → PendlePrincipalToken.ts} +15 -6
  75. package/typechain-types/PendleRouter.ts +19 -0
  76. package/typechain-types/PendleRouterRedeemUpg.ts +125 -0
  77. package/typechain-types/PendleStEthSCY.ts +872 -0
  78. package/typechain-types/PendleYearnVaultScy.ts +27 -23
  79. package/typechain-types/PendleYieldContractFactory.ts +94 -28
  80. package/typechain-types/PendleYieldToken.ts +142 -57
  81. package/typechain-types/RewardManager.ts +21 -0
  82. package/typechain-types/RouterStatic.ts +50 -530
  83. package/typechain-types/SCYBase.ts +25 -0
  84. package/typechain-types/SCYBaseWithRewards.ts +64 -0
  85. package/typechain-types/factories/ActionCallback__factory.ts +2 -2
  86. package/typechain-types/factories/ActionCore__factory.ts +263 -79
  87. package/typechain-types/factories/ActionRedeem__factory.ts +105 -0
  88. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +200 -0
  89. package/typechain-types/factories/ActionSCYAndYOBase__factory.ts +148 -0
  90. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +173 -0
  91. package/typechain-types/factories/ActionYT__factory.ts +265 -56
  92. package/typechain-types/factories/IPActionCore__factory.ts +114 -78
  93. package/typechain-types/factories/IPActionRedeem__factory.ts +70 -0
  94. package/typechain-types/factories/IPActionYT__factory.ts +90 -54
  95. package/typechain-types/factories/IPAllAction__factory.ts +254 -138
  96. package/typechain-types/factories/IPMarketAddRemoveCallback__factory.ts +2 -2
  97. package/typechain-types/factories/IPMarketFactory__factory.ts +26 -1
  98. package/typechain-types/factories/IPMarketSwapCallback__factory.ts +1 -1
  99. package/typechain-types/factories/IPMarket__factory.ts +125 -13
  100. package/typechain-types/factories/{IPOwnershipToken__factory.ts → IPPrincipalToken__factory.ts} +8 -8
  101. package/typechain-types/factories/IPRouterStatic__factory.ts +12 -628
  102. package/typechain-types/factories/IPYieldContractFactory__factory.ts +72 -2
  103. package/typechain-types/factories/IPYieldToken__factory.ts +93 -7
  104. package/typechain-types/factories/ISuperComposableYield__factory.ts +13 -0
  105. package/typechain-types/factories/IWstETH__factory.ts +74 -0
  106. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +97 -3
  107. package/typechain-types/factories/PendleBaseToken__factory.ts +1 -1
  108. package/typechain-types/factories/PendleBenQiErc20SCY__factory.ts +62 -7
  109. package/typechain-types/factories/PendleBtrflyScy__factory.ts +42 -19
  110. package/typechain-types/factories/PendleGovernanceManager__factory.ts +2 -2
  111. package/typechain-types/factories/PendleMarketFactory__factory.ts +66 -15
  112. package/typechain-types/factories/PendleMarket__factory.ts +170 -53
  113. package/typechain-types/factories/PendlePrincipalToken__factory.ts +540 -0
  114. package/typechain-types/factories/PendleRouterRedeemUpg__factory.ts +112 -0
  115. package/typechain-types/factories/PendleRouter__factory.ts +23 -1
  116. package/typechain-types/factories/PendleStEthSCY__factory.ts +716 -0
  117. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +41 -18
  118. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +75 -5
  119. package/typechain-types/factories/PendleYieldToken__factory.ts +102 -33
  120. package/typechain-types/factories/RewardManager__factory.ts +13 -0
  121. package/typechain-types/factories/RouterStatic__factory.ts +13 -629
  122. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +60 -2
  123. package/typechain-types/factories/SCYBase__factory.ts +28 -2
  124. package/typechain-types/hardhat.d.ts +52 -16
  125. package/typechain-types/index.ts +14 -6
  126. package/typechain-types/factories/PendleOwnershipToken__factory.ts +0 -527
@@ -25,7 +25,7 @@ const _abi = [
25
25
  },
26
26
  {
27
27
  internalType: "address",
28
- name: "_OT",
28
+ name: "_PT",
29
29
  type: "address",
30
30
  },
31
31
  {
@@ -77,6 +77,44 @@ const _abi = [
77
77
  name: "Approval",
78
78
  type: "event",
79
79
  },
80
+ {
81
+ anonymous: false,
82
+ inputs: [
83
+ {
84
+ indexed: true,
85
+ internalType: "address",
86
+ name: "user",
87
+ type: "address",
88
+ },
89
+ {
90
+ indexed: false,
91
+ internalType: "uint256",
92
+ name: "interestOut",
93
+ type: "uint256",
94
+ },
95
+ ],
96
+ name: "RedeemInterest",
97
+ type: "event",
98
+ },
99
+ {
100
+ anonymous: false,
101
+ inputs: [
102
+ {
103
+ indexed: true,
104
+ internalType: "address",
105
+ name: "user",
106
+ type: "address",
107
+ },
108
+ {
109
+ indexed: false,
110
+ internalType: "uint256[]",
111
+ name: "amountRewardsOut",
112
+ type: "uint256[]",
113
+ },
114
+ ],
115
+ name: "RedeemReward",
116
+ type: "event",
117
+ },
80
118
  {
81
119
  anonymous: false,
82
120
  inputs: [
@@ -102,9 +140,28 @@ const _abi = [
102
140
  name: "Transfer",
103
141
  type: "event",
104
142
  },
143
+ {
144
+ anonymous: false,
145
+ inputs: [
146
+ {
147
+ indexed: false,
148
+ internalType: "uint256[]",
149
+ name: "amountRewardsOut",
150
+ type: "uint256[]",
151
+ },
152
+ {
153
+ indexed: false,
154
+ internalType: "uint256",
155
+ name: "scyOut",
156
+ type: "uint256",
157
+ },
158
+ ],
159
+ name: "WithdrawFeeToTreasury",
160
+ type: "event",
161
+ },
105
162
  {
106
163
  inputs: [],
107
- name: "OT",
164
+ name: "PT",
108
165
  outputs: [
109
166
  {
110
167
  internalType: "address",
@@ -340,11 +397,16 @@ const _abi = [
340
397
  },
341
398
  {
342
399
  inputs: [],
343
- name: "getScyIndexBeforeExpiry",
400
+ name: "getScyIndex",
344
401
  outputs: [
345
402
  {
346
403
  internalType: "uint256",
347
- name: "res",
404
+ name: "currentIndex",
405
+ type: "uint256",
406
+ },
407
+ {
408
+ internalType: "uint256",
409
+ name: "lastIndexBeforeExpiry",
348
410
  type: "uint256",
349
411
  },
350
412
  ],
@@ -410,13 +472,26 @@ const _abi = [
410
472
  outputs: [
411
473
  {
412
474
  internalType: "bool",
413
- name: "res",
475
+ name: "",
414
476
  type: "bool",
415
477
  },
416
478
  ],
417
479
  stateMutability: "view",
418
480
  type: "function",
419
481
  },
482
+ {
483
+ inputs: [],
484
+ name: "lastRewardUpdateBlock",
485
+ outputs: [
486
+ {
487
+ internalType: "uint256",
488
+ name: "",
489
+ type: "uint256",
490
+ },
491
+ ],
492
+ stateMutability: "view",
493
+ type: "function",
494
+ },
420
495
  {
421
496
  inputs: [],
422
497
  name: "lastScyBalance",
@@ -447,7 +522,7 @@ const _abi = [
447
522
  inputs: [
448
523
  {
449
524
  internalType: "address",
450
- name: "receiverOT",
525
+ name: "receiverPT",
451
526
  type: "address",
452
527
  },
453
528
  {
@@ -456,11 +531,11 @@ const _abi = [
456
531
  type: "address",
457
532
  },
458
533
  ],
459
- name: "mintYO",
534
+ name: "mintPY",
460
535
  outputs: [
461
536
  {
462
537
  internalType: "uint256",
463
- name: "amountYOOut",
538
+ name: "amountPYOut",
464
539
  type: "uint256",
465
540
  },
466
541
  ],
@@ -480,25 +555,6 @@ const _abi = [
480
555
  stateMutability: "view",
481
556
  type: "function",
482
557
  },
483
- {
484
- inputs: [
485
- {
486
- internalType: "uint256",
487
- name: "",
488
- type: "uint256",
489
- },
490
- ],
491
- name: "paramL",
492
- outputs: [
493
- {
494
- internalType: "uint256",
495
- name: "",
496
- type: "uint256",
497
- },
498
- ],
499
- stateMutability: "view",
500
- type: "function",
501
- },
502
558
  {
503
559
  inputs: [
504
560
  {
@@ -569,7 +625,7 @@ const _abi = [
569
625
  type: "address",
570
626
  },
571
627
  ],
572
- name: "redeemYO",
628
+ name: "redeemPY",
573
629
  outputs: [
574
630
  {
575
631
  internalType: "uint256",
@@ -606,6 +662,19 @@ const _abi = [
606
662
  stateMutability: "view",
607
663
  type: "function",
608
664
  },
665
+ {
666
+ inputs: [],
667
+ name: "totalInterestPostExpiry",
668
+ outputs: [
669
+ {
670
+ internalType: "uint256",
671
+ name: "",
672
+ type: "uint256",
673
+ },
674
+ ],
675
+ stateMutability: "view",
676
+ type: "function",
677
+ },
609
678
  {
610
679
  inputs: [],
611
680
  name: "totalProtocolFee",
@@ -747,7 +816,7 @@ const _abi = [
747
816
  ];
748
817
 
749
818
  const _bytecode =
750
- "0x6101406040523480156200001257600080fd5b5060405162002d2738038062002d27833981016040819052620000359162000274565b838383838383816003908051906020019062000053929190620000e4565b50805162000069906004906020840190620000e4565b505050428111620000b15760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e052505050506001600160a01b0391821661010052166101205262000365565b828054620000f29062000328565b90600052602060002090601f01602090048101928262000116576000855562000161565b82601f106200013157805160ff191683800117855562000161565b8280016001018555821562000161579182015b828111156200016157825182559160200191906001019062000144565b506200016f92915062000173565b5090565b5b808211156200016f576000815560010162000174565b80516001600160a01b0381168114620001a257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cf57600080fd5b81516001600160401b0380821115620001ec57620001ec620001a7565b604051601f8301601f19908116603f01168101908282118183101715620002175762000217620001a7565b816040528381526020925086838588010111156200023457600080fd5b600091505b8382101562000258578582018301518183018401529082019062000239565b838211156200026a5760008385830101525b9695505050505050565b60008060008060008060c087890312156200028e57600080fd5b62000299876200018a565b9550620002a9602088016200018a565b60408801519095506001600160401b0380821115620002c757600080fd5b620002d58a838b01620001bd565b95506060890151915080821115620002ec57600080fd5b50620002fb89828a01620001bd565b935050608087015160ff811681146200031357600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200033d57607f821691505b602082108114156200035f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516128f462000433600039600081816104af01528181610863015281816109400152610daa015260008181610286015281816107a7015281816109c101528181610a1d01528181610ad701528181610c8601528181610f3001528181610fd90152818161152801528181611ab001528181611b3f01528181611d7f0152611e7d01526000818161046001528181610b2b015261146a01526000818161051201526106730152600061057f0152600061023101526128f46000f3fe608060405234801561001057600080fd5b50600436106101b75760003560e01c806306fdde03146101bc578063095ea7b3146101da57806318160ddd146101fd57806323b872dd1461020f5780632f13b60c14610222578063313ce5671461022a578063395093511461025b578063443cb7f81461026e57806347bfac62146102815780635ab764ed146102b5578063649a00d61461031d57806366247a721461033057806370a082311461034357806371fd241f146103565780637695caa21461038757806379e6ea161461039157806380a7c9ac146103b157806388611f35146103c457806395d89b41146103cd5780639b1e03f0146103d55780639c9fdc3b146103dd578063a090ee50146103e6578063a457c2d7146103ee578063a9059cbb14610401578063aa1fb97014610414578063afb442e914610427578063bdaba5361461043a578063c45a01551461045b578063c4f59f9b14610482578063c6d6916c14610497578063c836545a146104aa578063d86e0302146104d1578063dcda874d146104da578063dd62ed3e146104fa578063e184c9be1461050d578063f048181414610534578063f1653f6e1461057a575b600080fd5b6101c46105a1565b6040516101d191906123a2565b60405180910390f35b6101ed6101e83660046123ea565b610633565b60405190151581526020016101d1565b6002545b6040519081526020016101d1565b6101ed61021d366004612416565b61064b565b6101ed610671565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101d1565b6101ed6102693660046123ea565b610698565b61020161027c366004612457565b6106d7565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d19190612470565b6103086102c3366004612484565b6001600160a01b039182166000908152600660209081526040808320939094168252918252829020825180840190935280548084526001909101549290910182905291565b604080519283526020830191909152016101d1565b61020161032b3660046124bd565b6106f8565b61020161033e3660046124bd565b610757565b6102016103513660046124bd565b61077a565b6103086103643660046124bd565b6001600160a01b03166000908152600c6020526040902080546001909101549091565b61038f610795565b005b6103a461039f3660046124bd565b610849565b6040516101d19190612515565b6102016103bf3660046124bd565b61085e565b610201600b5481565b6101c46109f6565b610201610a05565b61020160085481565b61038f610ab8565b6101ed6103fc3660046123ea565b610cc1565b6101ed61040f3660046123ea565b610d63565b610201610422366004612484565b610d71565b61038f6104353660046124bd565b610e1a565b61044d6104483660046124bd565b610efa565b6040516101d1929190612528565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b61048a610f2c565b6040516101d19190612541565b61038f6104a53660046124bd565b610fc8565b6102a87f000000000000000000000000000000000000000000000000000000000000000081565b61020160075481565b6102016104e83660046124bd565b600a6020526000908152604090205481565b610201610508366004612484565b611080565b6102017f000000000000000000000000000000000000000000000000000000000000000081565b6103086105423660046124bd565b6001600160a01b0316600090815260056020908152604091829020825180840190935280548084526001909101549290910182905291565b6102017f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546105b09061258e565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc9061258e565b80156106295780601f106105fe57610100808354040283529160200191610629565b820191906000526020600020905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b6000336106418185856110ab565b5060019392505050565b6000336106598582856111cf565b610664858585611249565b60019150505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000042101590565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064190829086906106d29087906125d9565b6110ab565b600981815481106106e757600080fd5b600091825260209091200154905081565b6001600160a01b0381166000908152600c60205260408120548061071f5750600092915050565b6001600160a01b0383166000908152600c602052604090206001015461074d826107488661077a565b611410565b61066a91906125d9565b600061076282610fc8565b61076b82610e1a565b6107748261142f565b92915050565b6001600160a01b031660009081526020819052604090205490565b600061079f610f2c565b9050610846817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107f19190612470565b60206040518083038186803b15801561080957600080fd5b505afa15801561081d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084191906125f1565b61155f565b50565b606061085482610fc8565b61077482836116f5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108ad9190612470565b60206040518083038186803b1580156108c557600080fd5b505afa1580156108d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fd91906125f1565b9050610907610671565b6109295761091d816109183061077a565b6118d2565b905061092930826118e8565b60405163b64761f960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b64761f990610977903090859060040161260a565b600060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506109b281611a30565b91506109e86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484611a43565b6109f0611a99565b50919050565b6060600480546105b09061258e565b6000610a0f610671565b15610a1b575060085490565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aae91906125f1565b6008819055919050565b6000610ac2610f2c565b9050610acc610671565b15610b2157610b21817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107f19190612470565b60008151905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba9190612623565b905060005b82811015610c6c576000848281518110610bdb57610bdb612640565b6020908102919091018101516001600160a01b0381166000908152600a9092526040909120549091508015610c4157610c418482888681518110610c2157610c21612640565b60200260200101516001600160a01b0316611a439092919063ffffffff16565b506001600160a01b03166000908152600a602052604081205580610c6481612656565b915050610bbf565b50600b5415610cbc57600b54610cae906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016908390611a43565b610cb6611a99565b6000600b555b505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610d4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610d5882868684036110ab565b506001949350505050565b600033610641818585611249565b600080610d7c611b3a565b9050610d8781611c30565b9150610d938383611c43565b6040516304a8c77360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312a31dcc90610de1908790869060040161260a565b600060405180830381600087803b158015610dfb57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b505050505092915050565b6001600160a01b0381166000908152600c602052604081205490610e3c610a05565b905080821415610e4b57505050565b81610e70576001600160a01b039092166000908152600c602052604090209190915550565b6000610e7b8461077a565b90506000610ea6610e8c8486612671565b610e968686612690565b610ea09085612671565b90611d1d565b6001600160a01b0386166000908152600c6020526040812060010180549293508392909190610ed69084906125d9565b9091555050506001600160a01b039093166000908152600c60205260409020555050565b60006060610f0783610fc8565b610f1083610e1a565b610f1a83846116f5565b9050610f258361142f565b9150915091565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f8757600080fd5b505afa158015610f9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fc39190810190612710565b905090565b6000610fd3826106f8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016110239190612470565b60206040518083038186803b15801561103b57600080fd5b505afa15801561104f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107391906125f1565b9050610cbc838383611d4c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661110d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d42565b6001600160a01b03821661116e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d42565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111db8484611080565b9050600019811461124357818110156112365760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d42565b61124384848484036110ab565b50505050565b6001600160a01b0383166112ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d42565b6001600160a01b03821661130f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d42565b61131a838383611d6d565b6001600160a01b038316600090815260208190526040902054818110156113925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d42565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906113c99084906125d9565b92505081905550826001600160a01b0316846001600160a01b031660008051602061289f8339815191528460405161140391815260200190565b60405180910390a3611243565b600082611425670de0b6b3a764000084612671565b61066a91906127b9565b6001600160a01b038082166000908152600c60209081526040808320600101805490849055815163dd86fea160e01b815291519394909385937f00000000000000000000000000000000000000000000000000000000000000009092169263dd86fea1926004808301939192829003018186803b1580156114af57600080fd5b505afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e791906125f1565b905060006114f58383611e48565b905080600b600082825461150991906125d9565b9091555061151990508184612690565b935061154f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686611a43565b611557611a99565b505050919050565b611567611e66565b61157082611f08565b600061157a610671565b905060005b835181101561124357600084828151811061159c5761159c612640565b602002602001015190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016115d49190612470565b60206040518083038186803b1580156115ec57600080fd5b505afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162491906125f1565b6001600160a01b0383166000908152600560205260408120600101549192509061164e9083612690565b90508415611689576001600160a01b0383166000908152600a60205260408120805483929061167e9084906125d9565b909155506116c79050565b85156116c7576116998187611d1d565b6001600160a01b038416600090815260056020526040812080549091906116c19084906125d9565b90915550505b506001600160a01b039091166000908152600560205260409020600101556116ee81612656565b905061157f565b60606000611701610f2c565b905080516001600160401b0381111561171c5761171c6126a7565b604051908082528060200260200182016040528015611745578160200160208202803683370190505b50915060005b81518110156118ca57600082828151811061176857611768612640565b6020026020010151905060066000876001600160a01b03166001600160a01b031681526020019081526020016000206000826001600160a01b03166001600160a01b03168152602001908152602001600020600101548483815181106117d0576117d0612640565b6020908102919091018101919091526001600160a01b038088166000908152600683526040808220928516825291909252812060010155835184908390811061181b5761181b612640565b602002602001015160056000836001600160a01b03166001600160a01b03168152602001908152602001600020600101600082825461185a9190612690565b9250508190555083828151811061187357611873612640565b60200260200101516000146118b9576118b98585848151811061189857611898612640565b6020026020010151836001600160a01b0316611a439092919063ffffffff16565b506118c381612656565b905061174b565b505092915050565b60008183106118e1578161066a565b5090919050565b6001600160a01b0382166119485760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d42565b61195482600083611d6d565b6001600160a01b038216600090815260208190526040902054818110156119c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d42565b6001600160a01b03831660009081526020819052604081208383039055600280548492906119f7908490612690565b90915550506040518281526000906001600160a01b0385169060008051602061289f8339815191529060200160405180910390a3505050565b6000610774611a3d610a05565b83611410565b610cbc8363a9059cbb60e01b8484604051602401611a6292919061260a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fab565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611ae5903090600401612470565b60206040518083038186803b158015611afd57600080fd5b505afa158015611b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3591906125f1565b600755565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b899190612470565b60206040518083038186803b158015611ba157600080fd5b505afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd991906125f1565b905060075481611be99190612690565b915060008211611c2a5760405162461bcd60e51b815260206004820152600c60248201526b524543454956455f5a45524f60a01b6044820152606401610d42565b60075590565b6000610774611c3d610a05565b8361207d565b6001600160a01b038216611c995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d42565b611ca560008383611d6d565b8060026000828254611cb791906125d9565b90915550506001600160a01b03821660009081526020819052604081208054839290611ce49084906125d9565b90915550506040518181526001600160a01b0383169060009060008051602061289f8339815191529060200160405180910390a35b5050565b600080611d32670de0b6b3a764000085612671565b9050828181611d4357611d436127a3565b04949350505050565b6000611d56610f2c565b9050611d62818361155f565b611243818585612092565b6000611d77610f2c565b9050611dc9817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016107f19190612470565b6001600160a01b03841615801590611dea57506001600160a01b0384163014155b15611e0b57611df884610e1a565b611e0b8185611e06876106f8565b612092565b6001600160a01b03831615801590611e2c57506001600160a01b0383163014155b1561124357611e3a83610e1a565b6112438184611e06866106f8565b600080611e558385612671565b9050670de0b6b3a764000081611d43565b6040516359436f3b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de7690611eb2903090600401612470565b600060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261084691908101906127db565b60005b8151811015611d195760056000838381518110611f2a57611f2a612640565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000015460001415611f9b57600160056000848481518110611f7657611f76612640565b6020908102919091018101516001600160a01b03168252810191909152604001600020555b611fa481612656565b9050611f0b565b6000612000826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121f59092919063ffffffff16565b805190915015610cbc578080602001905181019061201e9190612860565b610cbc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d42565b6000670de0b6b3a76400006114258484612671565b60005b83518110156112435760008482815181106120b2576120b2612640565b6020908102919091018101516001600160a01b038087166000908152600684526040808220928416825291845281812054600590945220549092508114156120fb5750506121e5565b8061213757506001600160a01b0390811660008181526005602090815260408083205494881683526006825280832093835292905220556121e5565b6001600160a01b03821660009081526005602052604081205461215b908390612690565b905060006121698683611e48565b6001600160a01b0380891660009081526006602090815260408083209389168352929052908120600101805492935083929091906121a89084906125d9565b9091555050506001600160a01b03928316600081815260056020908152604080832054968a16835260068252808320938352929052209290925550505b6121ee81612656565b9050612095565b6060612204848460008561220c565b949350505050565b60608247101561226d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d42565b6001600160a01b0385163b6122c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d42565b600080866001600160a01b031685876040516122e09190612882565b60006040518083038185875af1925050503d806000811461231d576040519150601f19603f3d011682016040523d82523d6000602084013e612322565b606091505b509150915061233282828661233d565b979650505050505050565b6060831561234c57508161066a565b82511561235c5782518084602001fd5b8160405162461bcd60e51b8152600401610d4291906123a2565b60005b83811015612391578181015183820152602001612379565b838111156112435750506000910152565b60208152600082518060208401526123c1816040850160208701612376565b601f01601f19169190910160400192915050565b6001600160a01b038116811461084657600080fd5b600080604083850312156123fd57600080fd5b8235612408816123d5565b946020939093013593505050565b60008060006060848603121561242b57600080fd5b8335612436816123d5565b92506020840135612446816123d5565b929592945050506040919091013590565b60006020828403121561246957600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561249757600080fd5b82356124a2816123d5565b915060208301356124b2816123d5565b809150509250929050565b6000602082840312156124cf57600080fd5b813561066a816123d5565b600081518084526020808501945080840160005b8381101561250a578151875295820195908201906001016124ee565b509495945050505050565b60208152600061066a60208301846124da565b82815260406020820152600061220460408301846124da565b6020808252825182820181905260009190848201906040850190845b818110156125825783516001600160a01b03168352928401929184019160010161255d565b50909695505050505050565b600181811c908216806125a257607f821691505b602082108114156109f057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156125ec576125ec6125c3565b500190565b60006020828403121561260357600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561263557600080fd5b815161066a816123d5565b634e487b7160e01b600052603260045260246000fd5b600060001982141561266a5761266a6125c3565b5060010190565b600081600019048311821515161561268b5761268b6125c3565b500290565b6000828210156126a2576126a26125c3565b500390565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156126e5576126e56126a7565b604052919050565b60006001600160401b03821115612706576127066126a7565b5060051b60200190565b6000602080838503121561272357600080fd5b82516001600160401b0381111561273957600080fd5b8301601f8101851361274a57600080fd5b805161275d612758826126ed565b6126bd565b81815260059190911b8201830190838101908783111561277c57600080fd5b928401925b82841015612332578351612794816123d5565b82529284019290840190612781565b634e487b7160e01b600052601260045260246000fd5b6000826127d657634e487b7160e01b600052601260045260246000fd5b500490565b600060208083850312156127ee57600080fd5b82516001600160401b0381111561280457600080fd5b8301601f8101851361281557600080fd5b8051612823612758826126ed565b81815260059190911b8201830190838101908783111561284257600080fd5b928401925b8284101561233257835182529284019290840190612847565b60006020828403121561287257600080fd5b8151801515811461066a57600080fd5b60008251612894818460208701612376565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122008f83521426b932e71e99a3105ba369fb64a66c89c2b82f68a13b984b8b7af1d64736f6c63430008090033";
819
+ "0x6101406040523480156200001257600080fd5b5060405162002ffb38038062002ffb8339810160408190526200003591620002d8565b83838383838381600390805190602001906200005392919062000148565b5080516200006990600490602084019062000148565b505050428111620000b25760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b60448201526064015b60405180910390fd5b60ff9091166080524260a05260c05250503360e05260016008556001600160a01b03861615801590620000ed57506001600160a01b03851615155b6200012a5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401620000a9565b5050506001600160a01b0392831661010052501661012052620003c9565b82805462000156906200038c565b90600052602060002090601f0160209004810192826200017a5760008555620001c5565b82601f106200019557805160ff1916838001178555620001c5565b82800160010185558215620001c5579182015b82811115620001c5578251825591602001919060010190620001a8565b50620001d3929150620001d7565b5090565b5b80821115620001d35760008155600101620001d8565b80516001600160a01b03811681146200020657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023357600080fd5b81516001600160401b03808211156200025057620002506200020b565b604051601f8301601f19908116603f011681019082821181831017156200027b576200027b6200020b565b816040528381526020925086838588010111156200029857600080fd5b600091505b83821015620002bc57858201830151818301840152908201906200029d565b83821115620002ce5760008385830101525b9695505050505050565b60008060008060008060c08789031215620002f257600080fd5b620002fd87620001ee565b95506200030d60208801620001ee565b60408801519095506001600160401b03808211156200032b57600080fd5b620003398a838b0162000221565b955060608901519150808211156200035057600080fd5b506200035f89828a0162000221565b935050608087015160ff811681146200037757600080fd5b8092505060a087015190509295509295509295565b600181811c90821680620003a157607f821691505b60208210811415620003c357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051612b7962000482600039600081816104a601528181610cc601528181610d8e015261105a01526000818161027e01528181610a7801528181610bd001528181610e2f01528181610f2f0152818161166d01528181611aaf01528181611cdc0152818161212f01526121d401526000818161044e0152818161089a01526115af015260008181610513015261067d015260006105890152600061023c0152612b796000f3fe608060405234801561001057600080fd5b50600436106101c25760003560e01c806306fdde03146101c7578063095ea7b3146101e557806318160ddd1461020857806323b872dd1461021a5780632f13b60c1461022d578063313ce56714610235578063395093511461026657806347bfac62146102795780635ab764ed146102ad578063649a00d61461031557806366247a721461032857806370a082311461033b57806371fd241f1461034e5780637695caa21461037f57806379e6ea161461038957806388611f35146103a957806395d89b41146103b25780639c9fdc3b146103ba578063a090ee50146103c3578063a457c2d7146103cb578063a9059cbb146103de578063afb442e9146103f1578063b9d9a45314610404578063ba50154d1461040c578063bcb7ea5d14610415578063bdaba53614610428578063c45a015514610449578063c4f59f9b14610470578063c6d6916c14610485578063d86e030214610498578063d94073d4146104a1578063db74aa15146104c8578063dcda874d146104db578063dd62ed3e146104fb578063e184c9be1461050e578063eded816114610535578063f04818141461053e578063f1653f6e14610584575b600080fd5b6101cf6105ab565b6040516101dc91906125a1565b60405180910390f35b6101f86101f33660046125e9565b61063d565b60405190151581526020016101dc565b6002545b6040519081526020016101dc565b6101f8610228366004612615565b610655565b6101f861067b565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101dc565b6101f86102743660046125e9565b6106a2565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516101dc9190612656565b6103006102bb36600461266a565b6001600160a01b039182166000908152600760209081526040808320939094168252918252829020825180840190935280548084526001909101549290910182905291565b604080519283526020830191909152016101dc565b61020c6103233660046126a3565b6106e1565b61020c6103363660046126a3565b61071d565b61020c6103493660046126a3565b6107a8565b61030061035c3660046126a3565b6001600160a01b03166000908152600e6020526040902080546001909101549091565b6103876107c3565b005b61039c6103973660046126a3565b6107fa565b6040516101dc91906126fb565b61020c600d5481565b6101cf610860565b61020c600a5481565b61038761086f565b6101f86103d93660046125e9565b610ae7565b6101f86103ec3660046125e9565b610b84565b6103876103ff3660046126a3565b610b92565b610300610bcb565b61020c60055481565b61020c6104233660046126a3565b610c82565b61043b6104363660046126a3565b610e6a565b6040516101dc92919061270e565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b610478610f2b565b6040516101dc9190612727565b6103876104933660046126a3565b610fc7565b61020c60095481565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b61020c6104d636600461266a565b610ff8565b61020c6104e93660046126a3565b600b6020526000908152604090205481565b61020c61050936600461266a565b6110d0565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b61020c600c5481565b61030061054c3660046126a3565b6001600160a01b0316600090815260066020908152604091829020825180840190935280548084526001909101549290910182905291565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546105ba90612774565b80601f01602080910402602001604051908101604052809291908181526020018280546105e690612774565b80156106335780601f1061060857610100808354040283529160200191610633565b820191906000526020600020905b81548152906001019060200180831161061657829003601f168201915b5050505050905090565b60003361064b8185856110fb565b5060019392505050565b60003361066385828561121f565b61066e858585611299565b60019150505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000042101590565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064b90829086906106dc9087906127c5565b6110fb565b6001600160a01b0381166000908152600e6020526040812080546001909101546107138261070e866107a8565b611460565b61067491906127c5565b60006002600854141561074b5760405162461bcd60e51b8152600401610742906127dd565b60405180910390fd5b60026008556107598261147f565b61076282611493565b61076b82611574565b9050816001600160a01b0316600080516020612b048339815191528260405161079691815260200190565b60405180910390a26001600855919050565b6001600160a01b031660009081526020819052604090205490565b600260085414156107e65760405162461bcd60e51b8152600401610742906127dd565b60026008556107f36116a4565b6001600855565b60606002600854141561081f5760405162461bcd60e51b8152600401610742906127dd565b600260085561082d8261147f565b6108378283611860565b9050816001600160a01b0316600080516020612ae48339815191528260405161079691906126fb565b6060600480546105ba90612774565b6000610879610f2b565b905061088361067b565b15610890576108906116a4565b60008151905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f157600080fd5b505afa158015610905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109299190612814565b90506000826001600160401b0381111561094557610945612831565b60405190808252806020026020018201604052801561096e578160200160208202803683370190505b50905060005b83811015610a4657600085828151811061099057610990612847565b6020908102919091018101516001600160a01b0381166000908152600b90925260409091205490915080156109f6576109f685828986815181106109d6576109d6612847565b60200260200101516001600160a01b0316611a3d9092919063ffffffff16565b6001600160a01b0382166000908152600b602052604081205583518190859085908110610a2557610a25612847565b60200260200101818152505050508080610a3e9061285d565b915050610974565b506000600c54600d54610a5991906127c5565b6000600c819055600d5590508015610aa757610a9f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611a3d565b610aa7611a98565b7f1f8d4ebdbc9b09c20d70cab598013079424b00c1e028075b6d5d5eaee6e5c1228282604051610ad8929190612878565b60405180910390a15050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b6c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610742565b610b7982868684036110fb565b506001949350505050565b60003361064b818585611299565b60026008541415610bb55760405162461bcd60e51b8152600401610742906127dd565b6002600855610bc381611493565b506001600855565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c2957600080fd5b505af1158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c61919061289a565b9150610c6b61067b565b15610c785750600a549091565b50600a8190558091565b600060026008541415610ca75760405162461bcd60e51b8152600401610742906127dd565b60026008556040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610cfb903090600401612656565b60206040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b919061289a565b9050610d5561067b565b610d7757610d6b81610d66306107a8565b611b39565b9050610d773082611b4f565b60405163b64761f960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b64761f990610dc590309085906004016128b3565b600060405180830381600087803b158015610ddf57600080fd5b505af1158015610df3573d6000803e3d6000fd5b505050506000610e0282611c97565b809250819450505080600c6000828254610e1c91906127c5565b90915550610e5690506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611a3d565b610e5e611a98565b50506001600855919050565b6000606060026008541415610e915760405162461bcd60e51b8152600401610742906127dd565b6002600855610e9f8361147f565b610ea883611493565b610eb28384611860565b9050610ebd83611574565b9150826001600160a01b0316600080516020612ae483398151915282604051610ee691906126fb565b60405180910390a2826001600160a01b0316600080516020612b0483398151915283604051610f1791815260200190565b60405180910390a260016008559092909150565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f8657600080fd5b505afa158015610f9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fc2919081019061291f565b905090565b60026008541415610fea5760405162461bcd60e51b8152600401610742906127dd565b6002600855610bc38161147f565b60006002600854141561101d5760405162461bcd60e51b8152600401610742906127dd565b6002600855600061102c611cd7565b905061103781611dcd565b91506110438383611de5565b6040516304a8c77360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312a31dcc9061109190879086906004016128b3565b600060405180830381600087803b1580156110ab57600080fd5b505af11580156110bf573d6000803e3d6000fd5b505060016008555091949350505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661115d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610742565b6001600160a01b0382166111be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610742565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061122b84846110d0565b9050600019811461129357818110156112865760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610742565b61129384848484036110fb565b50505050565b6001600160a01b0383166112fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610742565b6001600160a01b03821661135f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610742565b61136a838383611ebf565b6001600160a01b038316600090815260208190526040902054818110156113e25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610742565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906114199084906127c5565b92505081905550826001600160a01b0316846001600160a01b0316600080516020612b248339815191528460405161145391815260200190565b60405180910390a3611293565b600082611475670de0b6b3a7640000846129b2565b61067491906129e7565b6114876116a4565b61149081611f33565b50565b6001600160a01b0381166000908152600e6020526040812054906114b5610bcb565b915050808214156114c557505050565b816114ea576001600160a01b039092166000908152600e602052604090209190915550565b60006114f5846107a8565b9050600061152061150684866129b2565b6115108686612a09565b61151a90856129b2565b906120af565b6001600160a01b0386166000908152600e60205260408120600101805492935083929091906115509084906127c5565b9091555050506001600160a01b039093166000908152600e60205260409020555050565b6001600160a01b038082166000908152600e60209081526040808320600101805490849055815163dd86fea160e01b815291519394909385937f00000000000000000000000000000000000000000000000000000000000000009092169263dd86fea1926004808301939192829003018186803b1580156115f457600080fd5b505afa158015611608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162c919061289a565b9050600061163a83836120de565b905080600d600082825461164e91906127c5565b9091555061165e90508184612a09565b93506116946001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686611a3d565b61169c611a98565b505050919050565b6116ac6120fc565b6116b257565b6116ba612118565b60006116c46121ba565b905060006116d0610f2b565b90506116db81612259565b60006116e561067b565b905060005b825181101561129357600083828151811061170757611707612847565b602002602001015190506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161173f9190612656565b60206040518083038186803b15801561175757600080fd5b505afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f919061289a565b6001600160a01b038316600090815260066020526040812060010154919250906117b99083612a09565b905084156117f4576001600160a01b0383166000908152600b6020526040812080548392906117e99084906127c5565b909155506118329050565b86156118325761180481886120af565b6001600160a01b0384166000908152600660205260408120805490919061182c9084906127c5565b90915550505b506001600160a01b039091166000908152600660205260409020600101556118598161285d565b90506116ea565b6060600061186c610f2b565b905080516001600160401b0381111561188757611887612831565b6040519080825280602002602001820160405280156118b0578160200160208202803683370190505b50915060005b8151811015611a355760008282815181106118d3576118d3612847565b6020026020010151905060076000876001600160a01b03166001600160a01b031681526020019081526020016000206000826001600160a01b03166001600160a01b031681526020019081526020016000206001015484838151811061193b5761193b612847565b6020908102919091018101919091526001600160a01b038088166000908152600783526040808220928516825291909252812060010155835184908390811061198657611986612847565b602002602001015160066000836001600160a01b03166001600160a01b0316815260200190815260200160002060010160008282546119c59190612a09565b925050819055508382815181106119de576119de612847565b6020026020010151600014611a2457611a2485858481518110611a0357611a03612847565b6020026020010151836001600160a01b0316611a3d9092919063ffffffff16565b50611a2e8161285d565b90506118b6565b505092915050565b611a938363a9059cbb60e01b8484604051602401611a5c9291906128b3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526122fc565b505050565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611ae4903090600401612656565b60206040518083038186803b158015611afc57600080fd5b505afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b34919061289a565b600955565b6000818310611b485781610674565b5090919050565b6001600160a01b038216611baf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610742565b611bbb82600083611ebf565b6001600160a01b03821660009081526020819052604090205481811015611c2f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610742565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611c5e908490612a09565b90915550506040518281526000906001600160a01b03851690600080516020612b248339815191529060200160405180910390a3505050565b600080600080611ca5610bcb565b915091506000611cb58287611460565b9050611cc18387611460565b9450611ccd8582612a09565b9350505050915091565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611d269190612656565b60206040518083038186803b158015611d3e57600080fd5b505afa158015611d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d76919061289a565b905060095481611d869190612a09565b915060008211611dc75760405162461bcd60e51b815260206004820152600c60248201526b524543454956455f5a45524f60a01b6044820152606401610742565b60095590565b600080611dd8610bcb565b91505061067481846123ce565b6001600160a01b038216611e3b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610742565b611e4760008383611ebf565b8060026000828254611e5991906127c5565b90915550506001600160a01b03821660009081526020819052604081208054839290611e869084906127c5565b90915550506040518181526001600160a01b03831690600090600080516020612b248339815191529060200160405180910390a35b5050565b611ec76116a4565b6001600160a01b03831615801590611ee857506001600160a01b0383163014155b15611eff57611ef683611493565b611eff83611f33565b6001600160a01b03821615801590611f2057506001600160a01b0382163014155b15611a9357611f2e82611493565b611a93825b6000611f3d610f2b565b90506000611f4a836123e3565b905060005b8251811015611293576000838281518110611f6c57611f6c612847565b6020908102919091018101516001600160a01b03808816600090815260078452604080822092841682529184528181205460069094522054909250811415611fb557505061209f565b80611ff157506001600160a01b03908116600081815260066020908152604080832054948916835260078252808320938352929052205561209f565b6001600160a01b038216600090815260066020526040812054612015908390612a09565b9050600061202386836120de565b6001600160a01b03808a1660009081526007602090815260408083209389168352929052908120600101805492935083929091906120629084906127c5565b9091555050506001600160a01b03928316600081815260066020908152604080832054968b16835260078252808320938352929052209290925550505b6120a88161285d565b9050611f4f565b6000806120c4670de0b6b3a7640000856129b2565b90508281816120d5576120d56129d1565b04949350505050565b6000806120eb83856129b2565b9050670de0b6b3a7640000816120d5565b600043600554141561210e5750600090565b5043600555600190565b6040516359436f3b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de7690612164903090600401612656565b600060405180830381600087803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114909190810190612a20565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612209903090600401612656565b60206040518083038186803b15801561222157600080fd5b505afa158015612235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061289a565b60005b8151811015611ebb576006600083838151811061227b5761227b612847565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014156122ec576001600660008484815181106122c7576122c7612847565b6020908102919091018101516001600160a01b03168252810191909152604001600020555b6122f58161285d565b905061225c565b6000612351826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123f49092919063ffffffff16565b805190915015611a93578080602001905181019061236f9190612aa5565b611a935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610742565b6000670de0b6b3a764000061147584846129b2565b60006123ee826106e1565b92915050565b6060612403848460008561240b565b949350505050565b60608247101561246c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610742565b6001600160a01b0385163b6124c35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610742565b600080866001600160a01b031685876040516124df9190612ac7565b60006040518083038185875af1925050503d806000811461251c576040519150601f19603f3d011682016040523d82523d6000602084013e612521565b606091505b509150915061253182828661253c565b979650505050505050565b6060831561254b575081610674565b82511561255b5782518084602001fd5b8160405162461bcd60e51b815260040161074291906125a1565b60005b83811015612590578181015183820152602001612578565b838111156112935750506000910152565b60208152600082518060208401526125c0816040850160208701612575565b601f01601f19169190910160400192915050565b6001600160a01b038116811461149057600080fd5b600080604083850312156125fc57600080fd5b8235612607816125d4565b946020939093013593505050565b60008060006060848603121561262a57600080fd5b8335612635816125d4565b92506020840135612645816125d4565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806040838503121561267d57600080fd5b8235612688816125d4565b91506020830135612698816125d4565b809150509250929050565b6000602082840312156126b557600080fd5b8135610674816125d4565b600081518084526020808501945080840160005b838110156126f0578151875295820195908201906001016126d4565b509495945050505050565b60208152600061067460208301846126c0565b82815260406020820152600061240360408301846126c0565b6020808252825182820181905260009190848201906040850190845b818110156127685783516001600160a01b031683529284019291840191600101612743565b50909695505050505050565b600181811c9082168061278857607f821691505b602082108114156127a957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156127d8576127d86127af565b500190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561282657600080fd5b8151610674816125d4565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600019821415612871576128716127af565b5060010190565b60408152600061288b60408301856126c0565b90508260208301529392505050565b6000602082840312156128ac57600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b604051601f8201601f191681016001600160401b03811182821017156128f4576128f4612831565b604052919050565b60006001600160401b0382111561291557612915612831565b5060051b60200190565b6000602080838503121561293257600080fd5b82516001600160401b0381111561294857600080fd5b8301601f8101851361295957600080fd5b805161296c612967826128fc565b6128cc565b81815260059190911b8201830190838101908783111561298b57600080fd5b928401925b828410156125315783516129a3816125d4565b82529284019290840190612990565b60008160001904831182151516156129cc576129cc6127af565b500290565b634e487b7160e01b600052601260045260246000fd5b600082612a0457634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612a1b57612a1b6127af565b500390565b60006020808385031215612a3357600080fd5b82516001600160401b03811115612a4957600080fd5b8301601f81018513612a5a57600080fd5b8051612a68612967826128fc565b81815260059190911b82018301908381019087831115612a8757600080fd5b928401925b8284101561253157835182529284019290840190612a8c565b600060208284031215612ab757600080fd5b8151801515811461067457600080fd5b60008251612ad9818460208701612575565b919091019291505056fe3a77fed7c9a4917745bde0b97b576d95b02425a5222ff309ebb6e1d34c18a10f83a945bd12c713615b59a6e48a3467c05d1a7442350600d6f7fce6af9f7190e9ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122096f86a5dc05c7806e737c8e9483637f6bc6e47e092e68a9ba765ae55af5c48ff64736f6c63430008090033";
751
820
 
752
821
  type PendleYieldTokenConstructorParams =
753
822
  | [signer?: Signer]
@@ -769,7 +838,7 @@ export class PendleYieldToken__factory extends ContractFactory {
769
838
 
770
839
  deploy(
771
840
  _SCY: string,
772
- _OT: string,
841
+ _PT: string,
773
842
  _name: string,
774
843
  _symbol: string,
775
844
  __decimals: BigNumberish,
@@ -778,7 +847,7 @@ export class PendleYieldToken__factory extends ContractFactory {
778
847
  ): Promise<PendleYieldToken> {
779
848
  return super.deploy(
780
849
  _SCY,
781
- _OT,
850
+ _PT,
782
851
  _name,
783
852
  _symbol,
784
853
  __decimals,
@@ -788,7 +857,7 @@ export class PendleYieldToken__factory extends ContractFactory {
788
857
  }
789
858
  getDeployTransaction(
790
859
  _SCY: string,
791
- _OT: string,
860
+ _PT: string,
792
861
  _name: string,
793
862
  _symbol: string,
794
863
  __decimals: BigNumberish,
@@ -797,7 +866,7 @@ export class PendleYieldToken__factory extends ContractFactory {
797
866
  ): TransactionRequest {
798
867
  return super.getDeployTransaction(
799
868
  _SCY,
800
- _OT,
869
+ _PT,
801
870
  _name,
802
871
  _symbol,
803
872
  __decimals,
@@ -73,6 +73,19 @@ const _abi = [
73
73
  stateMutability: "view",
74
74
  type: "function",
75
75
  },
76
+ {
77
+ inputs: [],
78
+ name: "lastRewardUpdateBlock",
79
+ outputs: [
80
+ {
81
+ internalType: "uint256",
82
+ name: "",
83
+ type: "uint256",
84
+ },
85
+ ],
86
+ stateMutability: "view",
87
+ type: "function",
88
+ },
76
89
  ];
77
90
 
78
91
  export class RewardManager__factory {