@pendle/core-v2 0.6.3 → 0.6.4

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 (138) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +4 -0
  2. package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.json +495 -0
  3. package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +4 -0
  4. package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.json +10 -0
  5. package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +4 -0
  6. package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.json +77 -0
  7. package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +4 -0
  8. package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.json +90 -0
  9. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.json +556 -0
  11. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +641 -0
  13. package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +4 -0
  14. package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.json +333 -0
  15. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +4 -0
  16. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +842 -0
  17. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +4 -0
  18. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +265 -0
  19. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +4 -0
  20. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +452 -0
  21. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +4 -0
  22. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +230 -0
  23. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +4 -0
  24. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +783 -0
  25. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +4 -0
  26. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.json +10 -0
  27. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +4 -0
  28. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +766 -0
  29. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +4 -0
  30. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +641 -0
  31. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +4 -0
  32. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +623 -0
  33. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +4 -0
  34. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +623 -0
  35. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +4 -0
  36. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +339 -0
  37. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +4 -0
  38. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +808 -0
  39. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +4 -0
  40. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +862 -0
  41. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +4 -0
  42. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +58 -0
  43. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +4 -0
  44. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +750 -0
  45. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +4 -0
  46. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +55 -0
  47. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +4 -0
  48. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +521 -0
  49. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +4 -0
  50. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +10 -0
  51. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +4 -0
  52. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +185 -0
  53. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +4 -0
  54. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +210 -0
  55. package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +4 -0
  56. package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.json +10 -0
  57. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +4 -0
  58. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.json +213 -0
  59. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +4 -0
  60. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.json +87 -0
  61. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +4 -0
  62. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.json +59 -0
  63. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +4 -0
  64. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +44 -0
  65. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +4 -0
  66. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.json +662 -0
  67. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +4 -0
  68. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.json +760 -0
  69. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +4 -0
  70. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +555 -0
  71. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +4 -0
  72. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +55 -0
  73. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +4 -0
  74. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +306 -0
  75. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +4 -0
  76. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +894 -0
  77. package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +4 -0
  78. package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.json +259 -0
  79. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +4 -0
  80. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.json +24 -0
  81. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +4 -0
  82. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +670 -0
  83. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +4 -0
  84. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.json +67 -0
  85. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +4 -0
  86. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +96 -0
  87. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +4 -0
  88. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.json +34 -0
  89. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +4 -0
  90. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.json +24 -0
  91. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +4 -0
  92. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +334 -0
  93. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +4 -0
  94. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +820 -0
  95. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +4 -0
  96. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +206 -0
  97. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +4 -0
  98. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +595 -0
  99. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +4 -0
  100. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.json +258 -0
  101. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +4 -0
  102. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.json +207 -0
  103. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +4 -0
  104. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.json +92 -0
  105. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +4 -0
  106. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.json +252 -0
  107. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +4 -0
  108. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.json +119 -0
  109. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +4 -0
  110. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.json +62 -0
  111. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +4 -0
  112. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.json +62 -0
  113. package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +4 -0
  114. package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.json +10 -0
  115. package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +4 -0
  116. package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.json +10 -0
  117. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +4 -0
  118. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +10 -0
  119. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +4 -0
  120. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +10 -0
  121. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +4 -0
  122. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +10 -0
  123. package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +4 -0
  124. package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.json +10 -0
  125. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +4 -0
  126. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +10 -0
  127. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +4 -0
  128. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +10 -0
  129. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +4 -0
  130. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +87 -0
  131. package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +4 -0
  132. package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json +37 -0
  133. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +4 -0
  134. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.json +24 -0
  135. package/deployments/kovan.json +34 -0
  136. package/package.json +4 -2
  137. package/typechain-types/RouterStatic.ts +4 -4
  138. package/typechain-types/factories/RouterStatic__factory.ts +3 -3
