@ensuro/core 1.2.7 → 2.0.0-beta10

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 (109) hide show
  1. package/README.md +63 -27
  2. package/build/contracts/AccessManager.sol/AccessManager.json +559 -0
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +219 -0
  4. package/build/contracts/EToken.sol/EToken.json +217 -190
  5. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +17 -4
  6. package/build/contracts/{extras/IPriceRiskModule.sol/IPriceRiskModule.json → LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json} +81 -131
  7. package/build/contracts/Policy.sol/Policy.json +2 -2
  8. package/build/contracts/PolicyPool.sol/PolicyPool.json +425 -295
  9. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +15 -2
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +868 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +37 -166
  12. package/build/contracts/RiskModule.sol/RiskModule.json +85 -312
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +960 -0
  14. package/build/contracts/{DataTypes.sol/DataTypes.json → TimeScaled.sol/TimeScaled.json} +4 -4
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +134 -336
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/contracts/{WadRayMath.sol → dependencies/WadRayMath.sol}/WadRayMath.json +3 -3
  19. package/build/{interfaces/IPolicyPoolConfig.sol/IPolicyPoolConfig.json → contracts/interfaces/IAccessManager.sol/IAccessManager.json} +79 -77
  20. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +109 -0
  21. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +39 -91
  22. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  23. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +137 -100
  25. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  26. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +315 -0
  27. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  28. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +736 -0
  29. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  30. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  31. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +228 -0
  32. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +702 -0
  34. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  35. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +764 -0
  36. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  37. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  38. package/contracts/AccessManager.sol +103 -0
  39. package/contracts/ERC4626AssetManager.sol +52 -0
  40. package/contracts/EToken.sol +254 -299
  41. package/contracts/LPManualWhitelist.sol +4 -4
  42. package/contracts/LiquidityThresholdAssetManager.sol +160 -0
  43. package/contracts/Policy.sol +49 -45
  44. package/contracts/PolicyPool.sol +379 -514
  45. package/contracts/PolicyPoolComponent.sol +41 -41
  46. package/contracts/PremiumsAccount.sol +480 -0
  47. package/contracts/Reserve.sol +213 -0
  48. package/contracts/RiskModule.sol +233 -174
  49. package/contracts/SignedQuoteRiskModule.sol +241 -0
  50. package/contracts/TimeScaled.sol +138 -0
  51. package/contracts/TrustfulRiskModule.sol +85 -23
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/dependencies/WadRayMath.sol +126 -0
  55. package/contracts/interfaces/IAccessManager.sol +148 -0
  56. package/contracts/interfaces/IAssetManager.sol +84 -0
  57. package/contracts/interfaces/IEToken.sol +195 -0
  58. package/contracts/interfaces/ILPWhitelist.sol +40 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  60. package/contracts/interfaces/IPolicyPool.sol +145 -0
  61. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +3 -0
  62. package/contracts/interfaces/IPremiumsAccount.sol +76 -0
  63. package/contracts/interfaces/IRiskModule.sol +123 -0
  64. package/contracts/mocks/FixedRateVault.sol +85 -0
  65. package/contracts/mocks/ForwardProxy.sol +66 -0
  66. package/contracts/mocks/IMintableERC20.sol +13 -0
  67. package/contracts/mocks/PolicyHolderMock.sol +89 -0
  68. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  69. package/contracts/mocks/PolicyPoolMock.sol +148 -0
  70. package/contracts/mocks/RiskModuleMock.sol +75 -0
  71. package/contracts/mocks/TestCurrency.sol +35 -0
  72. package/contracts/mocks/TestNFT.sol +23 -0
  73. package/js/test-utils.js +356 -0
  74. package/package.json +2 -2
  75. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -742
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -591
  77. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +0 -1112
  78. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +0 -570
  79. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +0 -686
  80. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +0 -50
  81. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1055
  82. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +0 -322
  83. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +0 -571
  84. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +0 -602
  85. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  86. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  87. package/build/interfaces/IPolicyNFT.sol/IPolicyNFT.json +0 -321
  88. package/contracts/AaveAssetManager.sol +0 -298
  89. package/contracts/BaseAssetManager.sol +0 -301
  90. package/contracts/DataTypes.sol +0 -287
  91. package/contracts/Exchange.sol +0 -189
  92. package/contracts/FlightDelayRiskModule.sol +0 -208
  93. package/contracts/PolicyNFT.sol +0 -96
  94. package/contracts/PolicyPoolConfig.sol +0 -247
  95. package/contracts/WadRayMath.sol +0 -135
  96. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +0 -371
  97. package/contracts/extras/IPriceRiskModule.sol +0 -41
  98. package/contracts/extras/PriceRiskModule.sol +0 -243
  99. package/contracts/upgraded/IPolicyNFTv1.sol +0 -15
  100. package/contracts/upgraded/PolicyNFTv1.sol +0 -126
  101. package/interfaces/IAssetManager.sol +0 -23
  102. package/interfaces/IEToken.sol +0 -48
  103. package/interfaces/IExchange.sol +0 -59
  104. package/interfaces/IInsolvencyHook.sol +0 -27
  105. package/interfaces/ILPWhitelist.sol +0 -23
  106. package/interfaces/IPolicyNFT.sol +0 -15
  107. package/interfaces/IPolicyPool.sol +0 -44
  108. package/interfaces/IPolicyPoolConfig.sol +0 -87
  109. package/interfaces/IRiskModule.sol +0 -29
