@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
@@ -35,7 +35,7 @@ const _abi = [
35
35
  },
36
36
  {
37
37
  internalType: "uint96",
38
- name: "_feeRateRoot",
38
+ name: "_lnFeeRateRoot",
39
39
  type: "uint96",
40
40
  },
41
41
  {
@@ -53,10 +53,35 @@ const _abi = [
53
53
  type: "constructor",
54
54
  },
55
55
  {
56
+ anonymous: false,
56
57
  inputs: [
57
58
  {
59
+ indexed: true,
58
60
  internalType: "address",
59
- name: "OT",
61
+ name: "PT",
62
+ type: "address",
63
+ },
64
+ {
65
+ indexed: false,
66
+ internalType: "int256",
67
+ name: "scalarRoot",
68
+ type: "int256",
69
+ },
70
+ {
71
+ indexed: false,
72
+ internalType: "int256",
73
+ name: "initialAnchor",
74
+ type: "int256",
75
+ },
76
+ ],
77
+ name: "CreateNewMarket",
78
+ type: "event",
79
+ },
80
+ {
81
+ inputs: [
82
+ {
83
+ internalType: "address",
84
+ name: "PT",
60
85
  type: "address",
61
86
  },
62
87
  {
@@ -124,7 +149,7 @@ const _abi = [
124
149
  },
125
150
  {
126
151
  internalType: "uint96",
127
- name: "feeRateRoot",
152
+ name: "lnFeeRateRoot",
128
153
  type: "uint96",
129
154
  },
130
155
  {
@@ -142,16 +167,29 @@ const _abi = [
142
167
  type: "function",
143
168
  },
144
169
  {
145
- inputs: [
170
+ inputs: [],
171
+ name: "maxLnFeeRateRoot",
172
+ outputs: [
146
173
  {
147
- internalType: "uint96",
148
- name: "newFeeRateRoot",
149
- type: "uint96",
174
+ internalType: "uint256",
175
+ name: "",
176
+ type: "uint256",
150
177
  },
151
178
  ],
152
- name: "setFeeRateRoot",
153
- outputs: [],
154
- stateMutability: "nonpayable",
179
+ stateMutability: "view",
180
+ type: "function",
181
+ },
182
+ {
183
+ inputs: [],
184
+ name: "minRateOracleTimeWindow",
185
+ outputs: [
186
+ {
187
+ internalType: "uint256",
188
+ name: "",
189
+ type: "uint256",
190
+ },
191
+ ],
192
+ stateMutability: "view",
155
193
  type: "function",
156
194
  },
157
195
  {
@@ -193,6 +231,19 @@ const _abi = [
193
231
  stateMutability: "nonpayable",
194
232
  type: "function",
195
233
  },
234
+ {
235
+ inputs: [
236
+ {
237
+ internalType: "uint96",
238
+ name: "newlnFeeRateRoot",
239
+ type: "uint96",
240
+ },
241
+ ],
242
+ name: "setlnFeeRateRoot",
243
+ outputs: [],
244
+ stateMutability: "nonpayable",
245
+ type: "function",
246
+ },
196
247
  {
197
248
  inputs: [],
198
249
  name: "treasury",
@@ -222,7 +273,7 @@ const _abi = [
222
273
  ];
223
274
 
224
275
  const _bytecode =
225
- "0x60c06040523480156200001157600080fd5b506040516200504c3803806200504c833981016040819052620000349162000371565b856001600160a01b038116620000805760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b6001600160a01b03908116608052851660a0526200009e84620000cb565b620000a98362000171565b620000b482620001d6565b620000bf816200022f565b50505050505062000463565b620000d5620002d6565b6001600160a01b0316336001600160a01b031614620001085760405162461bcd60e51b8152600401620000779062000415565b6001600160a01b0381166200014f5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000077565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6200017b620002d6565b6001600160a01b0316336001600160a01b031614620001ae5760405162461bcd60e51b8152600401620000779062000415565b600180546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b620001e0620002d6565b6001600160a01b0316336001600160a01b031614620002135760405162461bcd60e51b8152600401620000779062000415565b6002805463ffffffff191663ffffffff92909216919091179055565b62000239620002d6565b6001600160a01b0316336001600160a01b0316146200026c5760405162461bcd60e51b8152600401620000779062000415565b60648160ff161115620002b55760405162461bcd60e51b815260206004820152601060248201526f696e76616c696420666565207261746560801b604482015260640162000077565b6002805460ff9092166401000000000260ff60201b19909216919091179055565b60006080516001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f91906200043e565b905090565b80516001600160a01b03811681146200036c57600080fd5b919050565b60008060008060008060c087890312156200038b57600080fd5b620003968762000354565b9550620003a66020880162000354565b9450620003b66040880162000354565b60608801519094506001600160601b0381168114620003d457600080fd5b608088015190935063ffffffff81168114620003ef57600080fd5b60a088015190925060ff811681146200040757600080fd5b809150509295509295509295565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b6000602082840312156200045157600080fd5b6200045c8262000354565b9392505050565b60805160a051614bb562000497600039600081816101d7015261041d0152600081816101ff01526107530152614bb56000f3fe60806040523480156200001157600080fd5b5060043610620000995760003560e01c80625f0c44146200009e5780630e57997714620000b75780631ce999e114620000ce57806323c113dc146200010257806358e6309f146200018057806361d027b314620001a8578063625620aa14620001ba57806387a409a214620001d1578063d2e6d1c314620001f9578063f0f442601462000221575b600080fd5b620000b5620000af36600462000897565b62000238565b005b620000b5620000c8366004620008bf565b6200029a565b620000e5620000df36600462000903565b620002ff565b6040516001600160a01b0390911681526020015b60405180910390f35b6001546002546200013f916001600160a01b03811691600160a01b9091046001600160601b03169063ffffffff811690600160201b900460ff1684565b604080516001600160a01b0390951685526001600160601b03909316602085015263ffffffff9091169183019190915260ff166060820152608001620000f9565b62000197620001913660046200093b565b6200055d565b6040519015158152602001620000f9565b6001546001600160a01b0316620000e5565b620000b5620001cb3660046200095b565b62000603565b620000e57f000000000000000000000000000000000000000000000000000000000000000081565b620000e57f000000000000000000000000000000000000000000000000000000000000000081565b620000b5620002323660046200093b565b620006a9565b620002426200074f565b6001600160a01b0316336001600160a01b0316146200027e5760405162461bcd60e51b8152600401620002759062000980565b60405180910390fd5b6002805463ffffffff191663ffffffff92909216919091179055565b620002a46200074f565b6001600160a01b0316336001600160a01b031614620002d75760405162461bcd60e51b8152600401620002759062000980565b600180546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b600080846001600160a01b03166347bfac626040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033c57600080fd5b505afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003779190620009a9565b90506000856001600160a01b031663e184c9be6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b557600080fd5b505afa158015620003ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f09190620009c9565b604051631234d88b60e11b81526001600160a01b03848116600483015260248201839052919250818816917f00000000000000000000000000000000000000000000000000000000000000001690632469b1169060440160206040518083038186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b9190620009a9565b6001600160a01b031614620004e05760405162461bcd60e51b815260206004820152600a6024820152691253959053125117d3d560b21b604482015260640162000275565b858585604051620004f19062000889565b6001600160a01b03909316835260208301919091526040820152606001604051809103906000f0801580156200052b573d6000803e3d6000fd5b506001600160a01b0387166000908152602081905260409020909350620005539084620007eb565b5050509392505050565b600080826001600160a01b031663c836545a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059a57600080fd5b505afa158015620005af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d59190620009a9565b6001600160a01b0381166000908152602081905260409020909150620005fc90846200080b565b9392505050565b6200060d6200074f565b6001600160a01b0316336001600160a01b031614620006405760405162461bcd60e51b8152600401620002759062000980565b60648160ff161115620006895760405162461bcd60e51b815260206004820152601060248201526f696e76616c696420666565207261746560801b604482015260640162000275565b6002805460ff909216600160201b0260ff60201b19909216919091179055565b620006b36200074f565b6001600160a01b0316336001600160a01b031614620006e65760405162461bcd60e51b8152600401620002759062000980565b6001600160a01b0381166200072d5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000275565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015620007ab57600080fd5b505afa158015620007c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007e69190620009a9565b905090565b600062000802836001600160a01b03841662000822565b90505b92915050565b600062000802836001600160a01b03841662000871565b600062000830838362000871565b620008685750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000805565b50600062000805565b60009081526001919091016020526040902054151590565b61419c80620009e483390190565b600060208284031215620008aa57600080fd5b813563ffffffff81168114620005fc57600080fd5b600060208284031215620008d257600080fd5b81356001600160601b0381168114620005fc57600080fd5b6001600160a01b03811681146200090057600080fd5b50565b6000806000606084860312156200091957600080fd5b83356200092681620008ea565b95602085013595506040909401359392505050565b6000602082840312156200094e57600080fd5b8135620005fc81620008ea565b6000602082840312156200096e57600080fd5b813560ff81168114620005fc57600080fd5b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b600060208284031215620009bc57600080fd5b8151620005fc81620008ea565b600060208284031215620009dc57600080fd5b505191905056fe6101a06040523480156200001257600080fd5b506040516200419c3803806200419c833981016040819052620000359162000379565b6040518060400160405280600d81526020016c14195b991b194813585c9ad95d609a1b8152506040518060400160405280600a8152602001691411539113114b53141560b21b8152506012856001600160a01b031663e184c9be6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ba57600080fd5b505afa158015620000cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f59190620003b1565b8351849084906200010e906003906020850190620002b6565b50805162000124906004906020840190620002b6565b5050504281116200016c5760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e05260016005556001600160a01b038316610100819052604080516323dfd63160e11b815290516347bfac6291600480820192602092909190829003018186803b158015620001cd57600080fd5b505afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002089190620003cb565b6001600160a01b0316610120816001600160a01b031681525050826001600160a01b031663781c18db6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025c57600080fd5b505afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002979190620003cb565b6001600160a01b0316610140526101609190915261018052506200042d565b828054620002c490620003f0565b90600052602060002090601f016020900481019282620002e8576000855562000333565b82601f106200030357805160ff191683800117855562000333565b8280016001018555821562000333579182015b828111156200033357825182559160200191906001019062000316565b506200034192915062000345565b5090565b5b8082111562000341576000815560010162000346565b80516001600160a01b03811681146200037457600080fd5b919050565b6000806000606084860312156200038f57600080fd5b6200039a846200035c565b925060208401519150604084015190509250925092565b600060208284031215620003c457600080fd5b5051919050565b600060208284031215620003de57600080fd5b620003e9826200035c565b9392505050565b600181811c908216806200040557607f821691505b602082108114156200042757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051610140516101605161018051613c5662000546600039600081816104600152610ca30152600081816104c801526108dd01526000818161022f01526104260152600081816101e20152818161037301528181610685015281816109ec01528181610aad01528181610b5d01528181610c5701528181610e0a01528181610f1d0152818161108f0152818161111701526111510152600081816102070152818161051601528181610a7301528181610d5801528181610f5101526112010152600081816104ef015261081f015260008181610260015281816105500152818161090301528181610999015261103c015260006105770152600061028e0152613c566000f3fe608060405234801561001057600080fd5b50600436106101545760003560e01c806306fdde0314610159578063095ea7b31461017757806318160ddd1461019a57806323b872dd146101ac5780632b20096c146101bf5780632c8ce6bc146101d45780632f13b60c1461025e578063313ce5671461028757806339509351146102b857806339e718f6146102cb57806341af0709146102eb57806347bfac621461036e5780634f7b3d2f146103a25780635308fcb1146103ca57806370a08231146103f8578063781c18db14610421578063863cb94e1461044857806391e7c0151461045b57806395d89b411461048257806399bc99981461048a578063a457c2d71461049d578063a9059cbb146104b0578063af247da3146104c3578063c45a0155146104ea578063c836545a14610511578063dd62ed3e14610538578063e184c9be1461054b578063f1653f6e14610572575b600080fd5b610161610599565b60405161016e91906133f4565b60405180910390f35b61018a61018536600461343f565b61062b565b604051901515815260200161016e565b6002545b60405190815260200161016e565b61018a6101ba36600461346b565b610645565b6101c761066b565b60405161016e91906134ac565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915260600161016e565b7f000000000000000000000000000000000000000000000000000000000000000042101561018a565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016e565b61018a6102c636600461343f565b610715565b6102de6102d93660046134fe565b610754565b60405161016e919061351b565b60065460075461032d91600f81810b92600160801b909204900b906001600160701b0380821691600160701b810490911690600160e01b900463ffffffff1685565b60408051600f96870b81529490950b60208501526001600160701b039283169484019490945216606082015263ffffffff909116608082015260a00161016e565b6103957f000000000000000000000000000000000000000000000000000000000000000081565b60405161016e91906135b5565b6103b56103b0366004613611565b610963565b6040805192835260208301919091520161016e565b6103dd6103d8366004613611565b610c15565b6040805193845260208401929092529082015260600161016e565b61019e61040636600461367a565b6001600160a01b031660009081526020819052604090205490565b6103957f000000000000000000000000000000000000000000000000000000000000000081565b6103b5610456366004613697565b610ec6565b61019e7f000000000000000000000000000000000000000000000000000000000000000081565b610161611000565b6103b5610498366004613611565b61100f565b61018a6104ab36600461343f565b611291565b61018a6104be36600461343f565b61132e565b61019e7f000000000000000000000000000000000000000000000000000000000000000081565b6103957f000000000000000000000000000000000000000000000000000000000000000081565b6103957f000000000000000000000000000000000000000000000000000000000000000081565b61019e6105463660046136f2565b61133c565b61019e7f000000000000000000000000000000000000000000000000000000000000000081565b61019e7f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546105a89061372b565b80601f01602080910402602001604051908101604052809291908181526020018280546105d49061372b565b80156106215780601f106105f657610100808354040283529160200191610621565b820191906000526020600020905b81548152906001019060200180831161060457829003601f168201915b5050505050905090565b600033610639818585611367565b60019150505b92915050565b60003361065385828561148b565b61065e858585611505565b60019150505b9392505050565b6040516359436f3b60e11b81526060906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de76906106ba9030906004016135b5565b600060405180830381600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107109190810190613776565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610639908290869061074f90879061383d565b611367565b6107c16040518061018001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60068054600f81810b8452600160801b909104900b60208301526107ec6107e760025490565b6116c1565b6040838101919091526001820154600160701b90046001600160701b0316606084015280516308f044f760e21b815290517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316916323c113dc916004808301926080929190829003018186803b15801561086d57600080fd5b505afa158015610881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a59190613855565b60ff1661012086015263ffffffff90811660e08601526001600160601b0390911660c08501526001600160a01b0390911660808401527f000000000000000000000000000000000000000000000000000000000000000060a08401527f000000000000000000000000000000000000000000000000000000000000000061010084015260018201546001600160701b038116610140850152600160e01b900416610160830152821561095d5761095b82426116d7565b505b50919050565b600080600260055414156109925760405162461bcd60e51b8152600401610989906138cf565b60405180910390fd5b60026005557f000000000000000000000000000000000000000000000000000000000000000042106109d65760405162461bcd60e51b815260040161098990613906565b60006109e26001610754565b9050610a1b610a107f00000000000000000000000000000000000000000000000000000000000000006117a5565b82908942600161181a565b909350915085831115610a665760405162461bcd60e51b81526020600482015260136024820152721cd8de481a5b88195e18d95959081b1a5b5a5d606a1b6044820152606401610989565b610a9a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168989611863565b6080810151610ad4906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169084611863565b8315610b46573363fa483e72610ae9896116c1565b610af2866118ba565b88886040518563ffffffff1660e01b8152600401610b139493929190613957565b600060405180830381600087803b158015610b2d57600080fd5b505af1158015610b41573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610b929030906004016135b5565b60206040518083038186803b158015610baa57600080fd5b505afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613981565b610bef82602001516118ce565b1115610bfa57600080fd5b610c03816118dd565b50600160055590969095509350505050565b600080600060026005541415610c3d5760405162461bcd60e51b8152600401610989906138cf565b60026005556000610c4e6001610754565b90506000610c7b7f00000000000000000000000000000000000000000000000000000000000000006117a5565b90506000610c8d83838c8c60016119c7565b9198509650945090508015610cd357610cc883837f000000000000000000000000000000000000000000000000000000000000000042611a34565b610cd3600182611ac9565b610cdd8b87611ac9565b8615610d415760405163096006e960e11b815233906312c00dd290610d0e908990899089908e908e9060040161399a565b600060405180830381600087803b158015610d2857600080fd5b505af1158015610d3c573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610d8d9030906004016135b5565b60206040518083038186803b158015610da557600080fd5b505afa158015610db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddd9190613981565b8351610de8906118ce565b1115610df357600080fd5b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610e3f9030906004016135b5565b60206040518083038186803b158015610e5757600080fd5b505afa158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190613981565b610e9c84602001516118ce565b1115610ea757600080fd5b610eb0836118dd565b5050506001600581905550955095509592505050565b60008060026005541415610eec5760405162461bcd60e51b8152600401610989906138cf565b60026005556000610efd6001610754565b9050610f0b81876001611b96565b9093509150610f446001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168885611863565b610f786001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168884611863565b8315610fdc5760405163c70cd41360e01b8152339063c70cd41390610fa9908990879087908b908b9060040161399a565b600060405180830381600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050505b610fe63087611bd3565b610fef816118dd565b506001600555909590945092505050565b6060600480546105a89061372b565b600080600260055414156110355760405162461bcd60e51b8152600401610989906138cf565b60026005557f000000000000000000000000000000000000000000000000000000000000000042106110795760405162461bcd60e51b815260040161098990613906565b60006110856001610754565b90506110be6110b37f00000000000000000000000000000000000000000000000000000000000000006117a5565b829089426001611d0f565b90935091508583101561110a5760405162461bcd60e51b81526020600482015260146024820152731a5b9cdd59999a58da595b9d081cd8de481bdd5d60621b6044820152606401610989565b61113e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168985611863565b6080810151611178906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169084611863565b83156111ea573363fa483e7261118d896118ba565b611196866116c1565b88886040518563ffffffff1660e01b81526004016111b79493929190613957565b600060405180830381600087803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906112369030906004016135b5565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613981565b8151610bef906118ce565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156113165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610989565b6113238286868403611367565b506001949350505050565b600033610639818585611505565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166113c95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610989565b6001600160a01b03821661142a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610989565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611497848461133c565b905060001981146114ff57818110156114f25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610989565b6114ff8484848403611367565b50505050565b6001600160a01b0383166115695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610989565b6001600160a01b0382166115cb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610989565b6001600160a01b038316600090815260208190526040902054818110156116435760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610989565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061167a90849061383d565b92505081905550826001600160a01b0316846001600160a01b0316600080516020613c01833981519152846040516116b491815260200190565b60405180910390a36114ff565b6000600160ff1b82106116d357600080fd5b5090565b60008183610160015111156116f957506101408201516060830181905261063f565b60008361016001518361170c91906139c0565b90508360e0015181111561172e5750506101408201516060830181905261063f565b60006117478560e0015183611d3090919063ffffffff16565b9050600061175d82670de0b6b3a76400006139c0565b90506000611778828860600151611d5f90919063ffffffff16565b6101608801516117889085611d5f565b611792919061383d565b6060880181905294505050505092915050565b6000816001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063f9190613981565b600080600080611835898961182e8a6116c1565b8989611d7d565b9150915061184a61184583611e48565b6118ce565b9350611855816118ce565b925050509550959350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526118b5908490611e53565b505050565b60006118c5826116c1565b61063f906139d7565b6000808212156116d357600080fd5b80516006906118eb90611f25565b81546001600160801b0319166001600160801b0391909116178155602082015161191490611f25565b81546001600160801b03918216600160801b02911617815561014082015161193b90611f37565b6001820180546001600160701b0319166001600160701b0392909216919091179055606082015161196b90611f37565b81600101600e6101000a8154816001600160701b0302191690836001600160701b031602179055506119a1826101600151611f49565b81600101601c6101000a81548163ffffffff021916908363ffffffff1602179055505050565b6000806000806000806000806119f08d8d6119e18e6116c1565b6119ea8e6116c1565b8d611f5b565b9350935093509350611a01846118ce565b9750611a0c836118ce565b9650611a17826118ce565b9550611a22816118ce565b94505050505095509550955095915050565b8361010001518110611a585760405162461bcd60e51b8152600401610989906139f4565b6000611a7185602001518561212a90919063ffffffff16565b9050600082866101000151611a8691906139c0565b90506000611a948783612169565b9050611ab78760000151848388888c6101000151611ab291906139c0565b6121e8565b61014090970196909652505050505050565b6001600160a01b038216611b1f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610989565b8060026000828254611b31919061383d565b90915550506001600160a01b03821660009081526020819052604081208054839290611b5e90849061383d565b90915550506040518181526001600160a01b03831690600090600080516020613c018339815191529060200160405180910390a35050565b600080600080611baf87611ba9886116c1565b8761223b565b91509150611bbc826118ce565b9350611bc7816118ce565b92505050935093915050565b6001600160a01b038216611c335760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610989565b6001600160a01b03821660009081526020819052604090205481811015611ca75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610989565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611cd69084906139c0565b90915550506040518281526000906001600160a01b03851690600080516020613c018339815191529060200160405180910390a3505050565b600080600080611d23898961182e8a6118ba565b9150915061184a826118ce565b600080611d45670de0b6b3a764000085613a1c565b9050828181611d5657611d56613a3b565b04949350505050565b600080611d6c8385613a1c565b9050670de0b6b3a764000081611d56565b6000808661010001518410611da45760405162461bcd60e51b8152600401610989906139f4565b86518512611ded5760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206c697175696469747960501b6044820152606401610989565b6000611dfa888887612306565b9050600080611e0a8a848a612420565b9092509050611e19898361252d565b9450611e25898261252d565b93508515611e3b57611e3b8a848b8b898c61255a565b5050509550959350505050565b600061063f826139d7565b6000611ea8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661260a9092919063ffffffff16565b8051909150156118b55780806020019051810190611ec69190613a51565b6118b55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610989565b60006001607f1b82126116d357600080fd5b6000600160701b82106116d357600080fd5b6000600160201b82106116d357600080fd5b600080600080600087138015611f715750600086135b611fac5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f414d4f554e545360a01b6044820152606401610989565b6040890151611fdd57611fcb6103e8611fc58a8a61212a565b90612619565b92506103e89350869150859050612080565b885160408a015160009190611ff29089613a6e565b611ffc9190613af3565b905060008a602001518b604001518a6120159190613a6e565b61201f9190613af3565b905080821215612055578194508792508a60400151858c602001516120449190613a6e565b61204e9190613af3565b935061207d565b8094508893508a60400151858c600001516120709190613a6e565b61207a9190613af3565b92505b50505b600083136120d05760405162461bcd60e51b815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610989565b841561211e5781896020018181516120e89190613b21565b905250885181908a906120fc908390613b21565b9052506121098484613b21565b8960400181815161211a9190613b21565b9052505b95509550955095915050565b6000806000831261213c576001612140565b6000195b90506121576107e7856121528661265c565b612673565b6121619082613a6e565b949350505050565b6000612174826116c1565b6121866107e762015180610168613a1c565b8460a001516121959190613a6e565b61219f9190613af3565b90506000811361063f5760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b6044820152606401610989565b6000806121f9878787876000612692565b9050600061220961184583612763565b90508361221b62015180610168613a1c565b6122259083613a1c565b61222f9190613b62565b98975050505050505050565b600080600084136122825760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081b1c08185b5bdd5b9d607a1b6044820152606401610989565b604085015160208601516122969086613a6e565b6122a09190613af3565b60408601518651919350906122b59086613a6e565b6122bf9190613af3565b905082156122fe5760408501516122d69085612619565b604086015284516122e79082612619565b855260208501516122f89083612619565b60208601525b935093915050565b6123316040518060800160405280600081526020016000815260200160008152602001600081525090565b83610100015182106123555760405162461bcd60e51b8152600401610989906139f4565b60008285610100015161236891906139c0565b90506123748582612169565b8252602085015161238690859061212a565b602083015284511580159061239e5750602082015115155b6123e15760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b6044820152606401610989565b6123ff856000015186610140015184602001518560000151856127f6565b604083015260c08501516124139082612873565b6060830152509392505050565b6000806000612442866000015186602001518760000151886040015188612692565b9050600061245861245386846128ac565b611e48565b606087015190915060008613156124c357600061247584836128ac565b9050670de0b6b3a764000081121561249f5760405162461bcd60e51b815260040161098990613b76565b6124bb6124b483670de0b6b3a7640000613ba5565b84906128db565b9150506124f0565b6124ed816124d981670de0b6b3a7640000613ba5565b6124e39085613a6e565b6124539190613af3565b90505b60646125008961012001516116c1565b61250a9083613a6e565b6125149190613af3565b93506125208183613ba5565b9450505050935093915050565b6000806000831261253f576001612543565b6000195b90506121576107e7856125558661265c565b6128f9565b60008187610100015161256d91906139c0565b610160880183905287519091506125849085612619565b875260208701516125959084612619565b6020880181905287516125ba916125ad90889061212a565b885160408a0151856121e8565b61014088018190526126015760405162461bcd60e51b815260206004820152601060248201526f7a65726f20696d706c6965645261746560801b6044820152606401610989565b50505050505050565b6060612161848460008561290e565b6000818312156126565760405162461bcd60e51b81526020600482015260086024820152674e4547415449564560c01b6044820152606401610989565b50900390565b60008082136116d35761266e826139d7565b61063f565b6000670de0b6b3a76400006126888484613a1c565b6106649190613b62565b60008061269f8784612619565b905060006126b76126b0888a613b21565b83906128ac565b9050670d529ae9e860000081131561270b5760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b6044820152606401610989565b600061271682612a3f565b90508561272382896128ac565b61272d9190613b21565b9350670de0b6b3a76400008412156127575760405162461bcd60e51b815260040161098990613b76565b50505095945050505050565b60008082136127a45760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610989565b670c7d713b49da0000821380156127c25750670f43fc2c04ee000082125b156127ed57670de0b6b3a76400006127d983612abf565b816127e6576127e6613a3b565b0592915050565b61063f82612bde565b6000806128038684612873565b9050670de0b6b3a764000081121561282d5760405162461bcd60e51b815260040161098990613b76565b600061284361283c878a613b21565b89906128ac565b9050600061285082612a3f565b905061285c81876128ac565b6128669084613ba5565b9998505050505050505050565b60008061288562015180610168613a1c565b61288f8486613a1c565b6128999190613b62565b90506121616128a7826116c1565b612f81565b6000806128c1670de0b6b3a764000085613a6e565b90508281816128d2576128d2613a3b565b05949350505050565b6000806128e88385613a6e565b9050670de0b6b3a7640000816128d2565b600082612688670de0b6b3a764000084613a1c565b60608247101561296f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610989565b6001600160a01b0385163b6129c65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610989565b600080866001600160a01b031685876040516129e29190613be4565b60006040518083038185875af1925050503d8060008114612a1f576040519150601f19603f3d011682016040523d82523d6000602084013e612a24565b606091505b5091509150612a3482828661338f565b979650505050505050565b6000670de0b6b3a7640000821415612a965760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b6044820152606401610989565b6000612ab4612aad84670de0b6b3a7640000613ba5565b84906128ac565b905061066481612763565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612b0057612b00613a3b565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215612c1f57612c16826a0c097ce7bc90715b34b9f160241b81612c1057612c10613a3b565b05612bde565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312612c6a5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312612ca1576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612ce9576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612d24576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312612d5b57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312612d9257690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312612dc75768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312612df257680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612e27576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612e5c576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312612e90576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312612ec4576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281612eed57612eed613a3b565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff198212158015612fa6575068070c1cc73b00c800008213155b612fe55760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610989565b600082121561301657612ffa82600003612f81565b6a0c097ce7bc90715b34b9f160241b816127e6576127e6613a3b565b60006806f05b59d3b2000000831261305457506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61308a565b6803782dace9d9000000831261308657506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061308a565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126130da5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412613116576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261315057682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261318a576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126131c357680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126131fc5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613235576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c40000841261326e5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6060831561339e575081610664565b8251156133ae5782518084602001fd5b8160405162461bcd60e51b815260040161098991906133f4565b60005b838110156133e35781810151838201526020016133cb565b838111156114ff5750506000910152565b60208152600082518060208401526134138160408501602087016133c8565b601f01601f19169190910160400192915050565b6001600160a01b038116811461343c57600080fd5b50565b6000806040838503121561345257600080fd5b823561345d81613427565b946020939093013593505050565b60008060006060848603121561348057600080fd5b833561348b81613427565b9250602084013561349b81613427565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156134e4578351835292840192918401916001016134c8565b50909695505050505050565b801515811461343c57600080fd5b60006020828403121561351057600080fd5b8135610664816134f0565b60006101808201905082518252602083015160208301526040830151604083015260608301516060830152608083015161356060808401826001600160a01b03169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b6001600160a01b0391909116815260200190565b60008083601f8401126135db57600080fd5b5081356001600160401b038111156135f257600080fd5b60208301915083602082850101111561360a57600080fd5b9250929050565b60008060008060006080868803121561362957600080fd5b853561363481613427565b9450602086013593506040860135925060608601356001600160401b0381111561365d57600080fd5b613669888289016135c9565b969995985093965092949392505050565b60006020828403121561368c57600080fd5b813561066481613427565b600080600080606085870312156136ad57600080fd5b84356136b881613427565b93506020850135925060408501356001600160401b038111156136da57600080fd5b6136e6878288016135c9565b95989497509550505050565b6000806040838503121561370557600080fd5b823561371081613427565b9150602083013561372081613427565b809150509250929050565b600181811c9082168061373f57607f821691505b6020821081141561095d57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561378957600080fd5b82516001600160401b03808211156137a057600080fd5b818501915085601f8301126137b457600080fd5b8151818111156137c6576137c6613760565b8060051b604051601f19603f830116810181811085821117156137eb576137eb613760565b60405291825284820192508381018501918883111561380957600080fd5b938501935b8285101561222f5784518452938501939285019261380e565b634e487b7160e01b600052601160045260246000fd5b6000821982111561385057613850613827565b500190565b6000806000806080858703121561386b57600080fd5b845161387681613427565b60208601519094506001600160601b038116811461389357600080fd5b604086015190935063ffffffff811681146138ad57600080fd5b606086015190925060ff811681146138c457600080fd5b939692955090935050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600e908201526d13505492d15517d156141254915160921b604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b84815283602082015260606040820152600061397760608301848661392e565b9695505050505050565b60006020828403121561399357600080fd5b5051919050565b858152846020820152836040820152608060608201526000612a3460808301848661392e565b6000828210156139d2576139d2613827565b500390565b6000600160ff1b8214156139ed576139ed613827565b5060000390565b6020808252600e908201526d1b585c9ad95d08195e1c1a5c995960921b604082015260600190565b6000816000190483118215151615613a3657613a36613827565b500290565b634e487b7160e01b600052601260045260246000fd5b600060208284031215613a6357600080fd5b8151610664816134f0565b60006001600160ff1b0381841382841380821686840486111615613a9457613a94613827565b600160ff1b6000871282811687830589121615613ab357613ab3613827565b60008712925087820587128484161615613acf57613acf613827565b87850587128184161615613ae557613ae5613827565b505050929093029392505050565b600082613b0257613b02613a3b565b600160ff1b821460001984141615613b1c57613b1c613827565b500590565b600080821280156001600160ff1b0384900385131615613b4357613b43613827565b600160ff1b8390038412811615613b5c57613b5c613827565b50500190565b600082613b7157613b71613a3b565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60008083128015600160ff1b850184121615613bc357613bc3613827565b6001600160ff1b0384018313811615613bde57613bde613827565b50500390565b60008251613bf68184602087016133c8565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e27bc4faeb9c68251600d30624966a487edb64f21913ea8aa97e79636ac68a5a64736f6c63430008090033a264697066735822122066defb96b8dc3587b8a3f8f0df6b77a3cda64b45d09117e81da9f7ab68f6a85f64736f6c63430008090033";
276
+ "0x60e06040523480156200001157600080fd5b50604051620064bc380380620064bc833981016040819052620000349162000a0a565b856001600160a01b038116620000805760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b6001600160a01b039081166080528516620000af5760405162461bcd60e51b8152600401620000779062000aae565b6001600160a01b03851660a052620000f46064620000d7670de0b6b3a7640000606962000aea565b620000e3919062000b91565b6200012f60201b620008fb1760201c565b60c0526200010284620001d8565b6200010d8362000260565b620001188262000322565b6200012381620003d5565b50505050505062000c1f565b6000808213620001725760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015260640162000077565b670c7d713b49da000082138015620001915750670f43fc2c04ee000082125b15620001c257670de0b6b3a7640000620001ab8362000489565b81620001bb57620001bb62000b7b565b0592915050565b620001cd82620005b4565b92915050565b919050565b620001e262000974565b6001600160a01b0316336001600160a01b031614620002155760405162461bcd60e51b8152600401620000779062000bd1565b6001600160a01b0381166200023e5760405162461bcd60e51b8152600401620000779062000aae565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6200026a62000974565b6001600160a01b0316336001600160a01b0316146200029d5760405162461bcd60e51b8152600401620000779062000bd1565b60c051816001600160601b03161115620002fa5760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420666565207261746520726f6f740000000000000000000000604482015260640162000077565b600180546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b6200032c62000974565b6001600160a01b0316336001600160a01b0316146200035f5760405162461bcd60e51b8152600401620000779062000bd1565b61012c8163ffffffff161015620003b95760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642074696d652077696e646f7700000000000000000000000000604482015260640162000077565b6002805463ffffffff191663ffffffff92909216919091179055565b620003df62000974565b6001600160a01b0316336001600160a01b031614620004125760405162461bcd60e51b8152600401620000779062000bd1565b60648160ff161115620004685760405162461bcd60e51b815260206004820152601b60248201527f696e76616c69642072657365727665206665652070657263656e740000000000604482015260640162000077565b6002805460ff9092166401000000000260ff60201b19909216919091179055565b670de0b6b3a7640000026000806ec097ce7bc90715b34b9f1000000000808401906ec097ce7bc90715b34b9f0fffffffff1985010281620004ce57620004ce62000b7b565b05905060006ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215620005fc57620005f3826ec097ce7bc90715b34b9f100000000081620005ec57620005ec62000b7b565b05620005b4565b60000392915050565b60007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000083126200064e57770195e54c5dd42177f53a27172fa9ec630262827000000000830592506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e000000831262000687576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312620006d0576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a70083126200070c576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126200074457693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126200077c57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312620007b25768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312620007de57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831262000814576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126200084a576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126200087f576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312620008b4576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281620008e057620008e062000b7b565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b60006080516001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015620009b257600080fd5b505afa158015620009c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009ed919062000bfa565b905090565b80516001600160a01b0381168114620001d357600080fd5b60008060008060008060c0878903121562000a2457600080fd5b62000a2f87620009f2565b955062000a3f60208801620009f2565b945062000a4f60408801620009f2565b60608801519094506001600160601b038116811462000a6d57600080fd5b608088015190935063ffffffff8116811462000a8857600080fd5b60a088015190925060ff8116811462000aa057600080fd5b809150509295509295509295565b6020808252600c908201526b7a65726f206164647265737360a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b038184138284138082168684048611161562000b135762000b1362000ad4565b600160ff1b600087128281168783058912161562000b355762000b3562000ad4565b6000871292508782058712848416161562000b545762000b5462000ad4565b8785058712818416161562000b6d5762000b6d62000ad4565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b60008262000baf57634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161562000bcc5762000bcc62000ad4565b500590565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b60006020828403121562000c0d57600080fd5b62000c1882620009f2565b9392505050565b60805160a05160c05161585862000c646000396000818161018701526107bc01526000818161020f015261046101526000818161025801526109a301526158586000f3fe60806040523480156200001157600080fd5b5060043610620000b15760003560e01c80625f0c4414620000b65780631ce999e114620000cf57806323c113dc14620001035780634facfd7a146200018157806358e6309f14620001b857806361d027b314620001e0578063625620aa14620001f257806387a409a21462000209578063b1604c891462000231578063ca240c3d146200023b578063d2e6d1c31462000252578063f0f44260146200027a575b600080fd5b620000cd620000c736600462000fb8565b62000291565b005b620000e6620000e036600462000ff9565b62000343565b6040516001600160a01b0390911681526020015b60405180910390f35b60015460025462000140916001600160a01b03811691600160a01b9091046001600160601b03169063ffffffff811690600160201b900460ff1684565b604080516001600160a01b0390951685526001600160601b03909316602085015263ffffffff9091169183019190915260ff166060820152608001620000fa565b620001a97f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001620000fa565b620001cf620001c936600462001031565b62000626565b6040519015158152602001620000fa565b6001546001600160a01b0316620000e6565b620000cd6200020336600462001051565b620006cc565b620000e67f000000000000000000000000000000000000000000000000000000000000000081565b620001a961012c81565b620000cd6200024c36600462001076565b6200077d565b620000e67f000000000000000000000000000000000000000000000000000000000000000081565b620000cd6200028b36600462001031565b62000855565b6200029b6200099f565b6001600160a01b0316336001600160a01b031614620002d75760405162461bcd60e51b8152600401620002ce90620010a1565b60405180910390fd5b61012c8163ffffffff161015620003275760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642074696d652077696e646f7760681b6044820152606401620002ce565b6002805463ffffffff191663ffffffff92909216919091179055565b600080846001600160a01b03166347bfac626040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038057600080fd5b505afa15801562000395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bb9190620010ca565b90506000856001600160a01b031663e184c9be6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f957600080fd5b505afa1580156200040e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004349190620010ea565b6040516387efe5a760e01b81526001600160a01b03848116600483015260248201839052919250818816917f000000000000000000000000000000000000000000000000000000000000000016906387efe5a79060440160206040518083038186803b158015620004a457600080fd5b505afa158015620004b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004df9190620010ca565b6001600160a01b031614620005245760405162461bcd60e51b815260206004820152600a6024820152691253959053125117d41560b21b6044820152606401620002ce565b858585604051620005359062000faa565b6001600160a01b03909316835260208301919091526040820152606001604051809103906000f0801580156200056f573d6000803e3d6000fd5b506001600160a01b038716600090815260208190526040902090935062000597908462000a3b565b620005d95760405162461bcd60e51b81526020600482015260116024820152701b585c9ad95d081859190819985a5b1959607a1b6044820152606401620002ce565b60408051868152602081018690526001600160a01b038816917f86fed3ff91a9518c8c8b8773826e077777a060e7e14bcb85625c46524e30a3fb910160405180910390a250509392505050565b600080826001600160a01b031663d94073d46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200066357600080fd5b505afa15801562000678573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069e9190620010ca565b6001600160a01b0381166000908152602081905260409020909150620006c5908462000a52565b9392505050565b620006d66200099f565b6001600160a01b0316336001600160a01b031614620007095760405162461bcd60e51b8152600401620002ce90620010a1565b60648160ff1611156200075d5760405162461bcd60e51b815260206004820152601b60248201527a1a5b9d985b1a59081c995cd95c9d9948199959481c195c98d95b9d602a1b6044820152606401620002ce565b6002805460ff909216600160201b0260ff60201b19909216919091179055565b620007876200099f565b6001600160a01b0316336001600160a01b031614620007ba5760405162461bcd60e51b8152600401620002ce90620010a1565b7f0000000000000000000000000000000000000000000000000000000000000000816001600160601b031611156200082d5760405162461bcd60e51b81526020600482015260156024820152741a5b9d985b1a5908199959481c985d19481c9bdbdd605a1b6044820152606401620002ce565b600180546001600160601b03909216600160a01b026001600160a01b03909216919091179055565b6200085f6200099f565b6001600160a01b0316336001600160a01b031614620008925760405162461bcd60e51b8152600401620002ce90620010a1565b6001600160a01b038116620008d95760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401620002ce565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008082136200093e5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401620002ce565b670c7d713b49da0000821380156200095d5750670f43fc2c04ee000082125b156200098e57670de0b6b3a7640000620009778362000a69565b8162000987576200098762001104565b0592915050565b620009998262000b8b565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015620009fb57600080fd5b505afa15801562000a10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a369190620010ca565b905090565b6000620006c5836001600160a01b03841662000f43565b6000620006c5836001600160a01b03841662000f92565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028162000aad5762000aad62001104565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121562000bd25762000bc9826a0c097ce7bc90715b34b9f160241b8162000bc25762000bc262001104565b0562000b8b565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b831262000c1e5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b831262000c56576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff0084000831262000c9f576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831262000cdb576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831262000d1357693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e2831262000d4b57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831262000d815768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831262000dad57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831262000de3576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831262000e19576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b286603831262000e4e576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac831262000e83576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028162000eaf5762000eaf62001104565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b600062000f51838362000f92565b62000f895750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000999565b50600062000999565b60009081526001919091016020526040902054151590565b614708806200111b83390190565b60006020828403121562000fcb57600080fd5b813563ffffffff81168114620006c557600080fd5b6001600160a01b038116811462000ff657600080fd5b50565b6000806000606084860312156200100f57600080fd5b83356200101c8162000fe0565b95602085013595506040909401359392505050565b6000602082840312156200104457600080fd5b8135620006c58162000fe0565b6000602082840312156200106457600080fd5b813560ff81168114620006c557600080fd5b6000602082840312156200108957600080fd5b81356001600160601b0381168114620006c557600080fd5b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b600060208284031215620010dd57600080fd5b8151620006c58162000fe0565b600060208284031215620010fd57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fdfe6101a06040523480156200001257600080fd5b506040516200470838038062004708833981016040819052620000359162000387565b6040518060400160405280600d81526020016c14195b991b194813585c9ad95d609a1b8152506040518060400160405280600a8152602001691411539113114b53141560b21b8152506012856001600160a01b031663e184c9be6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ba57600080fd5b505afa158015620000cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f59190620003bf565b8351849084906200010e906003906020850190620002c4565b50805162000124906004906020840190620002c4565b5050504281116200016c5760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e0526001600160a01b038316610100819052604080516323dfd63160e11b815290516347bfac6291600480820192602092909190829003018186803b158015620001c857600080fd5b505afa158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002039190620003d9565b6001600160a01b0316610120816001600160a01b031681525050826001600160a01b031663781c18db6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025757600080fd5b505afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002929190620003d9565b6001600160a01b0316610140526101609190915261018052506006805460ff60e01b1916600160e01b1790556200043b565b828054620002d290620003fe565b90600052602060002090601f016020900481019282620002f6576000855562000341565b82601f106200031157805160ff191683800117855562000341565b8280016001018555821562000341579182015b828111156200034157825182559160200191906001019062000324565b506200034f92915062000353565b5090565b5b808211156200034f576000815560010162000354565b80516001600160a01b03811681146200038257600080fd5b919050565b6000806000606084860312156200039d57600080fd5b620003a8846200036a565b925060208401519150604084015190509250925092565b600060208284031215620003d257600080fd5b5051919050565b600060208284031215620003ec57600080fd5b620003f7826200036a565b9392505050565b600181811c908216806200041357607f821691505b602082108114156200043557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516141a662000562600039600081816103d10152610f240152600081816104260152610dfd015260008181610257015261039701526000818161020a01528181610318015281816106f001528181610778015281816107b2015281816109a901528181610a3a01528181610ed80152818161108b0152818161120b0152818161149501528181611556015261160601526000818161022f0152818161051e0152818161086201528181610fd90152818161123f015261151c0152600081816104f701528181610ad30152610d32015260008181610288015281816105580152818161069d01528181610e2301526114420152600061057f015260006102b601526141a66000f3fe608060405234801561001057600080fd5b50600436106101545760003560e01c806306fdde0314610159578063095ea7b3146101775780631128c55e1461019a57806318160ddd146101c257806323b872dd146101d45780632b20096c146101e75780632c8ce6bc146101fc5780632f13b60c14610286578063313ce567146102af57806339509351146102e057806339e718f6146102f357806347bfac62146103135780635308fcb11461034757806370a0823114610369578063781c18db14610392578063863cb94e146103b957806391e7c015146103cc57806395d89b41146103f3578063a457c2d7146103fb578063a9059cbb1461040e578063af247da314610421578063b4c3da4614610448578063c3fb90d61461045b578063c45a0155146104f2578063d94073d414610519578063dd62ed3e14610540578063e184c9be14610553578063f1653f6e1461057a575b600080fd5b6101616105a1565b60405161016e9190613806565b60405180910390f35b61018a610185366004613851565b610633565b604051901515815260200161016e565b6101ad6101a83660046138c5565b61064d565b6040805192835260208301919091520161016e565b6002545b60405190815260200161016e565b61018a6101e236600461392e565b610969565b6101ef61098f565b60405161016e919061396f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915260600161016e565b7f000000000000000000000000000000000000000000000000000000000000000042101561018a565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016e565b61018a6102ee366004613851565b610bd8565b6103066103013660046139c1565b610c17565b60405161016e91906139de565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405161016e9190613a78565b61035a6103553660046138c5565b610e7c565b60405161016e93929190613a8c565b6101c6610377366004613aa2565b6001600160a01b031660009081526020819052604090205490565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6103c7366004613abf565b61119a565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b610161611341565b61018a610409366004613851565b611350565b61018a61041c366004613851565b6113ed565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6104563660046138c5565b6113fb565b6005546006546104a891600f81810b92600160801b909204900b906001600160601b0380821691600160601b810490911690600160c01b810463ffffffff1690600160e01b900460ff1686565b60408051600f97880b81529590960b60208601526001600160601b03938416958501959095529116606083015263ffffffff16608082015260ff90911660a082015260c00161016e565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c661054e366004613b1a565b6116d7565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546105b090613b53565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90613b53565b80156106295780601f106105fe57610100808354040283529160200191610629565b820191906000526020600020905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b600033610641818585611702565b60019150505b92915050565b6006546000908190600160e01b900460ff16600214156106885760405162461bcd60e51b815260040161067f90613b88565b60405180910390fd5b6006805460ff60e01b1916600160e11b1790557f000000000000000000000000000000000000000000000000000000000000000042106106da5760405162461bcd60e51b815260040161067f90613bbf565b60006106e66001610c17565b905061071f6107147f0000000000000000000000000000000000000000000000000000000000000000611826565b82908942600161189b565b90935091508583101561076b5760405162461bcd60e51b81526020600482015260146024820152731a5b9cdd59999a58da595b9d081cd8de481bdd5d60621b604482015260640161067f565b61079f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689856118dc565b60808101516107d9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690846118dc565b831561084b573363fa483e726107ee89611933565b6107f786611947565b88886040518563ffffffff1660e01b81526004016108189493929190613c10565b600060405180830381600087803b15801561083257600080fd5b505af1158015610846573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610897903090600401613a78565b60206040518083038186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190613c3a565b81516108f29061195d565b11156108fd57600080fd5b6109068161196c565b876001600160a01b031660008051602061413183398151915261092889611933565b61093186611947565b8560405161094193929190613a8c565b60405180910390a2506006805460ff60e01b1916600160e01b17905590969095509350505050565b600033610977858285611aec565b610982858585611b66565b60019150505b9392505050565b6040516359436f3b60e11b81526060906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de76906109de903090600401613a78565b600060405180830381600087803b1580156109f857600080fd5b505af1158015610a0c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a349190810190613cbc565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610acd9190810190613d46565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2a57600080fd5b505afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b629190613dd4565b905060005b8251811015610bd257610bc082858381518110610b8657610b86613df1565b6020026020010151858481518110610ba057610ba0613df1565b60200260200101516001600160a01b03166118dc9092919063ffffffff16565b80610bca81613e1d565b915050610b67565b50505090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106419082908690610c12908790613e38565b611702565b610c846040518061018001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160c081018252600554600f81810b808452600160801b909204810b60208085019182526006546001600160601b0380821697870197909752600160601b81049096166060860152600160c01b860463ffffffff166080860152600160e01b90950460ff1660a08501529185529051900b91830191909152600254610d1090611947565b611947565b82604001818152505080606001516001600160601b03168260600181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323c113dc6040518163ffffffff1660e01b815260040160806040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190613e50565b60ff1661012086015263ffffffff90811660e08601526001600160601b0391821660c08601526001600160a01b039092166080808601919091527f000000000000000000000000000000000000000000000000000000000000000060a08601527f00000000000000000000000000000000000000000000000000000000000000006101008601526040840151909116610140850152820151166101608301528215610e7657610e708242611d22565b60608301525b50919050565b60065460009081908190600160e01b900460ff1660021415610eb05760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b1790556000610ecf6001610c17565b90506000610efc7f0000000000000000000000000000000000000000000000000000000000000000611826565b90506000610f0e83838c8c6001611dda565b9198509650945090508015610f5457610f4983837f000000000000000000000000000000000000000000000000000000000000000042611e47565b610f54600182611edc565b610f5e8b87611edc565b8615610fc25760405163096006e960e11b815233906312c00dd290610f8f908990899089908e908e90600401613eca565b600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061100e903090600401613a78565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e9190613c3a565b83516110699061195d565b111561107457600080fd5b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110c0903090600401613a78565b60206040518083038186803b1580156110d857600080fd5b505afa1580156110ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111109190613c3a565b61111d846020015161195d565b111561112857600080fd5b6111318361196c565b8a6001600160a01b03167fbeb3885786d637a474cbc287c0a44587231633a077f0bd30354d5a4b18996fce87878760405161116e93929190613a8c565b60405180910390a250506006805460ff60e01b1916600160e01b17905550919790965090945092505050565b6006546000908190600160e01b900460ff16600214156111cc5760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b17905560006111eb6001610c17565b90506111f981876001611fa9565b90935091506112326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688856118dc565b6112666001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688846118dc565b83156112ca5760405163c70cd41360e01b8152339063c70cd41390611297908990879087908b908b90600401613eca565b600060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050505b6112d43087611fe6565b6112dd8161196c565b866001600160a01b03167f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa87858560405161131a93929190613a8c565b60405180910390a2506006805460ff60e01b1916600160e01b179055909590945092505050565b6060600480546105b090613b53565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156113d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161067f565b6113e28286868403611702565b506001949350505050565b600033610641818585611b66565b6006546000908190600160e01b900460ff166002141561142d5760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b1790557f0000000000000000000000000000000000000000000000000000000000000000421061147f5760405162461bcd60e51b815260040161067f90613bbf565b600061148b6001610c17565b90506114c46114b97f0000000000000000000000000000000000000000000000000000000000000000611826565b829089426001612122565b90935091508583111561150f5760405162461bcd60e51b81526020600482015260136024820152721cd8de481a5b88195e18d95959081b1a5b5a5d606a1b604482015260640161067f565b6115436001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689896118dc565b608081015161157d906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690846118dc565b83156115ef573363fa483e7261159289611947565b61159b86611933565b88886040518563ffffffff1660e01b81526004016115bc9493929190613c10565b600060405180830381600087803b1580156115d657600080fd5b505af11580156115ea573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061163b903090600401613a78565b60206040518083038186803b15801561165357600080fd5b505afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b9190613c3a565b611698826020015161195d565b11156116a357600080fd5b6116ac8161196c565b876001600160a01b03166000805160206141318339815191526116ce89611947565b61093186611933565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166117645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067f565b6001600160a01b0382166117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106479190613c3a565b6000806000806118b689896118af8a611933565b898961214b565b915091506118c38261195d565b93506118ce8161195d565b925050509550959350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261192e908490612216565b505050565b600061193e82611947565b61064790613ef0565b6000600160ff1b821061195957600080fd5b5090565b60008082121561195957600080fd5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915281516119a9906122e8565b600f0b815260208201516119bc906122e8565b600f0b60208201526101408201516119d3906122fa565b6001600160601b0316604082015260608201516119ef906122fa565b6001600160601b03166060820152610160820151611a0c9061230c565b63ffffffff1660808201819052815160208301516001600160801b03908116600160801b0291161760055560408083015160068054606086015160a087015160ff16600160e01b0260ff60e01b19600160c01b9097029690961664ffffffffff60c01b196001600160601b03928316600160601b026001600160c01b0319909416929095169190911791909117929092169190911792909217909155610140830151905142917f5c0e21d57bb4cf91d8fe238d6f92e2685a695371b19209afcce6217b478f83e191611ae091815260200190565b60405180910390a25050565b6000611af884846116d7565b90506000198114611b605781811015611b535760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161067f565b611b608484848403611702565b50505050565b6001600160a01b038316611bca5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067f565b6001600160a01b038216611c2c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067f565b6001600160a01b03831660009081526020819052604090205481811015611ca45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161067f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611cdb908490613e38565b92505081905550826001600160a01b0316846001600160a01b031660008051602061415183398151915284604051611d1591815260200190565b60405180910390a3611b60565b6000818361016001511115611d3d5750610140820151610647565b600083610160015183611d509190613f0d565b90508360e00151811115611d6b575050610140820151610647565b6000611d848560e001518361231e90919063ffffffff16565b90506000611d9a82670de0b6b3a7640000613f0d565b90506000611db582886060015161234d90919063ffffffff16565b610160880151611dc5908561234d565b611dcf9190613e38565b979650505050505050565b600080600080600080600080611e038d8d611df48e611947565b611dfd8e611947565b8d61236b565b9350935093509350611e148461195d565b9750611e1f8361195d565b9650611e2a8261195d565b9550611e358161195d565b94505050505095509550955095915050565b8361010001518110611e6b5760405162461bcd60e51b815260040161067f90613f24565b6000611e8485602001518561253a90919063ffffffff16565b9050600082866101000151611e999190613f0d565b90506000611ea78783612579565b9050611eca8760000151848388888c6101000151611ec59190613f0d565b6125f8565b61014090970196909652505050505050565b6001600160a01b038216611f325760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161067f565b8060026000828254611f449190613e38565b90915550506001600160a01b03821660009081526020819052604081208054839290611f71908490613e38565b90915550506040518181526001600160a01b038316906000906000805160206141518339815191529060200160405180910390a35050565b600080600080611fc287611fbc88611947565b8761264b565b91509150611fcf8261195d565b9350611fda8161195d565b92505050935093915050565b6001600160a01b0382166120465760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161067f565b6001600160a01b038216600090815260208190526040902054818110156120ba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161067f565b6001600160a01b03831660009081526020819052604081208383039055600280548492906120e9908490613f0d565b90915550506040518281526000906001600160a01b038516906000805160206141518339815191529060200160405180910390a3505050565b60008060008061213689896118af8a611947565b915091506118c361214683612716565b61195d565b60008086610100015184106121725760405162461bcd60e51b815260040161067f90613f24565b865185126121bb5760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206c697175696469747960501b604482015260640161067f565b60006121c8888887612721565b90506000806121d88a848a61283b565b90925090506121e78983612948565b94506121f38982612948565b93508515612209576122098a848b8b898c612975565b5050509550959350505050565b600061226b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a279092919063ffffffff16565b80519091501561192e57808060200190518101906122899190613f4c565b61192e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161067f565b60006001607f1b821261195957600080fd5b6000600160601b821061195957600080fd5b6000600160201b821061195957600080fd5b600080612333670de0b6b3a764000085613f69565b905082818161234457612344613f88565b04949350505050565b60008061235a8385613f69565b9050670de0b6b3a764000081612344565b6000806000806000871380156123815750600086135b6123bc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f414d4f554e545360a01b604482015260640161067f565b60408901516123ed576123db6103e86123d58a8a61253a565b90612a36565b92506103e89350869150859050612490565b885160408a0151600091906124029089613f9e565b61240c9190614023565b905060008a602001518b604001518a6124259190613f9e565b61242f9190614023565b905080821215612465578194508792508a60400151858c602001516124549190613f9e565b61245e9190614023565b935061248d565b8094508893508a60400151858c600001516124809190613f9e565b61248a9190614023565b92505b50505b600083136124e05760405162461bcd60e51b815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161067f565b841561252e5781896020018181516124f89190614051565b905250885181908a9061250c908390614051565b9052506125198484614051565b8960400181815161252a9190614051565b9052505b95509550955095915050565b6000806000831261254c576001612550565b6000195b9050612567610d0b8561256286612a79565b612a90565b6125719082613f9e565b949350505050565b600061258482611947565b612596610d0b62015180610168613f69565b8460a001516125a59190613f9e565b6125af9190614023565b9050600081136106475760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b604482015260640161067f565b600080612609878787876000612aaf565b9050600061261961214683612b80565b90508361262b62015180610168613f69565b6126359083613f69565b61263f9190614092565b98975050505050505050565b600080600084136126925760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081b1c08185b5bdd5b9d607a1b604482015260640161067f565b604085015160208601516126a69086613f9e565b6126b09190614023565b60408601518651919350906126c59086613f9e565b6126cf9190614023565b9050821561270e5760408501516126e69085612a36565b604086015284516126f79082612a36565b855260208501516127089083612a36565b60208601525b935093915050565b600061064782613ef0565b61274c6040518060800160405280600081526020016000815260200160008152602001600081525090565b83610100015182106127705760405162461bcd60e51b815260040161067f90613f24565b6000828561010001516127839190613f0d565b905061278f8582612579565b825260208501516127a190859061253a565b60208301528451158015906127b95750602082015115155b6127fc5760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b604482015260640161067f565b61281a85600001518661014001518460200151856000015185612c13565b604083015260c085015161282e9082612c90565b6060830152509392505050565b600080600061285d866000015186602001518760000151886040015188612aaf565b9050600061287361286e8684612cc9565b612716565b606087015190915060008613156128de5760006128908483612cc9565b9050670de0b6b3a76400008112156128ba5760405162461bcd60e51b815260040161067f906140a6565b6128d66128cf83670de0b6b3a76400006140d5565b8490612cf8565b91505061290b565b612908816128f481670de0b6b3a76400006140d5565b6128fe9085613f9e565b61286e9190614023565b90505b606461291b896101200151611947565b6129259083613f9e565b61292f9190614023565b935061293b81836140d5565b9450505050935093915050565b6000806000831261295a57600161295e565b6000195b9050612567610d0b8561297086612a79565b612d16565b6000818761010001516129889190613f0d565b6101608801839052875190915061299f9085612a36565b875260208701516129b09084612a36565b6020880181905287516129d5916129c890889061253a565b885160408a0151856125f8565b6101408801819052612a1e5760405162461bcd60e51b81526020600482015260126024820152717a65726f206c6e496d706c6965645261746560701b604482015260640161067f565b50505050505050565b60606125718484600085612d2b565b600081831215612a735760405162461bcd60e51b81526020600482015260086024820152674e4547415449564560c01b604482015260640161067f565b50900390565b600080821361195957612a8b82613ef0565b610647565b6000670de0b6b3a7640000612aa58484613f69565b6109889190614092565b600080612abc8784612a36565b90506000612ad4612acd888a614051565b8390612cc9565b9050670d529ae9e8600000811315612b285760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b604482015260640161067f565b6000612b3382612e51565b905085612b408289612cc9565b612b4a9190614051565b9350670de0b6b3a7640000841215612b745760405162461bcd60e51b815260040161067f906140a6565b50505095945050505050565b6000808213612bc15760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015260640161067f565b670c7d713b49da000082138015612bdf5750670f43fc2c04ee000082125b15612c0a57670de0b6b3a7640000612bf683612ed1565b81612c0357612c03613f88565b0592915050565b61064782612ff0565b600080612c208684612c90565b9050670de0b6b3a7640000811215612c4a5760405162461bcd60e51b815260040161067f906140a6565b6000612c60612c59878a614051565b8990612cc9565b90506000612c6d82612e51565b9050612c798187612cc9565b612c8390846140d5565b9998505050505050505050565b600080612ca262015180610168613f69565b612cac8486613f69565b612cb69190614092565b9050612571612cc482611947565b613393565b600080612cde670de0b6b3a764000085613f9e565b9050828181612cef57612cef613f88565b05949350505050565b600080612d058385613f9e565b9050670de0b6b3a764000081612cef565b600082612aa5670de0b6b3a764000084613f69565b606082471015612d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161067f565b6001600160a01b0385163b612de35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161067f565b600080866001600160a01b03168587604051612dff9190614114565b60006040518083038185875af1925050503d8060008114612e3c576040519150601f19603f3d011682016040523d82523d6000602084013e612e41565b606091505b5091509150611dcf8282866137a1565b6000670de0b6b3a7640000821415612ea85760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b604482015260640161067f565b6000612ec6612ebf84670de0b6b3a76400006140d5565b8490612cc9565b905061098881612b80565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612f1257612f12613f88565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561303157613028826a0c097ce7bc90715b34b9f160241b8161302257613022613f88565b05612ff0565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b831261307c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126130b3576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff008400083126130fb576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312613136576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261316d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126131a457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126131d95768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261320457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312613239576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261326e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126132a2576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126132d6576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816132ff576132ff613f88565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff1982121580156133b8575068070c1cc73b00c800008213155b6133f75760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161067f565b60008212156134285761340c82600003613393565b6a0c097ce7bc90715b34b9f160241b81612c0357612c03613f88565b60006806f05b59d3b2000000831261346657506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61349c565b6803782dace9d9000000831261349857506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061349c565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126134ec5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412613528576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261356257682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261359c576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126135d557680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000841261360e5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613647576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126136805768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b606083156137b0575081610988565b8251156137c05782518084602001fd5b8160405162461bcd60e51b815260040161067f9190613806565b60005b838110156137f55781810151838201526020016137dd565b83811115611b605750506000910152565b60208152600082518060208401526138258160408501602087016137da565b601f01601f19169190910160400192915050565b6001600160a01b038116811461384e57600080fd5b50565b6000806040838503121561386457600080fd5b823561386f81613839565b946020939093013593505050565b60008083601f84011261388f57600080fd5b5081356001600160401b038111156138a657600080fd5b6020830191508360208285010111156138be57600080fd5b9250929050565b6000806000806000608086880312156138dd57600080fd5b85356138e881613839565b9450602086013593506040860135925060608601356001600160401b0381111561391157600080fd5b61391d8882890161387d565b969995985093965092949392505050565b60008060006060848603121561394357600080fd5b833561394e81613839565b9250602084013561395e81613839565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156139a75783518352928401929184019160010161398b565b50909695505050505050565b801515811461384e57600080fd5b6000602082840312156139d357600080fd5b8135610988816139b3565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151613a2360808401826001600160a01b03169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b6001600160a01b0391909116815260200190565b9283526020830191909152604082015260600190565b600060208284031215613ab457600080fd5b813561098881613839565b60008060008060608587031215613ad557600080fd5b8435613ae081613839565b93506020850135925060408501356001600160401b03811115613b0257600080fd5b613b0e8782880161387d565b95989497509550505050565b60008060408385031215613b2d57600080fd5b8235613b3881613839565b91506020830135613b4881613839565b809150509250929050565b600181811c90821680613b6757607f821691505b60208210811415610e7657634e487b7160e01b600052602260045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600e908201526d13505492d15517d156141254915160921b604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201526000613c30606083018486613be7565b9695505050505050565b600060208284031215613c4c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613c9157613c91613c53565b604052919050565b60006001600160401b03821115613cb257613cb2613c53565b5060051b60200190565b60006020808385031215613ccf57600080fd5b82516001600160401b03811115613ce557600080fd5b8301601f81018513613cf657600080fd5b8051613d09613d0482613c99565b613c69565b81815260059190911b82018301908381019087831115613d2857600080fd5b928401925b82841015611dcf57835182529284019290840190613d2d565b60006020808385031215613d5957600080fd5b82516001600160401b03811115613d6f57600080fd5b8301601f81018513613d8057600080fd5b8051613d8e613d0482613c99565b81815260059190911b82018301908381019087831115613dad57600080fd5b928401925b82841015611dcf578351613dc581613839565b82529284019290840190613db2565b600060208284031215613de657600080fd5b815161098881613839565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613e3157613e31613e07565b5060010190565b60008219821115613e4b57613e4b613e07565b500190565b60008060008060808587031215613e6657600080fd5b8451613e7181613839565b60208601519094506001600160601b0381168114613e8e57600080fd5b604086015190935063ffffffff81168114613ea857600080fd5b606086015190925060ff81168114613ebf57600080fd5b939692955090935050565b858152846020820152836040820152608060608201526000611dcf608083018486613be7565b6000600160ff1b821415613f0657613f06613e07565b5060000390565b600082821015613f1f57613f1f613e07565b500390565b6020808252600e908201526d1b585c9ad95d08195e1c1a5c995960921b604082015260600190565b600060208284031215613f5e57600080fd5b8151610988816139b3565b6000816000190483118215151615613f8357613f83613e07565b500290565b634e487b7160e01b600052601260045260246000fd5b60006001600160ff1b0381841382841380821686840486111615613fc457613fc4613e07565b600160ff1b6000871282811687830589121615613fe357613fe3613e07565b60008712925087820587128484161615613fff57613fff613e07565b8785058712818416161561401557614015613e07565b505050929093029392505050565b60008261403257614032613f88565b600160ff1b82146000198414161561404c5761404c613e07565b500590565b600080821280156001600160ff1b038490038513161561407357614073613e07565b600160ff1b839003841281161561408c5761408c613e07565b50500190565b6000826140a1576140a1613f88565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60008083128015600160ff1b8501841216156140f3576140f3613e07565b6001600160ff1b038401831381161561410e5761410e613e07565b50500390565b600082516141268184602087016137da565b919091019291505056feab7fa439d3be82c9e9dc9527df7b0ebc3b65c9911e3112698997d509abf02882ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122068415d27ccfd773f191203a39daa3f490615704022ad5e542c35d8897277ae6764736f6c63430008090033a2646970667358221220356f8cf3d71e615e0d9589c5a2006ab08f8a6f1429a8392b3f16bce70a2a811b64736f6c63430008090033";
226
277
 
227
278
  type PendleMarketFactoryConstructorParams =
228
279
  | [signer?: Signer]
@@ -246,7 +297,7 @@ export class PendleMarketFactory__factory extends ContractFactory {
246
297
  _governanceManager: string,
247
298
  _yieldContractFactory: string,
248
299
  _treasury: string,
249
- _feeRateRoot: BigNumberish,
300
+ _lnFeeRateRoot: BigNumberish,
250
301
  _rateOracleTimeWindow: BigNumberish,
251
302
  _reserveFeePercent: BigNumberish,
252
303
  overrides?: Overrides & { from?: string | Promise<string> }
@@ -255,7 +306,7 @@ export class PendleMarketFactory__factory extends ContractFactory {
255
306
  _governanceManager,
256
307
  _yieldContractFactory,
257
308
  _treasury,
258
- _feeRateRoot,
309
+ _lnFeeRateRoot,
259
310
  _rateOracleTimeWindow,
260
311
  _reserveFeePercent,
261
312
  overrides || {}
@@ -265,7 +316,7 @@ export class PendleMarketFactory__factory extends ContractFactory {
265
316
  _governanceManager: string,
266
317
  _yieldContractFactory: string,
267
318
  _treasury: string,
268
- _feeRateRoot: BigNumberish,
319
+ _lnFeeRateRoot: BigNumberish,
269
320
  _rateOracleTimeWindow: BigNumberish,
270
321
  _reserveFeePercent: BigNumberish,
271
322
  overrides?: Overrides & { from?: string | Promise<string> }
@@ -274,7 +325,7 @@ export class PendleMarketFactory__factory extends ContractFactory {
274
325
  _governanceManager,
275
326
  _yieldContractFactory,
276
327
  _treasury,
277
- _feeRateRoot,
328
+ _lnFeeRateRoot,
278
329
  _rateOracleTimeWindow,
279
330
  _reserveFeePercent,
280
331
  overrides || {}