@@ -0,0 +1,842 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PendleMarket",
4
+ "sourceName": "contracts/core/PendleMarket.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_PT",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "int256",
15
+ "name": "_scalarRoot",
16
+ "type": "int256"
17
+ },
18
+ {
19
+ "internalType": "int256",
20
+ "name": "_initialAnchor",
21
+ "type": "int256"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "anonymous": false,
29
+ "inputs": [
30
+ {
31
+ "indexed": true,
32
+ "internalType": "address",
33
+ "name": "receiver",
34
+ "type": "address"
35
+ },
36
+ {
37
+ "indexed": false,
38
+ "internalType": "uint256",
39
+ "name": "lpToAccount",
40
+ "type": "uint256"
41
+ },
42
+ {
43
+ "indexed": false,
44
+ "internalType": "uint256",
45
+ "name": "scyUsed",
46
+ "type": "uint256"
47
+ },
48
+ {
49
+ "indexed": false,
50
+ "internalType": "uint256",
51
+ "name": "ptUsed",
52
+ "type": "uint256"
53
+ }
54
+ ],
55
+ "name": "AddLiquidity",
56
+ "type": "event"
57
+ },
58
+ {
59
+ "anonymous": false,
60
+ "inputs": [
61
+ {
62
+ "indexed": true,
63
+ "internalType": "address",
64
+ "name": "owner",
65
+ "type": "address"
66
+ },
67
+ {
68
+ "indexed": true,
69
+ "internalType": "address",
70
+ "name": "spender",
71
+ "type": "address"
72
+ },
73
+ {
74
+ "indexed": false,
75
+ "internalType": "uint256",
76
+ "name": "value",
77
+ "type": "uint256"
78
+ }
79
+ ],
80
+ "name": "Approval",
81
+ "type": "event"
82
+ },
83
+ {
84
+ "anonymous": false,
85
+ "inputs": [
86
+ {
87
+ "indexed": true,
88
+ "internalType": "address",
89
+ "name": "receiver",
90
+ "type": "address"
91
+ },
92
+ {
93
+ "indexed": false,
94
+ "internalType": "uint256",
95
+ "name": "lpRemoved",
96
+ "type": "uint256"
97
+ },
98
+ {
99
+ "indexed": false,
100
+ "internalType": "uint256",
101
+ "name": "scyToAccount",
102
+ "type": "uint256"
103
+ },
104
+ {
105
+ "indexed": false,
106
+ "internalType": "uint256",
107
+ "name": "ptToAccount",
108
+ "type": "uint256"
109
+ }
110
+ ],
111
+ "name": "RemoveLiquidity",
112
+ "type": "event"
113
+ },
114
+ {
115
+ "anonymous": false,
116
+ "inputs": [
117
+ {
118
+ "indexed": true,
119
+ "internalType": "address",
120
+ "name": "receiver",
121
+ "type": "address"
122
+ },
123
+ {
124
+ "indexed": false,
125
+ "internalType": "int256",
126
+ "name": "ptToAccount",
127
+ "type": "int256"
128
+ },
129
+ {
130
+ "indexed": false,
131
+ "internalType": "int256",
132
+ "name": "scyToAccount",
133
+ "type": "int256"
134
+ },
135
+ {
136
+ "indexed": false,
137
+ "internalType": "uint256",
138
+ "name": "netScyToReserve",
139
+ "type": "uint256"
140
+ }
141
+ ],
142
+ "name": "Swap",
143
+ "type": "event"
144
+ },
145
+ {
146
+ "anonymous": false,
147
+ "inputs": [
148
+ {
149
+ "indexed": true,
150
+ "internalType": "address",
151
+ "name": "from",
152
+ "type": "address"
153
+ },
154
+ {
155
+ "indexed": true,
156
+ "internalType": "address",
157
+ "name": "to",
158
+ "type": "address"
159
+ },
160
+ {
161
+ "indexed": false,
162
+ "internalType": "uint256",
163
+ "name": "value",
164
+ "type": "uint256"
165
+ }
166
+ ],
167
+ "name": "Transfer",
168
+ "type": "event"
169
+ },
170
+ {
171
+ "anonymous": false,
172
+ "inputs": [
173
+ {
174
+ "indexed": true,
175
+ "internalType": "uint256",
176
+ "name": "timestamp",
177
+ "type": "uint256"
178
+ },
179
+ {
180
+ "indexed": false,
181
+ "internalType": "uint256",
182
+ "name": "lnLastImpliedRate",
183
+ "type": "uint256"
184
+ }
185
+ ],
186
+ "name": "UpdateImpliedRate",
187
+ "type": "event"
188
+ },
189
+ {
190
+ "inputs": [],
191
+ "name": "PT",
192
+ "outputs": [
193
+ {
194
+ "internalType": "address",
195
+ "name": "",
196
+ "type": "address"
197
+ }
198
+ ],
199
+ "stateMutability": "view",
200
+ "type": "function"
201
+ },
202
+ {
203
+ "inputs": [],
204
+ "name": "SCY",
205
+ "outputs": [
206
+ {
207
+ "internalType": "address",
208
+ "name": "",
209
+ "type": "address"
210
+ }
211
+ ],
212
+ "stateMutability": "view",
213
+ "type": "function"
214
+ },
215
+ {
216
+ "inputs": [],
217
+ "name": "YT",
218
+ "outputs": [
219
+ {
220
+ "internalType": "address",
221
+ "name": "",
222
+ "type": "address"
223
+ }
224
+ ],
225
+ "stateMutability": "view",
226
+ "type": "function"
227
+ },
228
+ {
229
+ "inputs": [],
230
+ "name": "_storage",
231
+ "outputs": [
232
+ {
233
+ "internalType": "int128",
234
+ "name": "totalPt",
235
+ "type": "int128"
236
+ },
237
+ {
238
+ "internalType": "int128",
239
+ "name": "totalScy",
240
+ "type": "int128"
241
+ },
242
+ {
243
+ "internalType": "uint96",
244
+ "name": "lastLnImpliedRate",
245
+ "type": "uint96"
246
+ },
247
+ {
248
+ "internalType": "uint96",
249
+ "name": "oracleRate",
250
+ "type": "uint96"
251
+ },
252
+ {
253
+ "internalType": "uint32",
254
+ "name": "lastTradeTime",
255
+ "type": "uint32"
256
+ },
257
+ {
258
+ "internalType": "uint8",
259
+ "name": "_reentrancyStatus",
260
+ "type": "uint8"
261
+ }
262
+ ],
263
+ "stateMutability": "view",
264
+ "type": "function"
265
+ },
266
+ {
267
+ "inputs": [
268
+ {
269
+ "internalType": "address",
270
+ "name": "receiver",
271
+ "type": "address"
272
+ },
273
+ {
274
+ "internalType": "uint256",
275
+ "name": "scyDesired",
276
+ "type": "uint256"
277
+ },
278
+ {
279
+ "internalType": "uint256",
280
+ "name": "ptDesired",
281
+ "type": "uint256"
282
+ },
283
+ {
284
+ "internalType": "bytes",
285
+ "name": "data",
286
+ "type": "bytes"
287
+ }
288
+ ],
289
+ "name": "addLiquidity",
290
+ "outputs": [
291
+ {
292
+ "internalType": "uint256",
293
+ "name": "lpToAccount",
294
+ "type": "uint256"
295
+ },
296
+ {
297
+ "internalType": "uint256",
298
+ "name": "scyUsed",
299
+ "type": "uint256"
300
+ },
301
+ {
302
+ "internalType": "uint256",
303
+ "name": "ptUsed",
304
+ "type": "uint256"
305
+ }
306
+ ],
307
+ "stateMutability": "nonpayable",
308
+ "type": "function"
309
+ },
310
+ {
311
+ "inputs": [
312
+ {
313
+ "internalType": "address",
314
+ "name": "owner",
315
+ "type": "address"
316
+ },
317
+ {
318
+ "internalType": "address",
319
+ "name": "spender",
320
+ "type": "address"
321
+ }
322
+ ],
323
+ "name": "allowance",
324
+ "outputs": [
325
+ {
326
+ "internalType": "uint256",
327
+ "name": "",
328
+ "type": "uint256"
329
+ }
330
+ ],
331
+ "stateMutability": "view",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [
336
+ {
337
+ "internalType": "address",
338
+ "name": "spender",
339
+ "type": "address"
340
+ },
341
+ {
342
+ "internalType": "uint256",
343
+ "name": "amount",
344
+ "type": "uint256"
345
+ }
346
+ ],
347
+ "name": "approve",
348
+ "outputs": [
349
+ {
350
+ "internalType": "bool",
351
+ "name": "",
352
+ "type": "bool"
353
+ }
354
+ ],
355
+ "stateMutability": "nonpayable",
356
+ "type": "function"
357
+ },
358
+ {
359
+ "inputs": [
360
+ {
361
+ "internalType": "address",
362
+ "name": "account",
363
+ "type": "address"
364
+ }
365
+ ],
366
+ "name": "balanceOf",
367
+ "outputs": [
368
+ {
369
+ "internalType": "uint256",
370
+ "name": "",
371
+ "type": "uint256"
372
+ }
373
+ ],
374
+ "stateMutability": "view",
375
+ "type": "function"
376
+ },
377
+ {
378
+ "inputs": [],
379
+ "name": "decimals",
380
+ "outputs": [
381
+ {
382
+ "internalType": "uint8",
383
+ "name": "",
384
+ "type": "uint8"
385
+ }
386
+ ],
387
+ "stateMutability": "view",
388
+ "type": "function"
389
+ },
390
+ {
391
+ "inputs": [
392
+ {
393
+ "internalType": "address",
394
+ "name": "spender",
395
+ "type": "address"
396
+ },
397
+ {
398
+ "internalType": "uint256",
399
+ "name": "subtractedValue",
400
+ "type": "uint256"
401
+ }
402
+ ],
403
+ "name": "decreaseAllowance",
404
+ "outputs": [
405
+ {
406
+ "internalType": "bool",
407
+ "name": "",
408
+ "type": "bool"
409
+ }
410
+ ],
411
+ "stateMutability": "nonpayable",
412
+ "type": "function"
413
+ },
414
+ {
415
+ "inputs": [],
416
+ "name": "expiry",
417
+ "outputs": [
418
+ {
419
+ "internalType": "uint256",
420
+ "name": "",
421
+ "type": "uint256"
422
+ }
423
+ ],
424
+ "stateMutability": "view",
425
+ "type": "function"
426
+ },
427
+ {
428
+ "inputs": [],
429
+ "name": "factory",
430
+ "outputs": [
431
+ {
432
+ "internalType": "address",
433
+ "name": "",
434
+ "type": "address"
435
+ }
436
+ ],
437
+ "stateMutability": "view",
438
+ "type": "function"
439
+ },
440
+ {
441
+ "inputs": [
442
+ {
443
+ "internalType": "address",
444
+ "name": "spender",
445
+ "type": "address"
446
+ },
447
+ {
448
+ "internalType": "uint256",
449
+ "name": "addedValue",
450
+ "type": "uint256"
451
+ }
452
+ ],
453
+ "name": "increaseAllowance",
454
+ "outputs": [
455
+ {
456
+ "internalType": "bool",
457
+ "name": "",
458
+ "type": "bool"
459
+ }
460
+ ],
461
+ "stateMutability": "nonpayable",
462
+ "type": "function"
463
+ },
464
+ {
465
+ "inputs": [],
466
+ "name": "initialAnchor",
467
+ "outputs": [
468
+ {
469
+ "internalType": "int256",
470
+ "name": "",
471
+ "type": "int256"
472
+ }
473
+ ],
474
+ "stateMutability": "view",
475
+ "type": "function"
476
+ },
477
+ {
478
+ "inputs": [],
479
+ "name": "isExpired",
480
+ "outputs": [
481
+ {
482
+ "internalType": "bool",
483
+ "name": "",
484
+ "type": "bool"
485
+ }
486
+ ],
487
+ "stateMutability": "view",
488
+ "type": "function"
489
+ },
490
+ {
491
+ "inputs": [],
492
+ "name": "name",
493
+ "outputs": [
494
+ {
495
+ "internalType": "string",
496
+ "name": "",
497
+ "type": "string"
498
+ }
499
+ ],
500
+ "stateMutability": "view",
501
+ "type": "function"
502
+ },
503
+ {
504
+ "inputs": [
505
+ {
506
+ "internalType": "bool",
507
+ "name": "updateRateOracle",
508
+ "type": "bool"
509
+ }
510
+ ],
511
+ "name": "readState",
512
+ "outputs": [
513
+ {
514
+ "components": [
515
+ {
516
+ "internalType": "int256",
517
+ "name": "totalPt",
518
+ "type": "int256"
519
+ },
520
+ {
521
+ "internalType": "int256",
522
+ "name": "totalScy",
523
+ "type": "int256"
524
+ },
525
+ {
526
+ "internalType": "int256",
527
+ "name": "totalLp",
528
+ "type": "int256"
529
+ },
530
+ {
531
+ "internalType": "uint256",
532
+ "name": "oracleRate",
533
+ "type": "uint256"
534
+ },
535
+ {
536
+ "internalType": "address",
537
+ "name": "treasury",
538
+ "type": "address"
539
+ },
540
+ {
541
+ "internalType": "int256",
542
+ "name": "scalarRoot",
543
+ "type": "int256"
544
+ },
545
+ {
546
+ "internalType": "uint256",
547
+ "name": "lnFeeRateRoot",
548
+ "type": "uint256"
549
+ },
550
+ {
551
+ "internalType": "uint256",
552
+ "name": "rateOracleTimeWindow",
553
+ "type": "uint256"
554
+ },
555
+ {
556
+ "internalType": "uint256",
557
+ "name": "expiry",
558
+ "type": "uint256"
559
+ },
560
+ {
561
+ "internalType": "uint256",
562
+ "name": "reserveFeePercent",
563
+ "type": "uint256"
564
+ },
565
+ {
566
+ "internalType": "uint256",
567
+ "name": "lastLnImpliedRate",
568
+ "type": "uint256"
569
+ },
570
+ {
571
+ "internalType": "uint256",
572
+ "name": "lastTradeTime",
573
+ "type": "uint256"
574
+ }
575
+ ],
576
+ "internalType": "struct MarketState",
577
+ "name": "market",
578
+ "type": "tuple"
579
+ }
580
+ ],
581
+ "stateMutability": "view",
582
+ "type": "function"
583
+ },
584
+ {
585
+ "inputs": [],
586
+ "name": "readTokens",
587
+ "outputs": [
588
+ {
589
+ "internalType": "contract ISuperComposableYield",
590
+ "name": "_SCY",
591
+ "type": "address"
592
+ },
593
+ {
594
+ "internalType": "contract IPPrincipalToken",
595
+ "name": "_PT",
596
+ "type": "address"
597
+ },
598
+ {
599
+ "internalType": "contract IPYieldToken",
600
+ "name": "_YT",
601
+ "type": "address"
602
+ }
603
+ ],
604
+ "stateMutability": "view",
605
+ "type": "function"
606
+ },
607
+ {
608
+ "inputs": [],
609
+ "name": "redeemScyReward",
610
+ "outputs": [
611
+ {
612
+ "internalType": "uint256[]",
613
+ "name": "outAmounts",
614
+ "type": "uint256[]"
615
+ }
616
+ ],
617
+ "stateMutability": "nonpayable",
618
+ "type": "function"
619
+ },
620
+ {
621
+ "inputs": [
622
+ {
623
+ "internalType": "address",
624
+ "name": "receiver",
625
+ "type": "address"
626
+ },
627
+ {
628
+ "internalType": "uint256",
629
+ "name": "lpToRemove",
630
+ "type": "uint256"
631
+ },
632
+ {
633
+ "internalType": "bytes",
634
+ "name": "data",
635
+ "type": "bytes"
636
+ }
637
+ ],
638
+ "name": "removeLiquidity",
639
+ "outputs": [
640
+ {
641
+ "internalType": "uint256",
642
+ "name": "scyToAccount",
643
+ "type": "uint256"
644
+ },
645
+ {
646
+ "internalType": "uint256",
647
+ "name": "ptToAccount",
648
+ "type": "uint256"
649
+ }
650
+ ],
651
+ "stateMutability": "nonpayable",
652
+ "type": "function"
653
+ },
654
+ {
655
+ "inputs": [],
656
+ "name": "scalarRoot",
657
+ "outputs": [
658
+ {
659
+ "internalType": "int256",
660
+ "name": "",
661
+ "type": "int256"
662
+ }
663
+ ],
664
+ "stateMutability": "view",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "inputs": [
669
+ {
670
+ "internalType": "address",
671
+ "name": "receiver",
672
+ "type": "address"
673
+ },
674
+ {
675
+ "internalType": "uint256",
676
+ "name": "exactPtIn",
677
+ "type": "uint256"
678
+ },
679
+ {
680
+ "internalType": "uint256",
681
+ "name": "minScyOut",
682
+ "type": "uint256"
683
+ },
684
+ {
685
+ "internalType": "bytes",
686
+ "name": "data",
687
+ "type": "bytes"
688
+ }
689
+ ],
690
+ "name": "swapExactPtForScy",
691
+ "outputs": [
692
+ {
693
+ "internalType": "uint256",
694
+ "name": "netScyOut",
695
+ "type": "uint256"
696
+ },
697
+ {
698
+ "internalType": "uint256",
699
+ "name": "netScyToReserve",
700
+ "type": "uint256"
701
+ }
702
+ ],
703
+ "stateMutability": "nonpayable",
704
+ "type": "function"
705
+ },
706
+ {
707
+ "inputs": [
708
+ {
709
+ "internalType": "address",
710
+ "name": "receiver",
711
+ "type": "address"
712
+ },
713
+ {
714
+ "internalType": "uint256",
715
+ "name": "exactPtOut",
716
+ "type": "uint256"
717
+ },
718
+ {
719
+ "internalType": "uint256",
720
+ "name": "maxScyIn",
721
+ "type": "uint256"
722
+ },
723
+ {
724
+ "internalType": "bytes",
725
+ "name": "data",
726
+ "type": "bytes"
727
+ }
728
+ ],
729
+ "name": "swapScyForExactPt",
730
+ "outputs": [
731
+ {
732
+ "internalType": "uint256",
733
+ "name": "netScyIn",
734
+ "type": "uint256"
735
+ },
736
+ {
737
+ "internalType": "uint256",
738
+ "name": "netScyToReserve",
739
+ "type": "uint256"
740
+ }
741
+ ],
742
+ "stateMutability": "nonpayable",
743
+ "type": "function"
744
+ },
745
+ {
746
+ "inputs": [],
747
+ "name": "symbol",
748
+ "outputs": [
749
+ {
750
+ "internalType": "string",
751
+ "name": "",
752
+ "type": "string"
753
+ }
754
+ ],
755
+ "stateMutability": "view",
756
+ "type": "function"
757
+ },
758
+ {
759
+ "inputs": [],
760
+ "name": "timeCreated",
761
+ "outputs": [
762
+ {
763
+ "internalType": "uint256",
764
+ "name": "",
765
+ "type": "uint256"
766
+ }
767
+ ],
768
+ "stateMutability": "view",
769
+ "type": "function"
770
+ },
771
+ {
772
+ "inputs": [],
773
+ "name": "totalSupply",
774
+ "outputs": [
775
+ {
776
+ "internalType": "uint256",
777
+ "name": "",
778
+ "type": "uint256"
779
+ }
780
+ ],
781
+ "stateMutability": "view",
782
+ "type": "function"
783
+ },
784
+ {
785
+ "inputs": [
786
+ {
787
+ "internalType": "address",
788
+ "name": "to",
789
+ "type": "address"
790
+ },
791
+ {
792
+ "internalType": "uint256",
793
+ "name": "amount",
794
+ "type": "uint256"
795
+ }
796
+ ],
797
+ "name": "transfer",
798
+ "outputs": [
799
+ {
800
+ "internalType": "bool",
801
+ "name": "",
802
+ "type": "bool"
803
+ }
804
+ ],
805
+ "stateMutability": "nonpayable",
806
+ "type": "function"
807
+ },
808
+ {
809
+ "inputs": [
810
+ {
811
+ "internalType": "address",
812
+ "name": "from",
813
+ "type": "address"
814
+ },
815
+ {
816
+ "internalType": "address",
817
+ "name": "to",
818
+ "type": "address"
819
+ },
820
+ {
821
+ "internalType": "uint256",
822
+ "name": "amount",
823
+ "type": "uint256"
824
+ }
825
+ ],
826
+ "name": "transferFrom",
827
+ "outputs": [
828
+ {
829
+ "internalType": "bool",
830
+ "name": "",
831
+ "type": "bool"
832
+ }
833
+ ],
834
+ "stateMutability": "nonpayable",
835
+ "type": "function"
836
+ }
837
+ ],
838
+ "bytecode": "0x6101a06040523480156200001257600080fd5b506040516200470838038062004708833981016040819052620000359162000387565b6040518060400160405280600d81526020016c14195b991b194813585c9ad95d609a1b8152506040518060400160405280600a8152602001691411539113114b53141560b21b8152506012856001600160a01b031663e184c9be6040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ba57600080fd5b505afa158015620000cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f59190620003bf565b8351849084906200010e906003906020850190620002c4565b50805162000124906004906020840190620002c4565b5050504281116200016c5760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f45585049525960901b604482015260640160405180910390fd5b60ff9091166080524260a05260c05250503360e0526001600160a01b038316610100819052604080516323dfd63160e11b815290516347bfac6291600480820192602092909190829003018186803b158015620001c857600080fd5b505afa158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002039190620003d9565b6001600160a01b0316610120816001600160a01b031681525050826001600160a01b031663781c18db6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025757600080fd5b505afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002929190620003d9565b6001600160a01b0316610140526101609190915261018052506006805460ff60e01b1916600160e01b1790556200043b565b828054620002d290620003fe565b90600052602060002090601f016020900481019282620002f6576000855562000341565b82601f106200031157805160ff191683800117855562000341565b8280016001018555821562000341579182015b828111156200034157825182559160200191906001019062000324565b506200034f92915062000353565b5090565b5b808211156200034f576000815560010162000354565b80516001600160a01b03811681146200038257600080fd5b919050565b6000806000606084860312156200039d57600080fd5b620003a8846200036a565b925060208401519150604084015190509250925092565b600060208284031215620003d257600080fd5b5051919050565b600060208284031215620003ec57600080fd5b620003f7826200036a565b9392505050565b600181811c908216806200041357607f821691505b602082108114156200043557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516141a662000562600039600081816103d10152610f240152600081816104260152610dfd015260008181610257015261039701526000818161020a01528181610318015281816106f001528181610778015281816107b2015281816109a901528181610a3a01528181610ed80152818161108b0152818161120b0152818161149501528181611556015261160601526000818161022f0152818161051e0152818161086201528181610fd90152818161123f015261151c0152600081816104f701528181610ad30152610d32015260008181610288015281816105580152818161069d01528181610e2301526114420152600061057f015260006102b601526141a66000f3fe608060405234801561001057600080fd5b50600436106101545760003560e01c806306fdde0314610159578063095ea7b3146101775780631128c55e1461019a57806318160ddd146101c257806323b872dd146101d45780632b20096c146101e75780632c8ce6bc146101fc5780632f13b60c14610286578063313ce567146102af57806339509351146102e057806339e718f6146102f357806347bfac62146103135780635308fcb11461034757806370a0823114610369578063781c18db14610392578063863cb94e146103b957806391e7c015146103cc57806395d89b41146103f3578063a457c2d7146103fb578063a9059cbb1461040e578063af247da314610421578063b4c3da4614610448578063c3fb90d61461045b578063c45a0155146104f2578063d94073d414610519578063dd62ed3e14610540578063e184c9be14610553578063f1653f6e1461057a575b600080fd5b6101616105a1565b60405161016e9190613806565b60405180910390f35b61018a610185366004613851565b610633565b604051901515815260200161016e565b6101ad6101a83660046138c5565b61064d565b6040805192835260208301919091520161016e565b6002545b60405190815260200161016e565b61018a6101e236600461392e565b610969565b6101ef61098f565b60405161016e919061396f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915260600161016e565b7f000000000000000000000000000000000000000000000000000000000000000042101561018a565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016e565b61018a6102ee366004613851565b610bd8565b6103066103013660046139c1565b610c17565b60405161016e91906139de565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405161016e9190613a78565b61035a6103553660046138c5565b610e7c565b60405161016e93929190613a8c565b6101c6610377366004613aa2565b6001600160a01b031660009081526020819052604090205490565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6103c7366004613abf565b61119a565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b610161611341565b61018a610409366004613851565b611350565b61018a61041c366004613851565b6113ed565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6104563660046138c5565b6113fb565b6005546006546104a891600f81810b92600160801b909204900b906001600160601b0380821691600160601b810490911690600160c01b810463ffffffff1690600160e01b900460ff1686565b60408051600f97880b81529590960b60208601526001600160601b03938416958501959095529116606083015263ffffffff16608082015260ff90911660a082015260c00161016e565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c661054e366004613b1a565b6116d7565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546105b090613b53565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90613b53565b80156106295780601f106105fe57610100808354040283529160200191610629565b820191906000526020600020905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b600033610641818585611702565b60019150505b92915050565b6006546000908190600160e01b900460ff16600214156106885760405162461bcd60e51b815260040161067f90613b88565b60405180910390fd5b6006805460ff60e01b1916600160e11b1790557f000000000000000000000000000000000000000000000000000000000000000042106106da5760405162461bcd60e51b815260040161067f90613bbf565b60006106e66001610c17565b905061071f6107147f0000000000000000000000000000000000000000000000000000000000000000611826565b82908942600161189b565b90935091508583101561076b5760405162461bcd60e51b81526020600482015260146024820152731a5b9cdd59999a58da595b9d081cd8de481bdd5d60621b604482015260640161067f565b61079f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689856118dc565b60808101516107d9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690846118dc565b831561084b573363fa483e726107ee89611933565b6107f786611947565b88886040518563ffffffff1660e01b81526004016108189493929190613c10565b600060405180830381600087803b15801561083257600080fd5b505af1158015610846573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610897903090600401613a78565b60206040518083038186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190613c3a565b81516108f29061195d565b11156108fd57600080fd5b6109068161196c565b876001600160a01b031660008051602061413183398151915261092889611933565b61093186611947565b8560405161094193929190613a8c565b60405180910390a2506006805460ff60e01b1916600160e01b17905590969095509350505050565b600033610977858285611aec565b610982858585611b66565b60019150505b9392505050565b6040516359436f3b60e11b81526060906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de76906109de903090600401613a78565b600060405180830381600087803b1580156109f857600080fd5b505af1158015610a0c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a349190810190613cbc565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610acd9190810190613d46565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2a57600080fd5b505afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b629190613dd4565b905060005b8251811015610bd257610bc082858381518110610b8657610b86613df1565b6020026020010151858481518110610ba057610ba0613df1565b60200260200101516001600160a01b03166118dc9092919063ffffffff16565b80610bca81613e1d565b915050610b67565b50505090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106419082908690610c12908790613e38565b611702565b610c846040518061018001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160c081018252600554600f81810b808452600160801b909204810b60208085019182526006546001600160601b0380821697870197909752600160601b81049096166060860152600160c01b860463ffffffff166080860152600160e01b90950460ff1660a08501529185529051900b91830191909152600254610d1090611947565b611947565b82604001818152505080606001516001600160601b03168260600181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323c113dc6040518163ffffffff1660e01b815260040160806040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190613e50565b60ff1661012086015263ffffffff90811660e08601526001600160601b0391821660c08601526001600160a01b039092166080808601919091527f000000000000000000000000000000000000000000000000000000000000000060a08601527f00000000000000000000000000000000000000000000000000000000000000006101008601526040840151909116610140850152820151166101608301528215610e7657610e708242611d22565b60608301525b50919050565b60065460009081908190600160e01b900460ff1660021415610eb05760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b1790556000610ecf6001610c17565b90506000610efc7f0000000000000000000000000000000000000000000000000000000000000000611826565b90506000610f0e83838c8c6001611dda565b9198509650945090508015610f5457610f4983837f000000000000000000000000000000000000000000000000000000000000000042611e47565b610f54600182611edc565b610f5e8b87611edc565b8615610fc25760405163096006e960e11b815233906312c00dd290610f8f908990899089908e908e90600401613eca565b600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061100e903090600401613a78565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e9190613c3a565b83516110699061195d565b111561107457600080fd5b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110c0903090600401613a78565b60206040518083038186803b1580156110d857600080fd5b505afa1580156110ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111109190613c3a565b61111d846020015161195d565b111561112857600080fd5b6111318361196c565b8a6001600160a01b03167fbeb3885786d637a474cbc287c0a44587231633a077f0bd30354d5a4b18996fce87878760405161116e93929190613a8c565b60405180910390a250506006805460ff60e01b1916600160e01b17905550919790965090945092505050565b6006546000908190600160e01b900460ff16600214156111cc5760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b17905560006111eb6001610c17565b90506111f981876001611fa9565b90935091506112326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688856118dc565b6112666001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688846118dc565b83156112ca5760405163c70cd41360e01b8152339063c70cd41390611297908990879087908b908b90600401613eca565b600060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050505b6112d43087611fe6565b6112dd8161196c565b866001600160a01b03167f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa87858560405161131a93929190613a8c565b60405180910390a2506006805460ff60e01b1916600160e01b179055909590945092505050565b6060600480546105b090613b53565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156113d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161067f565b6113e28286868403611702565b506001949350505050565b600033610641818585611b66565b6006546000908190600160e01b900460ff166002141561142d5760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b1790557f0000000000000000000000000000000000000000000000000000000000000000421061147f5760405162461bcd60e51b815260040161067f90613bbf565b600061148b6001610c17565b90506114c46114b97f0000000000000000000000000000000000000000000000000000000000000000611826565b829089426001612122565b90935091508583111561150f5760405162461bcd60e51b81526020600482015260136024820152721cd8de481a5b88195e18d95959081b1a5b5a5d606a1b604482015260640161067f565b6115436001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689896118dc565b608081015161157d906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690846118dc565b83156115ef573363fa483e7261159289611947565b61159b86611933565b88886040518563ffffffff1660e01b81526004016115bc9493929190613c10565b600060405180830381600087803b1580156115d657600080fd5b505af11580156115ea573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061163b903090600401613a78565b60206040518083038186803b15801561165357600080fd5b505afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b9190613c3a565b611698826020015161195d565b11156116a357600080fd5b6116ac8161196c565b876001600160a01b03166000805160206141318339815191526116ce89611947565b61093186611933565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166117645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067f565b6001600160a01b0382166117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106479190613c3a565b6000806000806118b689896118af8a611933565b898961214b565b915091506118c38261195d565b93506118ce8161195d565b925050509550959350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261192e908490612216565b505050565b600061193e82611947565b61064790613ef0565b6000600160ff1b821061195957600080fd5b5090565b60008082121561195957600080fd5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915281516119a9906122e8565b600f0b815260208201516119bc906122e8565b600f0b60208201526101408201516119d3906122fa565b6001600160601b0316604082015260608201516119ef906122fa565b6001600160601b03166060820152610160820151611a0c9061230c565b63ffffffff1660808201819052815160208301516001600160801b03908116600160801b0291161760055560408083015160068054606086015160a087015160ff16600160e01b0260ff60e01b19600160c01b9097029690961664ffffffffff60c01b196001600160601b03928316600160601b026001600160c01b0319909416929095169190911791909117929092169190911792909217909155610140830151905142917f5c0e21d57bb4cf91d8fe238d6f92e2685a695371b19209afcce6217b478f83e191611ae091815260200190565b60405180910390a25050565b6000611af884846116d7565b90506000198114611b605781811015611b535760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161067f565b611b608484848403611702565b50505050565b6001600160a01b038316611bca5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067f565b6001600160a01b038216611c2c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067f565b6001600160a01b03831660009081526020819052604090205481811015611ca45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161067f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611cdb908490613e38565b92505081905550826001600160a01b0316846001600160a01b031660008051602061415183398151915284604051611d1591815260200190565b60405180910390a3611b60565b6000818361016001511115611d3d5750610140820151610647565b600083610160015183611d509190613f0d565b90508360e00151811115611d6b575050610140820151610647565b6000611d848560e001518361231e90919063ffffffff16565b90506000611d9a82670de0b6b3a7640000613f0d565b90506000611db582886060015161234d90919063ffffffff16565b610160880151611dc5908561234d565b611dcf9190613e38565b979650505050505050565b600080600080600080600080611e038d8d611df48e611947565b611dfd8e611947565b8d61236b565b9350935093509350611e148461195d565b9750611e1f8361195d565b9650611e2a8261195d565b9550611e358161195d565b94505050505095509550955095915050565b8361010001518110611e6b5760405162461bcd60e51b815260040161067f90613f24565b6000611e8485602001518561253a90919063ffffffff16565b9050600082866101000151611e999190613f0d565b90506000611ea78783612579565b9050611eca8760000151848388888c6101000151611ec59190613f0d565b6125f8565b61014090970196909652505050505050565b6001600160a01b038216611f325760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161067f565b8060026000828254611f449190613e38565b90915550506001600160a01b03821660009081526020819052604081208054839290611f71908490613e38565b90915550506040518181526001600160a01b038316906000906000805160206141518339815191529060200160405180910390a35050565b600080600080611fc287611fbc88611947565b8761264b565b91509150611fcf8261195d565b9350611fda8161195d565b92505050935093915050565b6001600160a01b0382166120465760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161067f565b6001600160a01b038216600090815260208190526040902054818110156120ba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161067f565b6001600160a01b03831660009081526020819052604081208383039055600280548492906120e9908490613f0d565b90915550506040518281526000906001600160a01b038516906000805160206141518339815191529060200160405180910390a3505050565b60008060008061213689896118af8a611947565b915091506118c361214683612716565b61195d565b60008086610100015184106121725760405162461bcd60e51b815260040161067f90613f24565b865185126121bb5760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206c697175696469747960501b604482015260640161067f565b60006121c8888887612721565b90506000806121d88a848a61283b565b90925090506121e78983612948565b94506121f38982612948565b93508515612209576122098a848b8b898c612975565b5050509550959350505050565b600061226b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a279092919063ffffffff16565b80519091501561192e57808060200190518101906122899190613f4c565b61192e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161067f565b60006001607f1b821261195957600080fd5b6000600160601b821061195957600080fd5b6000600160201b821061195957600080fd5b600080612333670de0b6b3a764000085613f69565b905082818161234457612344613f88565b04949350505050565b60008061235a8385613f69565b9050670de0b6b3a764000081612344565b6000806000806000871380156123815750600086135b6123bc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f414d4f554e545360a01b604482015260640161067f565b60408901516123ed576123db6103e86123d58a8a61253a565b90612a36565b92506103e89350869150859050612490565b885160408a0151600091906124029089613f9e565b61240c9190614023565b905060008a602001518b604001518a6124259190613f9e565b61242f9190614023565b905080821215612465578194508792508a60400151858c602001516124549190613f9e565b61245e9190614023565b935061248d565b8094508893508a60400151858c600001516124809190613f9e565b61248a9190614023565b92505b50505b600083136124e05760405162461bcd60e51b815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161067f565b841561252e5781896020018181516124f89190614051565b905250885181908a9061250c908390614051565b9052506125198484614051565b8960400181815161252a9190614051565b9052505b95509550955095915050565b6000806000831261254c576001612550565b6000195b9050612567610d0b8561256286612a79565b612a90565b6125719082613f9e565b949350505050565b600061258482611947565b612596610d0b62015180610168613f69565b8460a001516125a59190613f9e565b6125af9190614023565b9050600081136106475760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b604482015260640161067f565b600080612609878787876000612aaf565b9050600061261961214683612b80565b90508361262b62015180610168613f69565b6126359083613f69565b61263f9190614092565b98975050505050505050565b600080600084136126925760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081b1c08185b5bdd5b9d607a1b604482015260640161067f565b604085015160208601516126a69086613f9e565b6126b09190614023565b60408601518651919350906126c59086613f9e565b6126cf9190614023565b9050821561270e5760408501516126e69085612a36565b604086015284516126f79082612a36565b855260208501516127089083612a36565b60208601525b935093915050565b600061064782613ef0565b61274c6040518060800160405280600081526020016000815260200160008152602001600081525090565b83610100015182106127705760405162461bcd60e51b815260040161067f90613f24565b6000828561010001516127839190613f0d565b905061278f8582612579565b825260208501516127a190859061253a565b60208301528451158015906127b95750602082015115155b6127fc5760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b604482015260640161067f565b61281a85600001518661014001518460200151856000015185612c13565b604083015260c085015161282e9082612c90565b6060830152509392505050565b600080600061285d866000015186602001518760000151886040015188612aaf565b9050600061287361286e8684612cc9565b612716565b606087015190915060008613156128de5760006128908483612cc9565b9050670de0b6b3a76400008112156128ba5760405162461bcd60e51b815260040161067f906140a6565b6128d66128cf83670de0b6b3a76400006140d5565b8490612cf8565b91505061290b565b612908816128f481670de0b6b3a76400006140d5565b6128fe9085613f9e565b61286e9190614023565b90505b606461291b896101200151611947565b6129259083613f9e565b61292f9190614023565b935061293b81836140d5565b9450505050935093915050565b6000806000831261295a57600161295e565b6000195b9050612567610d0b8561297086612a79565b612d16565b6000818761010001516129889190613f0d565b6101608801839052875190915061299f9085612a36565b875260208701516129b09084612a36565b6020880181905287516129d5916129c890889061253a565b885160408a0151856125f8565b6101408801819052612a1e5760405162461bcd60e51b81526020600482015260126024820152717a65726f206c6e496d706c6965645261746560701b604482015260640161067f565b50505050505050565b60606125718484600085612d2b565b600081831215612a735760405162461bcd60e51b81526020600482015260086024820152674e4547415449564560c01b604482015260640161067f565b50900390565b600080821361195957612a8b82613ef0565b610647565b6000670de0b6b3a7640000612aa58484613f69565b6109889190614092565b600080612abc8784612a36565b90506000612ad4612acd888a614051565b8390612cc9565b9050670d529ae9e8600000811315612b285760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b604482015260640161067f565b6000612b3382612e51565b905085612b408289612cc9565b612b4a9190614051565b9350670de0b6b3a7640000841215612b745760405162461bcd60e51b815260040161067f906140a6565b50505095945050505050565b6000808213612bc15760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015260640161067f565b670c7d713b49da000082138015612bdf5750670f43fc2c04ee000082125b15612c0a57670de0b6b3a7640000612bf683612ed1565b81612c0357612c03613f88565b0592915050565b61064782612ff0565b600080612c208684612c90565b9050670de0b6b3a7640000811215612c4a5760405162461bcd60e51b815260040161067f906140a6565b6000612c60612c59878a614051565b8990612cc9565b90506000612c6d82612e51565b9050612c798187612cc9565b612c8390846140d5565b9998505050505050505050565b600080612ca262015180610168613f69565b612cac8486613f69565b612cb69190614092565b9050612571612cc482611947565b613393565b600080612cde670de0b6b3a764000085613f9e565b9050828181612cef57612cef613f88565b05949350505050565b600080612d058385613f9e565b9050670de0b6b3a764000081612cef565b600082612aa5670de0b6b3a764000084613f69565b606082471015612d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161067f565b6001600160a01b0385163b612de35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161067f565b600080866001600160a01b03168587604051612dff9190614114565b60006040518083038185875af1925050503d8060008114612e3c576040519150601f19603f3d011682016040523d82523d6000602084013e612e41565b606091505b5091509150611dcf8282866137a1565b6000670de0b6b3a7640000821415612ea85760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b604482015260640161067f565b6000612ec6612ebf84670de0b6b3a76400006140d5565b8490612cc9565b905061098881612b80565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612f1257612f12613f88565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561303157613028826a0c097ce7bc90715b34b9f160241b8161302257613022613f88565b05612ff0565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b831261307c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126130b3576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff008400083126130fb576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312613136576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261316d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126131a457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126131d95768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261320457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312613239576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261326e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126132a2576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126132d6576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816132ff576132ff613f88565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff1982121580156133b8575068070c1cc73b00c800008213155b6133f75760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161067f565b60008212156134285761340c82600003613393565b6a0c097ce7bc90715b34b9f160241b81612c0357612c03613f88565b60006806f05b59d3b2000000831261346657506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61349c565b6803782dace9d9000000831261349857506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061349c565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126134ec5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412613528576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261356257682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261359c576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126135d557680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000841261360e5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613647576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126136805768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b606083156137b0575081610988565b8251156137c05782518084602001fd5b8160405162461bcd60e51b815260040161067f9190613806565b60005b838110156137f55781810151838201526020016137dd565b83811115611b605750506000910152565b60208152600082518060208401526138258160408501602087016137da565b601f01601f19169190910160400192915050565b6001600160a01b038116811461384e57600080fd5b50565b6000806040838503121561386457600080fd5b823561386f81613839565b946020939093013593505050565b60008083601f84011261388f57600080fd5b5081356001600160401b038111156138a657600080fd5b6020830191508360208285010111156138be57600080fd5b9250929050565b6000806000806000608086880312156138dd57600080fd5b85356138e881613839565b9450602086013593506040860135925060608601356001600160401b0381111561391157600080fd5b61391d8882890161387d565b969995985093965092949392505050565b60008060006060848603121561394357600080fd5b833561394e81613839565b9250602084013561395e81613839565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156139a75783518352928401929184019160010161398b565b50909695505050505050565b801515811461384e57600080fd5b6000602082840312156139d357600080fd5b8135610988816139b3565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151613a2360808401826001600160a01b03169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b6001600160a01b0391909116815260200190565b9283526020830191909152604082015260600190565b600060208284031215613ab457600080fd5b813561098881613839565b60008060008060608587031215613ad557600080fd5b8435613ae081613839565b93506020850135925060408501356001600160401b03811115613b0257600080fd5b613b0e8782880161387d565b95989497509550505050565b60008060408385031215613b2d57600080fd5b8235613b3881613839565b91506020830135613b4881613839565b809150509250929050565b600181811c90821680613b6757607f821691505b60208210811415610e7657634e487b7160e01b600052602260045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600e908201526d13505492d15517d156141254915160921b604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201526000613c30606083018486613be7565b9695505050505050565b600060208284031215613c4c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613c9157613c91613c53565b604052919050565b60006001600160401b03821115613cb257613cb2613c53565b5060051b60200190565b60006020808385031215613ccf57600080fd5b82516001600160401b03811115613ce557600080fd5b8301601f81018513613cf657600080fd5b8051613d09613d0482613c99565b613c69565b81815260059190911b82018301908381019087831115613d2857600080fd5b928401925b82841015611dcf57835182529284019290840190613d2d565b60006020808385031215613d5957600080fd5b82516001600160401b03811115613d6f57600080fd5b8301601f81018513613d8057600080fd5b8051613d8e613d0482613c99565b81815260059190911b82018301908381019087831115613dad57600080fd5b928401925b82841015611dcf578351613dc581613839565b82529284019290840190613db2565b600060208284031215613de657600080fd5b815161098881613839565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613e3157613e31613e07565b5060010190565b60008219821115613e4b57613e4b613e07565b500190565b60008060008060808587031215613e6657600080fd5b8451613e7181613839565b60208601519094506001600160601b0381168114613e8e57600080fd5b604086015190935063ffffffff81168114613ea857600080fd5b606086015190925060ff81168114613ebf57600080fd5b939692955090935050565b858152846020820152836040820152608060608201526000611dcf608083018486613be7565b6000600160ff1b821415613f0657613f06613e07565b5060000390565b600082821015613f1f57613f1f613e07565b500390565b6020808252600e908201526d1b585c9ad95d08195e1c1a5c995960921b604082015260600190565b600060208284031215613f5e57600080fd5b8151610988816139b3565b6000816000190483118215151615613f8357613f83613e07565b500290565b634e487b7160e01b600052601260045260246000fd5b60006001600160ff1b0381841382841380821686840486111615613fc457613fc4613e07565b600160ff1b6000871282811687830589121615613fe357613fe3613e07565b60008712925087820587128484161615613fff57613fff613e07565b8785058712818416161561401557614015613e07565b505050929093029392505050565b60008261403257614032613f88565b600160ff1b82146000198414161561404c5761404c613e07565b500590565b600080821280156001600160ff1b038490038513161561407357614073613e07565b600160ff1b839003841281161561408c5761408c613e07565b50500190565b6000826140a1576140a1613f88565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60008083128015600160ff1b8501841216156140f3576140f3613e07565b6001600160ff1b038401831381161561410e5761410e613e07565b50500390565b600082516141268184602087016137da565b919091019291505056feab7fa439d3be82c9e9dc9527df7b0ebc3b65c9911e3112698997d509abf02882ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122068415d27ccfd773f191203a39daa3f490615704022ad5e542c35d8897277ae6764736f6c63430008090033",
839
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101545760003560e01c806306fdde0314610159578063095ea7b3146101775780631128c55e1461019a57806318160ddd146101c257806323b872dd146101d45780632b20096c146101e75780632c8ce6bc146101fc5780632f13b60c14610286578063313ce567146102af57806339509351146102e057806339e718f6146102f357806347bfac62146103135780635308fcb11461034757806370a0823114610369578063781c18db14610392578063863cb94e146103b957806391e7c015146103cc57806395d89b41146103f3578063a457c2d7146103fb578063a9059cbb1461040e578063af247da314610421578063b4c3da4614610448578063c3fb90d61461045b578063c45a0155146104f2578063d94073d414610519578063dd62ed3e14610540578063e184c9be14610553578063f1653f6e1461057a575b600080fd5b6101616105a1565b60405161016e9190613806565b60405180910390f35b61018a610185366004613851565b610633565b604051901515815260200161016e565b6101ad6101a83660046138c5565b61064d565b6040805192835260208301919091520161016e565b6002545b60405190815260200161016e565b61018a6101e236600461392e565b610969565b6101ef61098f565b60405161016e919061396f565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915260600161016e565b7f000000000000000000000000000000000000000000000000000000000000000042101561018a565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161016e565b61018a6102ee366004613851565b610bd8565b6103066103013660046139c1565b610c17565b60405161016e91906139de565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405161016e9190613a78565b61035a6103553660046138c5565b610e7c565b60405161016e93929190613a8c565b6101c6610377366004613aa2565b6001600160a01b031660009081526020819052604090205490565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6103c7366004613abf565b61119a565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b610161611341565b61018a610409366004613851565b611350565b61018a61041c366004613851565b6113ed565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6101ad6104563660046138c5565b6113fb565b6005546006546104a891600f81810b92600160801b909204900b906001600160601b0380821691600160601b810490911690600160c01b810463ffffffff1690600160e01b900460ff1686565b60408051600f97880b81529590960b60208601526001600160601b03938416958501959095529116606083015263ffffffff16608082015260ff90911660a082015260c00161016e565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c661054e366004613b1a565b6116d7565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546105b090613b53565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90613b53565b80156106295780601f106105fe57610100808354040283529160200191610629565b820191906000526020600020905b81548152906001019060200180831161060c57829003601f168201915b5050505050905090565b600033610641818585611702565b60019150505b92915050565b6006546000908190600160e01b900460ff16600214156106885760405162461bcd60e51b815260040161067f90613b88565b60405180910390fd5b6006805460ff60e01b1916600160e11b1790557f000000000000000000000000000000000000000000000000000000000000000042106106da5760405162461bcd60e51b815260040161067f90613bbf565b60006106e66001610c17565b905061071f6107147f0000000000000000000000000000000000000000000000000000000000000000611826565b82908942600161189b565b90935091508583101561076b5760405162461bcd60e51b81526020600482015260146024820152731a5b9cdd59999a58da595b9d081cd8de481bdd5d60621b604482015260640161067f565b61079f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689856118dc565b60808101516107d9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690846118dc565b831561084b573363fa483e726107ee89611933565b6107f786611947565b88886040518563ffffffff1660e01b81526004016108189493929190613c10565b600060405180830381600087803b15801561083257600080fd5b505af1158015610846573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610897903090600401613a78565b60206040518083038186803b1580156108af57600080fd5b505afa1580156108c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190613c3a565b81516108f29061195d565b11156108fd57600080fd5b6109068161196c565b876001600160a01b031660008051602061413183398151915261092889611933565b61093186611947565b8560405161094193929190613a8c565b60405180910390a2506006805460ff60e01b1916600160e01b17905590969095509350505050565b600033610977858285611aec565b610982858585611b66565b60019150505b9392505050565b6040516359436f3b60e11b81526060906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b286de76906109de903090600401613a78565b600060405180830381600087803b1580156109f857600080fd5b505af1158015610a0c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a349190810190613cbc565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a9157600080fd5b505afa158015610aa5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610acd9190810190613d46565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2a57600080fd5b505afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b629190613dd4565b905060005b8251811015610bd257610bc082858381518110610b8657610b86613df1565b6020026020010151858481518110610ba057610ba0613df1565b60200260200101516001600160a01b03166118dc9092919063ffffffff16565b80610bca81613e1d565b915050610b67565b50505090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106419082908690610c12908790613e38565b611702565b610c846040518061018001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160c081018252600554600f81810b808452600160801b909204810b60208085019182526006546001600160601b0380821697870197909752600160601b81049096166060860152600160c01b860463ffffffff166080860152600160e01b90950460ff1660a08501529185529051900b91830191909152600254610d1090611947565b611947565b82604001818152505080606001516001600160601b03168260600181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323c113dc6040518163ffffffff1660e01b815260040160806040518083038186803b158015610d8957600080fd5b505afa158015610d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc19190613e50565b60ff1661012086015263ffffffff90811660e08601526001600160601b0391821660c08601526001600160a01b039092166080808601919091527f000000000000000000000000000000000000000000000000000000000000000060a08601527f00000000000000000000000000000000000000000000000000000000000000006101008601526040840151909116610140850152820151166101608301528215610e7657610e708242611d22565b60608301525b50919050565b60065460009081908190600160e01b900460ff1660021415610eb05760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b1790556000610ecf6001610c17565b90506000610efc7f0000000000000000000000000000000000000000000000000000000000000000611826565b90506000610f0e83838c8c6001611dda565b9198509650945090508015610f5457610f4983837f000000000000000000000000000000000000000000000000000000000000000042611e47565b610f54600182611edc565b610f5e8b87611edc565b8615610fc25760405163096006e960e11b815233906312c00dd290610f8f908990899089908e908e90600401613eca565b600060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061100e903090600401613a78565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e9190613c3a565b83516110699061195d565b111561107457600080fd5b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110c0903090600401613a78565b60206040518083038186803b1580156110d857600080fd5b505afa1580156110ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111109190613c3a565b61111d846020015161195d565b111561112857600080fd5b6111318361196c565b8a6001600160a01b03167fbeb3885786d637a474cbc287c0a44587231633a077f0bd30354d5a4b18996fce87878760405161116e93929190613a8c565b60405180910390a250506006805460ff60e01b1916600160e01b17905550919790965090945092505050565b6006546000908190600160e01b900460ff16600214156111cc5760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b17905560006111eb6001610c17565b90506111f981876001611fa9565b90935091506112326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688856118dc565b6112666001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001688846118dc565b83156112ca5760405163c70cd41360e01b8152339063c70cd41390611297908990879087908b908b90600401613eca565b600060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050505b6112d43087611fe6565b6112dd8161196c565b866001600160a01b03167f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa87858560405161131a93929190613a8c565b60405180910390a2506006805460ff60e01b1916600160e01b179055909590945092505050565b6060600480546105b090613b53565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156113d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161067f565b6113e28286868403611702565b506001949350505050565b600033610641818585611b66565b6006546000908190600160e01b900460ff166002141561142d5760405162461bcd60e51b815260040161067f90613b88565b6006805460ff60e01b1916600160e11b1790557f0000000000000000000000000000000000000000000000000000000000000000421061147f5760405162461bcd60e51b815260040161067f90613bbf565b600061148b6001610c17565b90506114c46114b97f0000000000000000000000000000000000000000000000000000000000000000611826565b829089426001612122565b90935091508583111561150f5760405162461bcd60e51b81526020600482015260136024820152721cd8de481a5b88195e18d95959081b1a5b5a5d606a1b604482015260640161067f565b6115436001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689896118dc565b608081015161157d906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690846118dc565b83156115ef573363fa483e7261159289611947565b61159b86611933565b88886040518563ffffffff1660e01b81526004016115bc9493929190613c10565b600060405180830381600087803b1580156115d657600080fd5b505af11580156115ea573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061163b903090600401613a78565b60206040518083038186803b15801561165357600080fd5b505afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b9190613c3a565b611698826020015161195d565b11156116a357600080fd5b6116ac8161196c565b876001600160a01b03166000805160206141318339815191526116ce89611947565b61093186611933565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166117645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067f565b6001600160a01b0382166117c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816001600160a01b031663f65d6fc86040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106479190613c3a565b6000806000806118b689896118af8a611933565b898961214b565b915091506118c38261195d565b93506118ce8161195d565b925050509550959350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261192e908490612216565b505050565b600061193e82611947565b61064790613ef0565b6000600160ff1b821061195957600080fd5b5090565b60008082121561195957600080fd5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915281516119a9906122e8565b600f0b815260208201516119bc906122e8565b600f0b60208201526101408201516119d3906122fa565b6001600160601b0316604082015260608201516119ef906122fa565b6001600160601b03166060820152610160820151611a0c9061230c565b63ffffffff1660808201819052815160208301516001600160801b03908116600160801b0291161760055560408083015160068054606086015160a087015160ff16600160e01b0260ff60e01b19600160c01b9097029690961664ffffffffff60c01b196001600160601b03928316600160601b026001600160c01b0319909416929095169190911791909117929092169190911792909217909155610140830151905142917f5c0e21d57bb4cf91d8fe238d6f92e2685a695371b19209afcce6217b478f83e191611ae091815260200190565b60405180910390a25050565b6000611af884846116d7565b90506000198114611b605781811015611b535760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161067f565b611b608484848403611702565b50505050565b6001600160a01b038316611bca5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067f565b6001600160a01b038216611c2c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067f565b6001600160a01b03831660009081526020819052604090205481811015611ca45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161067f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611cdb908490613e38565b92505081905550826001600160a01b0316846001600160a01b031660008051602061415183398151915284604051611d1591815260200190565b60405180910390a3611b60565b6000818361016001511115611d3d5750610140820151610647565b600083610160015183611d509190613f0d565b90508360e00151811115611d6b575050610140820151610647565b6000611d848560e001518361231e90919063ffffffff16565b90506000611d9a82670de0b6b3a7640000613f0d565b90506000611db582886060015161234d90919063ffffffff16565b610160880151611dc5908561234d565b611dcf9190613e38565b979650505050505050565b600080600080600080600080611e038d8d611df48e611947565b611dfd8e611947565b8d61236b565b9350935093509350611e148461195d565b9750611e1f8361195d565b9650611e2a8261195d565b9550611e358161195d565b94505050505095509550955095915050565b8361010001518110611e6b5760405162461bcd60e51b815260040161067f90613f24565b6000611e8485602001518561253a90919063ffffffff16565b9050600082866101000151611e999190613f0d565b90506000611ea78783612579565b9050611eca8760000151848388888c6101000151611ec59190613f0d565b6125f8565b61014090970196909652505050505050565b6001600160a01b038216611f325760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161067f565b8060026000828254611f449190613e38565b90915550506001600160a01b03821660009081526020819052604081208054839290611f71908490613e38565b90915550506040518181526001600160a01b038316906000906000805160206141518339815191529060200160405180910390a35050565b600080600080611fc287611fbc88611947565b8761264b565b91509150611fcf8261195d565b9350611fda8161195d565b92505050935093915050565b6001600160a01b0382166120465760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161067f565b6001600160a01b038216600090815260208190526040902054818110156120ba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161067f565b6001600160a01b03831660009081526020819052604081208383039055600280548492906120e9908490613f0d565b90915550506040518281526000906001600160a01b038516906000805160206141518339815191529060200160405180910390a3505050565b60008060008061213689896118af8a611947565b915091506118c361214683612716565b61195d565b60008086610100015184106121725760405162461bcd60e51b815260040161067f90613f24565b865185126121bb5760405162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e74206c697175696469747960501b604482015260640161067f565b60006121c8888887612721565b90506000806121d88a848a61283b565b90925090506121e78983612948565b94506121f38982612948565b93508515612209576122098a848b8b898c612975565b5050509550959350505050565b600061226b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a279092919063ffffffff16565b80519091501561192e57808060200190518101906122899190613f4c565b61192e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161067f565b60006001607f1b821261195957600080fd5b6000600160601b821061195957600080fd5b6000600160201b821061195957600080fd5b600080612333670de0b6b3a764000085613f69565b905082818161234457612344613f88565b04949350505050565b60008061235a8385613f69565b9050670de0b6b3a764000081612344565b6000806000806000871380156123815750600086135b6123bc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f414d4f554e545360a01b604482015260640161067f565b60408901516123ed576123db6103e86123d58a8a61253a565b90612a36565b92506103e89350869150859050612490565b885160408a0151600091906124029089613f9e565b61240c9190614023565b905060008a602001518b604001518a6124259190613f9e565b61242f9190614023565b905080821215612465578194508792508a60400151858c602001516124549190613f9e565b61245e9190614023565b935061248d565b8094508893508a60400151858c600001516124809190613f9e565b61248a9190614023565b92505b50505b600083136124e05760405162461bcd60e51b815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161067f565b841561252e5781896020018181516124f89190614051565b905250885181908a9061250c908390614051565b9052506125198484614051565b8960400181815161252a9190614051565b9052505b95509550955095915050565b6000806000831261254c576001612550565b6000195b9050612567610d0b8561256286612a79565b612a90565b6125719082613f9e565b949350505050565b600061258482611947565b612596610d0b62015180610168613f69565b8460a001516125a59190613f9e565b6125af9190614023565b9050600081136106475760405162461bcd60e51b8152602060048201526014602482015273726174655363616c617220756e646572666c6f7760601b604482015260640161067f565b600080612609878787876000612aaf565b9050600061261961214683612b80565b90508361262b62015180610168613f69565b6126359083613f69565b61263f9190614092565b98975050505050505050565b600080600084136126925760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081b1c08185b5bdd5b9d607a1b604482015260640161067f565b604085015160208601516126a69086613f9e565b6126b09190614023565b60408601518651919350906126c59086613f9e565b6126cf9190614023565b9050821561270e5760408501516126e69085612a36565b604086015284516126f79082612a36565b855260208501516127089083612a36565b60208601525b935093915050565b600061064782613ef0565b61274c6040518060800160405280600081526020016000815260200160008152602001600081525090565b83610100015182106127705760405162461bcd60e51b815260040161067f90613f24565b6000828561010001516127839190613f0d565b905061278f8582612579565b825260208501516127a190859061253a565b60208301528451158015906127b95750602082015115155b6127fc5760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206d61726b657420737461746560601b604482015260640161067f565b61281a85600001518661014001518460200151856000015185612c13565b604083015260c085015161282e9082612c90565b6060830152509392505050565b600080600061285d866000015186602001518760000151886040015188612aaf565b9050600061287361286e8684612cc9565b612716565b606087015190915060008613156128de5760006128908483612cc9565b9050670de0b6b3a76400008112156128ba5760405162461bcd60e51b815260040161067f906140a6565b6128d66128cf83670de0b6b3a76400006140d5565b8490612cf8565b91505061290b565b612908816128f481670de0b6b3a76400006140d5565b6128fe9085613f9e565b61286e9190614023565b90505b606461291b896101200151611947565b6129259083613f9e565b61292f9190614023565b935061293b81836140d5565b9450505050935093915050565b6000806000831261295a57600161295e565b6000195b9050612567610d0b8561297086612a79565b612d16565b6000818761010001516129889190613f0d565b6101608801839052875190915061299f9085612a36565b875260208701516129b09084612a36565b6020880181905287516129d5916129c890889061253a565b885160408a0151856125f8565b6101408801819052612a1e5760405162461bcd60e51b81526020600482015260126024820152717a65726f206c6e496d706c6965645261746560701b604482015260640161067f565b50505050505050565b60606125718484600085612d2b565b600081831215612a735760405162461bcd60e51b81526020600482015260086024820152674e4547415449564560c01b604482015260640161067f565b50900390565b600080821361195957612a8b82613ef0565b610647565b6000670de0b6b3a7640000612aa58484613f69565b6109889190614092565b600080612abc8784612a36565b90506000612ad4612acd888a614051565b8390612cc9565b9050670d529ae9e8600000811315612b285760405162461bcd60e51b81526020600482015260176024820152761b585e081c1c9bdc1bdc9d1a5bdb88195e18d959591959604a1b604482015260640161067f565b6000612b3382612e51565b905085612b408289612cc9565b612b4a9190614051565b9350670de0b6b3a7640000841215612b745760405162461bcd60e51b815260040161067f906140a6565b50505095945050505050565b6000808213612bc15760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015260640161067f565b670c7d713b49da000082138015612bdf5750670f43fc2c04ee000082125b15612c0a57670de0b6b3a7640000612bf683612ed1565b81612c0357612c03613f88565b0592915050565b61064782612ff0565b600080612c208684612c90565b9050670de0b6b3a7640000811215612c4a5760405162461bcd60e51b815260040161067f906140a6565b6000612c60612c59878a614051565b8990612cc9565b90506000612c6d82612e51565b9050612c798187612cc9565b612c8390846140d5565b9998505050505050505050565b600080612ca262015180610168613f69565b612cac8486613f69565b612cb69190614092565b9050612571612cc482611947565b613393565b600080612cde670de0b6b3a764000085613f9e565b9050828181612cef57612cef613f88565b05949350505050565b600080612d058385613f9e565b9050670de0b6b3a764000081612cef565b600082612aa5670de0b6b3a764000084613f69565b606082471015612d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161067f565b6001600160a01b0385163b612de35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161067f565b600080866001600160a01b03168587604051612dff9190614114565b60006040518083038185875af1925050503d8060008114612e3c576040519150601f19603f3d011682016040523d82523d6000602084013e612e41565b606091505b5091509150611dcf8282866137a1565b6000670de0b6b3a7640000821415612ea85760405162461bcd60e51b815260206004820152601a60248201527970726f706f7274696f6e206d757374206e6f74206265206f6e6560301b604482015260640161067f565b6000612ec6612ebf84670de0b6b3a76400006140d5565b8490612cc9565b905061098881612b80565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281612f1257612f12613f88565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561303157613028826a0c097ce7bc90715b34b9f160241b8161302257613022613f88565b05612ff0565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b831261307c5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126130b3576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff008400083126130fb576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312613136576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261316d57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126131a457690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126131d95768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261320457680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312613239576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261326e576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126132a2576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126132d6576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816132ff576132ff613f88565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff1982121580156133b8575068070c1cc73b00c800008213155b6133f75760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b604482015260640161067f565b60008212156134285761340c82600003613393565b6a0c097ce7bc90715b34b9f160241b81612c0357612c03613f88565b60006806f05b59d3b2000000831261346657506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61349c565b6803782dace9d9000000831261349857506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061349c565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126134ec5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412613528576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261356257682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261359c576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126135d557680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d63100000841261360e5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613647576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126136805768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b606083156137b0575081610988565b8251156137c05782518084602001fd5b8160405162461bcd60e51b815260040161067f9190613806565b60005b838110156137f55781810151838201526020016137dd565b83811115611b605750506000910152565b60208152600082518060208401526138258160408501602087016137da565b601f01601f19169190910160400192915050565b6001600160a01b038116811461384e57600080fd5b50565b6000806040838503121561386457600080fd5b823561386f81613839565b946020939093013593505050565b60008083601f84011261388f57600080fd5b5081356001600160401b038111156138a657600080fd5b6020830191508360208285010111156138be57600080fd5b9250929050565b6000806000806000608086880312156138dd57600080fd5b85356138e881613839565b9450602086013593506040860135925060608601356001600160401b0381111561391157600080fd5b61391d8882890161387d565b969995985093965092949392505050565b60008060006060848603121561394357600080fd5b833561394e81613839565b9250602084013561395e81613839565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b818110156139a75783518352928401929184019160010161398b565b50909695505050505050565b801515811461384e57600080fd5b6000602082840312156139d357600080fd5b8135610988816139b3565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151613a2360808401826001600160a01b03169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151818401525092915050565b6001600160a01b0391909116815260200190565b9283526020830191909152604082015260600190565b600060208284031215613ab457600080fd5b813561098881613839565b60008060008060608587031215613ad557600080fd5b8435613ae081613839565b93506020850135925060408501356001600160401b03811115613b0257600080fd5b613b0e8782880161387d565b95989497509550505050565b60008060408385031215613b2d57600080fd5b8235613b3881613839565b91506020830135613b4881613839565b809150509250929050565b600181811c90821680613b6757607f821691505b60208210811415610e7657634e487b7160e01b600052602260045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600e908201526d13505492d15517d156141254915160921b604082015260600190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201526000613c30606083018486613be7565b9695505050505050565b600060208284031215613c4c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613c9157613c91613c53565b604052919050565b60006001600160401b03821115613cb257613cb2613c53565b5060051b60200190565b60006020808385031215613ccf57600080fd5b82516001600160401b03811115613ce557600080fd5b8301601f81018513613cf657600080fd5b8051613d09613d0482613c99565b613c69565b81815260059190911b82018301908381019087831115613d2857600080fd5b928401925b82841015611dcf57835182529284019290840190613d2d565b60006020808385031215613d5957600080fd5b82516001600160401b03811115613d6f57600080fd5b8301601f81018513613d8057600080fd5b8051613d8e613d0482613c99565b81815260059190911b82018301908381019087831115613dad57600080fd5b928401925b82841015611dcf578351613dc581613839565b82529284019290840190613db2565b600060208284031215613de657600080fd5b815161098881613839565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613e3157613e31613e07565b5060010190565b60008219821115613e4b57613e4b613e07565b500190565b60008060008060808587031215613e6657600080fd5b8451613e7181613839565b60208601519094506001600160601b0381168114613e8e57600080fd5b604086015190935063ffffffff81168114613ea857600080fd5b606086015190925060ff81168114613ebf57600080fd5b939692955090935050565b858152846020820152836040820152608060608201526000611dcf608083018486613be7565b6000600160ff1b821415613f0657613f06613e07565b5060000390565b600082821015613f1f57613f1f613e07565b500390565b6020808252600e908201526d1b585c9ad95d08195e1c1a5c995960921b604082015260600190565b600060208284031215613f5e57600080fd5b8151610988816139b3565b6000816000190483118215151615613f8357613f83613e07565b500290565b634e487b7160e01b600052601260045260246000fd5b60006001600160ff1b0381841382841380821686840486111615613fc457613fc4613e07565b600160ff1b6000871282811687830589121615613fe357613fe3613e07565b60008712925087820587128484161615613fff57613fff613e07565b8785058712818416161561401557614015613e07565b505050929093029392505050565b60008261403257614032613f88565b600160ff1b82146000198414161561404c5761404c613e07565b500590565b600080821280156001600160ff1b038490038513161561407357614073613e07565b600160ff1b839003841281161561408c5761408c613e07565b50500190565b6000826140a1576140a1613f88565b500490565b60208082526015908201527465786368616e676520726174652062656c6f77203160581b604082015260600190565b60008083128015600160ff1b8501841216156140f3576140f3613e07565b6001600160ff1b038401831381161561410e5761410e613e07565b50500390565b600082516141268184602087016137da565b919091019291505056feab7fa439d3be82c9e9dc9527df7b0ebc3b65c9911e3112698997d509abf02882ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122068415d27ccfd773f191203a39daa3f490615704022ad5e542c35d8897277ae6764736f6c63430008090033",
840
+ "linkReferences": {},
841
+ "deployedLinkReferences": {}
842
+ }