@@ -1,686 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "PolicyPoolConfig",
4
- "sourceName": "contracts/PolicyPoolConfig.sol",
5
- "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": false,
11
- "internalType": "address",
12
- "name": "previousAdmin",
13
- "type": "address"
14
- },
15
- {
16
- "indexed": false,
17
- "internalType": "address",
18
- "name": "newAdmin",
19
- "type": "address"
20
- }
21
- ],
22
- "name": "AdminChanged",
23
- "type": "event"
24
- },
25
- {
26
- "anonymous": false,
27
- "inputs": [
28
- {
29
- "indexed": true,
30
- "internalType": "address",
31
- "name": "beacon",
32
- "type": "address"
33
- }
34
- ],
35
- "name": "BeaconUpgraded",
36
- "type": "event"
37
- },
38
- {
39
- "anonymous": false,
40
- "inputs": [
41
- {
42
- "indexed": true,
43
- "internalType": "enum IPolicyPoolConfig.GovernanceActions",
44
- "name": "action",
45
- "type": "uint8"
46
- },
47
- {
48
- "indexed": false,
49
- "internalType": "address",
50
- "name": "value",
51
- "type": "address"
52
- }
53
- ],
54
- "name": "ComponentChanged",
55
- "type": "event"
56
- },
57
- {
58
- "anonymous": false,
59
- "inputs": [
60
- {
61
- "indexed": true,
62
- "internalType": "contract IRiskModule",
63
- "name": "riskModule",
64
- "type": "address"
65
- },
66
- {
67
- "indexed": false,
68
- "internalType": "enum IPolicyPoolConfig.RiskModuleStatus",
69
- "name": "newStatus",
70
- "type": "uint8"
71
- }
72
- ],
73
- "name": "RiskModuleStatusChanged",
74
- "type": "event"
75
- },
76
- {
77
- "anonymous": false,
78
- "inputs": [
79
- {
80
- "indexed": true,
81
- "internalType": "bytes32",
82
- "name": "role",
83
- "type": "bytes32"
84
- },
85
- {
86
- "indexed": true,
87
- "internalType": "bytes32",
88
- "name": "previousAdminRole",
89
- "type": "bytes32"
90
- },
91
- {
92
- "indexed": true,
93
- "internalType": "bytes32",
94
- "name": "newAdminRole",
95
- "type": "bytes32"
96
- }
97
- ],
98
- "name": "RoleAdminChanged",
99
- "type": "event"
100
- },
101
- {
102
- "anonymous": false,
103
- "inputs": [
104
- {
105
- "indexed": true,
106
- "internalType": "bytes32",
107
- "name": "role",
108
- "type": "bytes32"
109
- },
110
- {
111
- "indexed": true,
112
- "internalType": "address",
113
- "name": "account",
114
- "type": "address"
115
- },
116
- {
117
- "indexed": true,
118
- "internalType": "address",
119
- "name": "sender",
120
- "type": "address"
121
- }
122
- ],
123
- "name": "RoleGranted",
124
- "type": "event"
125
- },
126
- {
127
- "anonymous": false,
128
- "inputs": [
129
- {
130
- "indexed": true,
131
- "internalType": "bytes32",
132
- "name": "role",
133
- "type": "bytes32"
134
- },
135
- {
136
- "indexed": true,
137
- "internalType": "address",
138
- "name": "account",
139
- "type": "address"
140
- },
141
- {
142
- "indexed": true,
143
- "internalType": "address",
144
- "name": "sender",
145
- "type": "address"
146
- }
147
- ],
148
- "name": "RoleRevoked",
149
- "type": "event"
150
- },
151
- {
152
- "anonymous": false,
153
- "inputs": [
154
- {
155
- "indexed": true,
156
- "internalType": "address",
157
- "name": "implementation",
158
- "type": "address"
159
- }
160
- ],
161
- "name": "Upgraded",
162
- "type": "event"
163
- },
164
- {
165
- "inputs": [],
166
- "name": "DEFAULT_ADMIN_ROLE",
167
- "outputs": [
168
- {
169
- "internalType": "bytes32",
170
- "name": "",
171
- "type": "bytes32"
172
- }
173
- ],
174
- "stateMutability": "view",
175
- "type": "function"
176
- },
177
- {
178
- "inputs": [],
179
- "name": "GUARDIAN_ROLE",
180
- "outputs": [
181
- {
182
- "internalType": "bytes32",
183
- "name": "",
184
- "type": "bytes32"
185
- }
186
- ],
187
- "stateMutability": "view",
188
- "type": "function"
189
- },
190
- {
191
- "inputs": [],
192
- "name": "L2_RM_LIMIT",
193
- "outputs": [
194
- {
195
- "internalType": "uint256",
196
- "name": "",
197
- "type": "uint256"
198
- }
199
- ],
200
- "stateMutability": "view",
201
- "type": "function"
202
- },
203
- {
204
- "inputs": [],
205
- "name": "LEVEL1_ROLE",
206
- "outputs": [
207
- {
208
- "internalType": "bytes32",
209
- "name": "",
210
- "type": "bytes32"
211
- }
212
- ],
213
- "stateMutability": "view",
214
- "type": "function"
215
- },
216
- {
217
- "inputs": [],
218
- "name": "LEVEL2_ROLE",
219
- "outputs": [
220
- {
221
- "internalType": "bytes32",
222
- "name": "",
223
- "type": "bytes32"
224
- }
225
- ],
226
- "stateMutability": "view",
227
- "type": "function"
228
- },
229
- {
230
- "inputs": [],
231
- "name": "LEVEL3_ROLE",
232
- "outputs": [
233
- {
234
- "internalType": "bytes32",
235
- "name": "",
236
- "type": "bytes32"
237
- }
238
- ],
239
- "stateMutability": "view",
240
- "type": "function"
241
- },
242
- {
243
- "inputs": [
244
- {
245
- "internalType": "contract IRiskModule",
246
- "name": "riskModule",
247
- "type": "address"
248
- }
249
- ],
250
- "name": "addRiskModule",
251
- "outputs": [],
252
- "stateMutability": "nonpayable",
253
- "type": "function"
254
- },
255
- {
256
- "inputs": [],
257
- "name": "assetManager",
258
- "outputs": [
259
- {
260
- "internalType": "contract IAssetManager",
261
- "name": "",
262
- "type": "address"
263
- }
264
- ],
265
- "stateMutability": "view",
266
- "type": "function"
267
- },
268
- {
269
- "inputs": [
270
- {
271
- "internalType": "contract IRiskModule",
272
- "name": "riskModule",
273
- "type": "address"
274
- },
275
- {
276
- "internalType": "enum IPolicyPoolConfig.RiskModuleStatus",
277
- "name": "newStatus",
278
- "type": "uint8"
279
- }
280
- ],
281
- "name": "changeRiskModuleStatus",
282
- "outputs": [],
283
- "stateMutability": "nonpayable",
284
- "type": "function"
285
- },
286
- {
287
- "inputs": [
288
- {
289
- "internalType": "contract IRiskModule",
290
- "name": "riskModule",
291
- "type": "address"
292
- }
293
- ],
294
- "name": "checkAcceptsNewPolicy",
295
- "outputs": [],
296
- "stateMutability": "view",
297
- "type": "function"
298
- },
299
- {
300
- "inputs": [
301
- {
302
- "internalType": "contract IRiskModule",
303
- "name": "riskModule",
304
- "type": "address"
305
- }
306
- ],
307
- "name": "checkAcceptsResolvePolicy",
308
- "outputs": [],
309
- "stateMutability": "view",
310
- "type": "function"
311
- },
312
- {
313
- "inputs": [
314
- {
315
- "internalType": "bytes32",
316
- "name": "role",
317
- "type": "bytes32"
318
- },
319
- {
320
- "internalType": "address",
321
- "name": "account",
322
- "type": "address"
323
- }
324
- ],
325
- "name": "checkRole",
326
- "outputs": [],
327
- "stateMutability": "view",
328
- "type": "function"
329
- },
330
- {
331
- "inputs": [
332
- {
333
- "internalType": "bytes32",
334
- "name": "role1",
335
- "type": "bytes32"
336
- },
337
- {
338
- "internalType": "bytes32",
339
- "name": "role2",
340
- "type": "bytes32"
341
- },
342
- {
343
- "internalType": "address",
344
- "name": "account",
345
- "type": "address"
346
- }
347
- ],
348
- "name": "checkRole2",
349
- "outputs": [],
350
- "stateMutability": "view",
351
- "type": "function"
352
- },
353
- {
354
- "inputs": [],
355
- "name": "connect",
356
- "outputs": [],
357
- "stateMutability": "nonpayable",
358
- "type": "function"
359
- },
360
- {
361
- "inputs": [],
362
- "name": "exchange",
363
- "outputs": [
364
- {
365
- "internalType": "contract IExchange",
366
- "name": "",
367
- "type": "address"
368
- }
369
- ],
370
- "stateMutability": "view",
371
- "type": "function"
372
- },
373
- {
374
- "inputs": [
375
- {
376
- "internalType": "bytes32",
377
- "name": "role",
378
- "type": "bytes32"
379
- }
380
- ],
381
- "name": "getRoleAdmin",
382
- "outputs": [
383
- {
384
- "internalType": "bytes32",
385
- "name": "",
386
- "type": "bytes32"
387
- }
388
- ],
389
- "stateMutability": "view",
390
- "type": "function"
391
- },
392
- {
393
- "inputs": [
394
- {
395
- "internalType": "bytes32",
396
- "name": "role",
397
- "type": "bytes32"
398
- },
399
- {
400
- "internalType": "address",
401
- "name": "account",
402
- "type": "address"
403
- }
404
- ],
405
- "name": "grantRole",
406
- "outputs": [],
407
- "stateMutability": "nonpayable",
408
- "type": "function"
409
- },
410
- {
411
- "inputs": [
412
- {
413
- "internalType": "bytes32",
414
- "name": "role",
415
- "type": "bytes32"
416
- },
417
- {
418
- "internalType": "address",
419
- "name": "account",
420
- "type": "address"
421
- }
422
- ],
423
- "name": "hasRole",
424
- "outputs": [
425
- {
426
- "internalType": "bool",
427
- "name": "",
428
- "type": "bool"
429
- }
430
- ],
431
- "stateMutability": "view",
432
- "type": "function"
433
- },
434
- {
435
- "inputs": [
436
- {
437
- "internalType": "contract IPolicyPool",
438
- "name": "policyPool_",
439
- "type": "address"
440
- },
441
- {
442
- "internalType": "address",
443
- "name": "treasury_",
444
- "type": "address"
445
- }
446
- ],
447
- "name": "initialize",
448
- "outputs": [],
449
- "stateMutability": "nonpayable",
450
- "type": "function"
451
- },
452
- {
453
- "inputs": [],
454
- "name": "insolvencyHook",
455
- "outputs": [
456
- {
457
- "internalType": "contract IInsolvencyHook",
458
- "name": "",
459
- "type": "address"
460
- }
461
- ],
462
- "stateMutability": "view",
463
- "type": "function"
464
- },
465
- {
466
- "inputs": [],
467
- "name": "lpWhitelist",
468
- "outputs": [
469
- {
470
- "internalType": "contract ILPWhitelist",
471
- "name": "",
472
- "type": "address"
473
- }
474
- ],
475
- "stateMutability": "view",
476
- "type": "function"
477
- },
478
- {
479
- "inputs": [],
480
- "name": "policyPool",
481
- "outputs": [
482
- {
483
- "internalType": "contract IPolicyPool",
484
- "name": "",
485
- "type": "address"
486
- }
487
- ],
488
- "stateMutability": "view",
489
- "type": "function"
490
- },
491
- {
492
- "inputs": [],
493
- "name": "proxiableUUID",
494
- "outputs": [
495
- {
496
- "internalType": "bytes32",
497
- "name": "",
498
- "type": "bytes32"
499
- }
500
- ],
501
- "stateMutability": "view",
502
- "type": "function"
503
- },
504
- {
505
- "inputs": [
506
- {
507
- "internalType": "contract IRiskModule",
508
- "name": "riskModule",
509
- "type": "address"
510
- }
511
- ],
512
- "name": "removeRiskModule",
513
- "outputs": [],
514
- "stateMutability": "nonpayable",
515
- "type": "function"
516
- },
517
- {
518
- "inputs": [
519
- {
520
- "internalType": "bytes32",
521
- "name": "role",
522
- "type": "bytes32"
523
- },
524
- {
525
- "internalType": "address",
526
- "name": "account",
527
- "type": "address"
528
- }
529
- ],
530
- "name": "renounceRole",
531
- "outputs": [],
532
- "stateMutability": "nonpayable",
533
- "type": "function"
534
- },
535
- {
536
- "inputs": [
537
- {
538
- "internalType": "bytes32",
539
- "name": "role",
540
- "type": "bytes32"
541
- },
542
- {
543
- "internalType": "address",
544
- "name": "account",
545
- "type": "address"
546
- }
547
- ],
548
- "name": "revokeRole",
549
- "outputs": [],
550
- "stateMutability": "nonpayable",
551
- "type": "function"
552
- },
553
- {
554
- "inputs": [
555
- {
556
- "internalType": "contract IAssetManager",
557
- "name": "assetManager_",
558
- "type": "address"
559
- }
560
- ],
561
- "name": "setAssetManager",
562
- "outputs": [],
563
- "stateMutability": "nonpayable",
564
- "type": "function"
565
- },
566
- {
567
- "inputs": [
568
- {
569
- "internalType": "contract IExchange",
570
- "name": "exchange_",
571
- "type": "address"
572
- }
573
- ],
574
- "name": "setExchange",
575
- "outputs": [],
576
- "stateMutability": "nonpayable",
577
- "type": "function"
578
- },
579
- {
580
- "inputs": [
581
- {
582
- "internalType": "contract IInsolvencyHook",
583
- "name": "insolvencyHook_",
584
- "type": "address"
585
- }
586
- ],
587
- "name": "setInsolvencyHook",
588
- "outputs": [],
589
- "stateMutability": "nonpayable",
590
- "type": "function"
591
- },
592
- {
593
- "inputs": [
594
- {
595
- "internalType": "contract ILPWhitelist",
596
- "name": "lpWhitelist_",
597
- "type": "address"
598
- }
599
- ],
600
- "name": "setLPWhitelist",
601
- "outputs": [],
602
- "stateMutability": "nonpayable",
603
- "type": "function"
604
- },
605
- {
606
- "inputs": [
607
- {
608
- "internalType": "address",
609
- "name": "treasury_",
610
- "type": "address"
611
- }
612
- ],
613
- "name": "setTreasury",
614
- "outputs": [],
615
- "stateMutability": "nonpayable",
616
- "type": "function"
617
- },
618
- {
619
- "inputs": [
620
- {
621
- "internalType": "bytes4",
622
- "name": "interfaceId",
623
- "type": "bytes4"
624
- }
625
- ],
626
- "name": "supportsInterface",
627
- "outputs": [
628
- {
629
- "internalType": "bool",
630
- "name": "",
631
- "type": "bool"
632
- }
633
- ],
634
- "stateMutability": "view",
635
- "type": "function"
636
- },
637
- {
638
- "inputs": [],
639
- "name": "treasury",
640
- "outputs": [
641
- {
642
- "internalType": "address",
643
- "name": "",
644
- "type": "address"
645
- }
646
- ],
647
- "stateMutability": "view",
648
- "type": "function"
649
- },
650
- {
651
- "inputs": [
652
- {
653
- "internalType": "address",
654
- "name": "newImplementation",
655
- "type": "address"
656
- }
657
- ],
658
- "name": "upgradeTo",
659
- "outputs": [],
660
- "stateMutability": "nonpayable",
661
- "type": "function"
662
- },
663
- {
664
- "inputs": [
665
- {
666
- "internalType": "address",
667
- "name": "newImplementation",
668
- "type": "address"
669
- },
670
- {
671
- "internalType": "bytes",
672
- "name": "data",
673
- "type": "bytes"
674
- }
675
- ],
676
- "name": "upgradeToAndCall",
677
- "outputs": [],
678
- "stateMutability": "payable",
679
- "type": "function"
680
- }
681
- ],
682
- "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c6129c9610052600039600081816108ca0152818161090a01528181610ce201528181610d220152610db101526129c96000f3fe6080604052600436106102045760003560e01c806361d027b311610118578063a217fddf116100a0578063d2f7265a1161006f578063d2f7265a146105ed578063d547741f1461060c578063f0f442601461062c578063f67b2bad1461064c578063f7d72a251461066e57600080fd5b8063a217fddf14610578578063bbfb8bae1461058d578063c5b8f5cf146105ad578063ccdcd9cf146105cd57600080fd5b80638def80e3116100e75780638def80e3146104ea5780639042cf681461050557806391d148541461052557806394217ad114610545578063948cb7191461056357600080fd5b806361d027b31461046e57806363b12da81461048c57806367b1f5df146104aa578063878ccf78146104ca57600080fd5b80633659cfe61161019b5780634a47a3e01161016a5780634a47a3e0146103d25780634d15eb03146103f45780634f1ef2861461041257806352d1902d146104255780635b494dd51461043a57600080fd5b80633659cfe614610352578063398ae8e6146103725780634306023714610392578063485cc955146103b257600080fd5b806324ea54f4116101d757806324ea54f4146102d05780632c08296b146102f25780632f2ff15d1461031257806336568abe1461033257600080fd5b806301ffc9a71461020957806312d9a6ad1461023e5780631455cd2814610260578063248a9ca314610292575b600080fd5b34801561021557600080fd5b50610229610224366004612496565b61068e565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025e61025936600461242d565b6106c5565b005b34801561026c57600080fd5b5060fd546001600160a01b03165b6040516001600160a01b039091168152602001610235565b34801561029e57600080fd5b506102c26102ad3660046123fb565b60009081526065602052604090206001015490565b604051908152602001610235565b3480156102dc57600080fd5b506102c260008051602061297483398151915281565b3480156102fe57600080fd5b5061025e61030d36600461231a565b6106d3565b34801561031e57600080fd5b5061025e61032d36600461242d565b61081a565b34801561033e57600080fd5b5061025e61034d36600461242d565b610845565b34801561035e57600080fd5b5061025e61036d36600461231a565b6108bf565b34801561037e57600080fd5b5061025e61038d36600461231a565b61099f565b34801561039e57600080fd5b5061025e6103ad36600461231a565b610ad4565b3480156103be57600080fd5b5061025e6103cd3660046124dd565b610c4a565b3480156103de57600080fd5b506102c260008051602061295483398151915281565b34801561040057600080fd5b5060fe546001600160a01b031661027a565b61025e610420366004612337565b610cd7565b34801561043157600080fd5b506102c2610da4565b34801561044657600080fd5b506102c27f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561047a57600080fd5b5060fb546001600160a01b031661027a565b34801561049857600080fd5b5060ff546001600160a01b031661027a565b3480156104b657600080fd5b5061025e6104c536600461231a565b610e57565b3480156104d657600080fd5b5061025e6104e536600461231a565b610f8e565b3480156104f657600080fd5b506102c266b1a2bc2ec5000081565b34801561051157600080fd5b5061025e61052036600461231a565b61104e565b34801561053157600080fd5b5061022961054036600461242d565b6113cf565b34801561055157600080fd5b5060fc546001600160a01b031661027a565b34801561056f57600080fd5b5061025e6113fa565b34801561058457600080fd5b506102c2600081565b34801561059957600080fd5b5061025e6105a836600461231a565b61147c565b3480156105b957600080fd5b5061025e6105c836600461245d565b611504565b3480156105d957600080fd5b5061025e6105e836600461231a565b61151c565b3480156105f957600080fd5b50610100546001600160a01b031661027a565b34801561061857600080fd5b5061025e61062736600461242d565b6116c8565b34801561063857600080fd5b5061025e61064736600461231a565b6116ee565b34801561065857600080fd5b506102c260008051602061290d83398151915281565b34801561067a57600080fd5b5061025e61068936600461250b565b61174f565b60006001600160e01b03198216637965db0b60e01b14806106bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6106cf8282611a4c565b5050565b60008051602061297483398151915260008051602061290d8339815191526106fb82336113cf565b610709576107098133611a4c565b6001600160a01b03831615806107a4575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561076157600080fd5b505afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079991906124c0565b6001600160a01b0316145b6107c95760405162461bcd60e51b81526004016107c090612629565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b038516179055600360fd546040516001600160a01b0390911681526000805160206128cd833981519152906020015b60405180910390a2505050565b6000828152606560205260409020600101546108368133611a4c565b6108408383611ab0565b505050565b6001600160a01b03811633146108b55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107c0565b6106cf8282611b36565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109085760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109516000805160206128ed833981519152546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b81526004016107c090612712565b61098081611b9d565b6040805160008082526020820190925261099c91839190611bd3565b50565b60008051602061297483398151915260008051602061290d8339815191526109c782336113cf565b6109d5576109d58133611a4c565b6001600160a01b0383161580610a70575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610a2d57600080fd5b505afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906124c0565b6001600160a01b0316145b610a8c5760405162461bcd60e51b81526004016107c090612629565b60ff80546001600160a01b0319166001600160a01b038516179055600460ff546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b60008051602061290d833981519152610aed8133611a4c565b6001600160a01b0382161580610b88575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610b4557600080fd5b505afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906124c0565b6001600160a01b0316145b610ba45760405162461bcd60e51b81526004016107c090612629565b60fe54604051634306023760e01b81526001600160a01b03848116600483015290911690634306023790602401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505060fc80546001600160a01b0319166001600160a01b038616908117909155604051908152600292506000805160206128cd83398151915291506020015b60405180910390a25050565b600054610100900460ff16610c655760005460ff1615610c69565b303b155b610c855760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015610ca7576000805461ffff19166101011790555b610caf611d4d565b610cb7611d4d565b610cc18383611dba565b8015610840576000805461ff0019169055505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d205760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d696000805160206128ed833981519152546001600160a01b031690565b6001600160a01b031614610d8f5760405162461bcd60e51b81526004016107c090612712565b610d9882611b9d565b6106cf82826001611bd3565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e445760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c0565b506000805160206128ed83398151915290565b60008051602061297483398151915260008051602061290d833981519152610e7f82336113cf565b610e8d57610e8d8133611a4c565b6001600160a01b0383161580610f28575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d91906124c0565b6001600160a01b0316145b610f445760405162461bcd60e51b81526004016107c090612629565b61010080546001600160a01b0319166001600160a01b038516179055601b610100546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b6001600160a01b0381166000908152610101602052604090205460ff166001816003811115610fbf57610fbf612875565b1480610fdc57506002816003811115610fda57610fda612875565b145b6106cf5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016107c0565b60008051602061290d83398151915260008051602061295483398151915261107682336113cf565b611084576110848133611a4c565b6001600160a01b0383166000908152610101602052604081205460ff1660038111156110b2576110b2612875565b146110ff5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c0060448201526064016107c0565b6001600160a01b0383166111555760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f000000000000000060448201526064016107c0565b60fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d491906124c0565b6001600160a01b0316146112355760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b60648201526084016107c0565b61124d60008051602061290d833981519152336113cf565b8061135d57506112d566b1a2bc2ec50000846001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190612414565b90611e68565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561132357600080fd5b505afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190612414565b115b6113795760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b0383166000818152610101602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b29161080d916125ce565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fe546001600160a01b0316158061141c575060fe546001600160a01b031633145b6114685760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e65637465640000000060448201526064016107c0565b60fe80546001600160a01b03191633179055565b6001600160a01b0381166000908152610101602052604090205460ff1660018160038111156114ad576114ad612875565b146106cf5760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016107c0565b61150e83826113cf565b610840576108408282611a4c565b6000805160206129548339815191526115358133611a4c565b6001600160a01b0382166000908152610101602052604081205460ff16600381111561156357611563612875565b14156115a95760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b816001600160a01b031663ca996de36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e257600080fd5b505afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190612414565b1561167a5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016107c0565b6001600160a01b03821660008181526101016020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610c3e916125ce565b6000828152606560205260409020600101546116e48133611a4c565b6108408383611b36565b60008051602061290d8339815191526117078133611a4c565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b0390911681526000805160206128cd83398151915290602001610c3e565b60008051602061297483398151915260008051602061290d83398151915260008051602061295483398151915261178683336113cf565b15801561179a575061179882336113cf565b155b156117a9576117a98133611a4c565b6001600160a01b0385166000908152610101602052604081205460ff1660038111156117d7576117d7612875565b141561181d5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b600384600381111561183157611831612875565b1415806118515750611851600080516020612974833981519152336113cf565b6118a75760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b60648201526084016107c0565b60018460038111156118bb576118bb612875565b1415806118db57506118db60008051602061290d833981519152336113cf565b806119ad575061192566b1a2bc2ec50000866001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197357600080fd5b505afa158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190612414565b115b6119c95760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b038516600090815261010160205260409020805485919060ff191660018360038111156119ff576119ff612875565b0217905550846001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b285604051611a3d91906125ce565b60405180910390a25050505050565b611a5682826113cf565b6106cf57611a6e816001600160a01b03166014611f40565b611a79836020611f40565b604051602001611a8a929190612559565b60408051601f198184030181529082905262461bcd60e51b82526107c0916004016125f6565b611aba82826113cf565b6106cf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611af23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611b4082826113cf565b156106cf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061297483398151915260008051602061290d833981519152611bc582336113cf565b610840576108408133611a4c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0657610840836120dc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3f57600080fd5b505afa925050508015611c6f575060408051601f3d908101601f19168201909252611c6c91810190612414565b60015b611cd25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c0565b6000805160206128ed8339815191528114611d415760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c0565b50610840838383612178565b600054610100900460ff16611db85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107c0565b565b600054610100900460ff16611dd55760005460ff1615611dd9565b303b155b611df55760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015611e17576000805461ffff19166101011790555b611e226000336121a3565b60fe80546001600160a01b038086166001600160a01b03199283161790925560fb8054928516929091169190911790558015610840576000805461ff0019169055505050565b6000821580611e75575081155b15611e82575060006106bf565b81611e966002670de0b6b3a76400006127c4565b611ea290600019612805565b611eac91906127c4565b831115611f075760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c0565b670de0b6b3a7640000611f1b6002826127c4565b611f2584866127e6565b611f2f91906127ac565b611f3991906127c4565b9392505050565b60606000611f4f8360026127e6565b611f5a9060026127ac565b67ffffffffffffffff811115611f7257611f726128a1565b6040519080825280601f01601f191660200182016040528015611f9c576020820181803683370190505b509050600360fc1b81600081518110611fb757611fb761288b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611fe657611fe661288b565b60200101906001600160f81b031916908160001a905350600061200a8460026127e6565b6120159060016127ac565b90505b600181111561208d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106120495761204961288b565b1a60f81b82828151811061205f5761205f61288b565b60200101906001600160f81b031916908160001a90535060049490941c9361208681612848565b9050612018565b508315611f395760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107c0565b6001600160a01b0381163b6121495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c0565b6000805160206128ed83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612181836121ad565b60008251118061218e5750805b156108405761219d83836121ed565b50505050565b6106cf8282611ab0565b6121b6816120dc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6122555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107c0565b600080846001600160a01b031684604051612270919061253d565b600060405180830381855af49150503d80600081146122ab576040519150601f19603f3d011682016040523d82523d6000602084013e6122b0565b606091505b50915091506122d8828260405180606001604052806027815260200161292d602791396122e1565b95945050505050565b606083156122f0575081611f39565b8251156123005782518084602001fd5b8160405162461bcd60e51b81526004016107c091906125f6565b60006020828403121561232c57600080fd5b8135611f39816128b7565b6000806040838503121561234a57600080fd5b8235612355816128b7565b9150602083013567ffffffffffffffff8082111561237257600080fd5b818501915085601f83011261238657600080fd5b813581811115612398576123986128a1565b604051601f8201601f19908116603f011681019083821181831017156123c0576123c06128a1565b816040528281528860208487010111156123d957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561240d57600080fd5b5035919050565b60006020828403121561242657600080fd5b5051919050565b6000806040838503121561244057600080fd5b823591506020830135612452816128b7565b809150509250929050565b60008060006060848603121561247257600080fd5b8335925060208401359150604084013561248b816128b7565b809150509250925092565b6000602082840312156124a857600080fd5b81356001600160e01b031981168114611f3957600080fd5b6000602082840312156124d257600080fd5b8151611f39816128b7565b600080604083850312156124f057600080fd5b82356124fb816128b7565b91506020830135612452816128b7565b6000806040838503121561251e57600080fd5b8235612529816128b7565b915060208301356004811061245257600080fd5b6000825161254f81846020870161281c565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161259181601785016020880161281c565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516125c281602884016020880161281c565b01602801949350505050565b60208101600483106125f057634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261261581604085016020870161281c565b601f01601f19169190910160400192915050565b60208082526027908201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6040820152661a58de541bdbdb60ca1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526036908201527f5269736b4d6f64756c6520534352204c696d6974206578636565647320746865604082015275103634b6b4ba103337b9102622ab22a619103ab9b2b960511b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156127bf576127bf61285f565b500190565b6000826127e157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128005761280061285f565b500290565b6000828210156128175761281761285f565b500390565b60005b8381101561283757818101518382015260200161281f565b8381111561219d5750506000910152565b6000816128575761285761285f565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461099c57600080fdfeb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212203917dceb8281c04477ed78a4c203c9bbc1d146c6c0653d9693d02c84eeb103d064736f6c63430008060033",
683
- "deployedBytecode": "0x6080604052600436106102045760003560e01c806361d027b311610118578063a217fddf116100a0578063d2f7265a1161006f578063d2f7265a146105ed578063d547741f1461060c578063f0f442601461062c578063f67b2bad1461064c578063f7d72a251461066e57600080fd5b8063a217fddf14610578578063bbfb8bae1461058d578063c5b8f5cf146105ad578063ccdcd9cf146105cd57600080fd5b80638def80e3116100e75780638def80e3146104ea5780639042cf681461050557806391d148541461052557806394217ad114610545578063948cb7191461056357600080fd5b806361d027b31461046e57806363b12da81461048c57806367b1f5df146104aa578063878ccf78146104ca57600080fd5b80633659cfe61161019b5780634a47a3e01161016a5780634a47a3e0146103d25780634d15eb03146103f45780634f1ef2861461041257806352d1902d146104255780635b494dd51461043a57600080fd5b80633659cfe614610352578063398ae8e6146103725780634306023714610392578063485cc955146103b257600080fd5b806324ea54f4116101d757806324ea54f4146102d05780632c08296b146102f25780632f2ff15d1461031257806336568abe1461033257600080fd5b806301ffc9a71461020957806312d9a6ad1461023e5780631455cd2814610260578063248a9ca314610292575b600080fd5b34801561021557600080fd5b50610229610224366004612496565b61068e565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025e61025936600461242d565b6106c5565b005b34801561026c57600080fd5b5060fd546001600160a01b03165b6040516001600160a01b039091168152602001610235565b34801561029e57600080fd5b506102c26102ad3660046123fb565b60009081526065602052604090206001015490565b604051908152602001610235565b3480156102dc57600080fd5b506102c260008051602061297483398151915281565b3480156102fe57600080fd5b5061025e61030d36600461231a565b6106d3565b34801561031e57600080fd5b5061025e61032d36600461242d565b61081a565b34801561033e57600080fd5b5061025e61034d36600461242d565b610845565b34801561035e57600080fd5b5061025e61036d36600461231a565b6108bf565b34801561037e57600080fd5b5061025e61038d36600461231a565b61099f565b34801561039e57600080fd5b5061025e6103ad36600461231a565b610ad4565b3480156103be57600080fd5b5061025e6103cd3660046124dd565b610c4a565b3480156103de57600080fd5b506102c260008051602061295483398151915281565b34801561040057600080fd5b5060fe546001600160a01b031661027a565b61025e610420366004612337565b610cd7565b34801561043157600080fd5b506102c2610da4565b34801561044657600080fd5b506102c27f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561047a57600080fd5b5060fb546001600160a01b031661027a565b34801561049857600080fd5b5060ff546001600160a01b031661027a565b3480156104b657600080fd5b5061025e6104c536600461231a565b610e57565b3480156104d657600080fd5b5061025e6104e536600461231a565b610f8e565b3480156104f657600080fd5b506102c266b1a2bc2ec5000081565b34801561051157600080fd5b5061025e61052036600461231a565b61104e565b34801561053157600080fd5b5061022961054036600461242d565b6113cf565b34801561055157600080fd5b5060fc546001600160a01b031661027a565b34801561056f57600080fd5b5061025e6113fa565b34801561058457600080fd5b506102c2600081565b34801561059957600080fd5b5061025e6105a836600461231a565b61147c565b3480156105b957600080fd5b5061025e6105c836600461245d565b611504565b3480156105d957600080fd5b5061025e6105e836600461231a565b61151c565b3480156105f957600080fd5b50610100546001600160a01b031661027a565b34801561061857600080fd5b5061025e61062736600461242d565b6116c8565b34801561063857600080fd5b5061025e61064736600461231a565b6116ee565b34801561065857600080fd5b506102c260008051602061290d83398151915281565b34801561067a57600080fd5b5061025e61068936600461250b565b61174f565b60006001600160e01b03198216637965db0b60e01b14806106bf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6106cf8282611a4c565b5050565b60008051602061297483398151915260008051602061290d8339815191526106fb82336113cf565b610709576107098133611a4c565b6001600160a01b03831615806107a4575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561076157600080fd5b505afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079991906124c0565b6001600160a01b0316145b6107c95760405162461bcd60e51b81526004016107c090612629565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b038516179055600360fd546040516001600160a01b0390911681526000805160206128cd833981519152906020015b60405180910390a2505050565b6000828152606560205260409020600101546108368133611a4c565b6108408383611ab0565b505050565b6001600160a01b03811633146108b55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107c0565b6106cf8282611b36565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156109085760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109516000805160206128ed833981519152546001600160a01b031690565b6001600160a01b0316146109775760405162461bcd60e51b81526004016107c090612712565b61098081611b9d565b6040805160008082526020820190925261099c91839190611bd3565b50565b60008051602061297483398151915260008051602061290d8339815191526109c782336113cf565b6109d5576109d58133611a4c565b6001600160a01b0383161580610a70575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610a2d57600080fd5b505afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906124c0565b6001600160a01b0316145b610a8c5760405162461bcd60e51b81526004016107c090612629565b60ff80546001600160a01b0319166001600160a01b038516179055600460ff546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b60008051602061290d833981519152610aed8133611a4c565b6001600160a01b0382161580610b88575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610b4557600080fd5b505afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906124c0565b6001600160a01b0316145b610ba45760405162461bcd60e51b81526004016107c090612629565b60fe54604051634306023760e01b81526001600160a01b03848116600483015290911690634306023790602401600060405180830381600087803b158015610beb57600080fd5b505af1158015610bff573d6000803e3d6000fd5b505060fc80546001600160a01b0319166001600160a01b038616908117909155604051908152600292506000805160206128cd83398151915291506020015b60405180910390a25050565b600054610100900460ff16610c655760005460ff1615610c69565b303b155b610c855760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015610ca7576000805461ffff19166101011790555b610caf611d4d565b610cb7611d4d565b610cc18383611dba565b8015610840576000805461ff0019169055505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d205760405162461bcd60e51b81526004016107c090612670565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d696000805160206128ed833981519152546001600160a01b031690565b6001600160a01b031614610d8f5760405162461bcd60e51b81526004016107c090612712565b610d9882611b9d565b6106cf82826001611bd3565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e445760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c0565b506000805160206128ed83398151915290565b60008051602061297483398151915260008051602061290d833981519152610e7f82336113cf565b610e8d57610e8d8133611a4c565b6001600160a01b0383161580610f28575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b158015610ee557600080fd5b505afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d91906124c0565b6001600160a01b0316145b610f445760405162461bcd60e51b81526004016107c090612629565b61010080546001600160a01b0319166001600160a01b038516179055601b610100546040516001600160a01b0390911681526000805160206128cd8339815191529060200161080d565b6001600160a01b0381166000908152610101602052604090205460ff166001816003811115610fbf57610fbf612875565b1480610fdc57506002816003811115610fda57610fda612875565b145b6106cf5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e7300000000000060648201526084016107c0565b60008051602061290d83398151915260008051602061295483398151915261107682336113cf565b611084576110848133611a4c565b6001600160a01b0383166000908152610101602052604081205460ff1660038111156110b2576110b2612875565b146110ff5760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c0060448201526064016107c0565b6001600160a01b0383166111555760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f000000000000000060448201526064016107c0565b60fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d491906124c0565b6001600160a01b0316146112355760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b60648201526084016107c0565b61124d60008051602061290d833981519152336113cf565b8061135d57506112d566b1a2bc2ec50000846001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b505afa1580156112ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cf9190612414565b90611e68565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561132357600080fd5b505afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190612414565b115b6113795760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b0383166000818152610101602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b29161080d916125ce565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fe546001600160a01b0316158061141c575060fe546001600160a01b031633145b6114685760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e65637465640000000060448201526064016107c0565b60fe80546001600160a01b03191633179055565b6001600160a01b0381166000908152610101602052604090205460ff1660018160038111156114ad576114ad612875565b146106cf5760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b60648201526084016107c0565b61150e83826113cf565b610840576108408282611a4c565b6000805160206129548339815191526115358133611a4c565b6001600160a01b0382166000908152610101602052604081205460ff16600381111561156357611563612875565b14156115a95760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b816001600160a01b031663ca996de36040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e257600080fd5b505afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190612414565b1561167a5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b60648201526084016107c0565b6001600160a01b03821660008181526101016020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610c3e916125ce565b6000828152606560205260409020600101546116e48133611a4c565b6108408383611b36565b60008051602061290d8339815191526117078133611a4c565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b0390911681526000805160206128cd83398151915290602001610c3e565b60008051602061297483398151915260008051602061290d83398151915260008051602061295483398151915261178683336113cf565b15801561179a575061179882336113cf565b155b156117a9576117a98133611a4c565b6001600160a01b0385166000908152610101602052604081205460ff1660038111156117d7576117d7612875565b141561181d5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b60448201526064016107c0565b600384600381111561183157611831612875565b1415806118515750611851600080516020612974833981519152336113cf565b6118a75760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b60648201526084016107c0565b60018460038111156118bb576118bb612875565b1415806118db57506118db60008051602061290d833981519152336113cf565b806119ad575061192566b1a2bc2ec50000866001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561129757600080fd5b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197357600080fd5b505afa158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190612414565b115b6119c95760405162461bcd60e51b81526004016107c0906126bc565b6001600160a01b038516600090815261010160205260409020805485919060ff191660018360038111156119ff576119ff612875565b0217905550846001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b285604051611a3d91906125ce565b60405180910390a25050505050565b611a5682826113cf565b6106cf57611a6e816001600160a01b03166014611f40565b611a79836020611f40565b604051602001611a8a929190612559565b60408051601f198184030181529082905262461bcd60e51b82526107c0916004016125f6565b611aba82826113cf565b6106cf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611af23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611b4082826113cf565b156106cf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602061297483398151915260008051602061290d833981519152611bc582336113cf565b610840576108408133611a4c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0657610840836120dc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c3f57600080fd5b505afa925050508015611c6f575060408051601f3d908101601f19168201909252611c6c91810190612414565b60015b611cd25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c0565b6000805160206128ed8339815191528114611d415760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c0565b50610840838383612178565b600054610100900460ff16611db85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107c0565b565b600054610100900460ff16611dd55760005460ff1615611dd9565b303b155b611df55760405162461bcd60e51b81526004016107c09061275e565b600054610100900460ff16158015611e17576000805461ffff19166101011790555b611e226000336121a3565b60fe80546001600160a01b038086166001600160a01b03199283161790925560fb8054928516929091169190911790558015610840576000805461ff0019169055505050565b6000821580611e75575081155b15611e82575060006106bf565b81611e966002670de0b6b3a76400006127c4565b611ea290600019612805565b611eac91906127c4565b831115611f075760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c0565b670de0b6b3a7640000611f1b6002826127c4565b611f2584866127e6565b611f2f91906127ac565b611f3991906127c4565b9392505050565b60606000611f4f8360026127e6565b611f5a9060026127ac565b67ffffffffffffffff811115611f7257611f726128a1565b6040519080825280601f01601f191660200182016040528015611f9c576020820181803683370190505b509050600360fc1b81600081518110611fb757611fb761288b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611fe657611fe661288b565b60200101906001600160f81b031916908160001a905350600061200a8460026127e6565b6120159060016127ac565b90505b600181111561208d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106120495761204961288b565b1a60f81b82828151811061205f5761205f61288b565b60200101906001600160f81b031916908160001a90535060049490941c9361208681612848565b9050612018565b508315611f395760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107c0565b6001600160a01b0381163b6121495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c0565b6000805160206128ed83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612181836121ad565b60008251118061218e5750805b156108405761219d83836121ed565b50505050565b6106cf8282611ab0565b6121b6816120dc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6122555760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107c0565b600080846001600160a01b031684604051612270919061253d565b600060405180830381855af49150503d80600081146122ab576040519150601f19603f3d011682016040523d82523d6000602084013e6122b0565b606091505b50915091506122d8828260405180606001604052806027815260200161292d602791396122e1565b95945050505050565b606083156122f0575081611f39565b8251156123005782518084602001fd5b8160405162461bcd60e51b81526004016107c091906125f6565b60006020828403121561232c57600080fd5b8135611f39816128b7565b6000806040838503121561234a57600080fd5b8235612355816128b7565b9150602083013567ffffffffffffffff8082111561237257600080fd5b818501915085601f83011261238657600080fd5b813581811115612398576123986128a1565b604051601f8201601f19908116603f011681019083821181831017156123c0576123c06128a1565b816040528281528860208487010111156123d957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561240d57600080fd5b5035919050565b60006020828403121561242657600080fd5b5051919050565b6000806040838503121561244057600080fd5b823591506020830135612452816128b7565b809150509250929050565b60008060006060848603121561247257600080fd5b8335925060208401359150604084013561248b816128b7565b809150509250925092565b6000602082840312156124a857600080fd5b81356001600160e01b031981168114611f3957600080fd5b6000602082840312156124d257600080fd5b8151611f39816128b7565b600080604083850312156124f057600080fd5b82356124fb816128b7565b91506020830135612452816128b7565b6000806040838503121561251e57600080fd5b8235612529816128b7565b915060208301356004811061245257600080fd5b6000825161254f81846020870161281c565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161259181601785016020880161281c565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516125c281602884016020880161281c565b01602801949350505050565b60208101600483106125f057634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261261581604085016020870161281c565b601f01601f19169190910160400192915050565b60208082526027908201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6040820152661a58de541bdbdb60ca1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526036908201527f5269736b4d6f64756c6520534352204c696d6974206578636565647320746865604082015275103634b6b4ba103337b9102622ab22a619103ab9b2b960511b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156127bf576127bf61285f565b500190565b6000826127e157634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156128005761280061285f565b500290565b6000828210156128175761281761285f565b500390565b60005b8381101561283757818101518382015260200161281f565b8381111561219d5750506000910152565b6000816128575761285761285f565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461099c57600080fdfeb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212203917dceb8281c04477ed78a4c203c9bbc1d146c6c0653d9693d02c84eeb103d064736f6c63430008060033",
684
- "linkReferences": {},
685
- "deployedLinkReferences": {}
686
- }