@ensuro/core 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +93 -0
  2. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +772 -0
  3. package/build/contracts/BaseAssetManager.sol/BaseAssetManager.json +494 -0
  4. package/build/contracts/DataTypes.sol/DataTypes.json +10 -0
  5. package/build/contracts/EToken.sol/EToken.json +1148 -0
  6. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +1093 -0
  7. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +412 -0
  8. package/build/contracts/Policy.sol/Policy.json +10 -0
  9. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +570 -0
  10. package/build/contracts/PolicyPool.sol/PolicyPool.json +1257 -0
  11. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +281 -0
  12. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +660 -0
  13. package/build/contracts/RiskModule.sol/RiskModule.json +748 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +1032 -0
  15. package/build/contracts/WadRayMath.sol/WadRayMath.json +10 -0
  16. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +50 -0
  17. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +322 -0
  18. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +571 -0
  19. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +602 -0
  20. package/build/interfaces/IAssetManager.sol/IAssetManager.json +31 -0
  21. package/build/interfaces/IEToken.sol/IEToken.json +491 -0
  22. package/build/interfaces/IInsolvencyHook.sol/IInsolvencyHook.json +42 -0
  23. package/build/interfaces/ILPWhitelist.sol/ILPWhitelist.json +74 -0
  24. package/build/interfaces/IPolicyNFT.sol/IPolicyNFT.json +321 -0
  25. package/build/interfaces/IPolicyPool.sol/IPolicyPool.json +445 -0
  26. package/build/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +24 -0
  27. package/build/interfaces/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +328 -0
  28. package/build/interfaces/IRiskModule.sol/IRiskModule.json +141 -0
  29. package/contracts/AaveAssetManager.sol +326 -0
  30. package/contracts/BaseAssetManager.sol +283 -0
  31. package/contracts/DataTypes.sol +287 -0
  32. package/contracts/EToken.sol +773 -0
  33. package/contracts/FlightDelayRiskModule.sol +208 -0
  34. package/contracts/LPManualWhitelist.sol +57 -0
  35. package/contracts/Policy.sol +104 -0
  36. package/contracts/PolicyNFT.sol +96 -0
  37. package/contracts/PolicyPool.sol +716 -0
  38. package/contracts/PolicyPoolComponent.sol +164 -0
  39. package/contracts/PolicyPoolConfig.sol +231 -0
  40. package/contracts/RiskModule.sol +323 -0
  41. package/contracts/TrustfulRiskModule.sol +81 -0
  42. package/contracts/WadRayMath.sol +135 -0
  43. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +371 -0
  44. package/contracts/upgraded/IPolicyNFTv1.sol +15 -0
  45. package/contracts/upgraded/PolicyNFTv1.sol +126 -0
  46. package/interfaces/IAssetManager.sol +23 -0
  47. package/interfaces/IEToken.sol +44 -0
  48. package/interfaces/IInsolvencyHook.sol +27 -0
  49. package/interfaces/ILPWhitelist.sol +23 -0
  50. package/interfaces/IPolicyNFT.sol +15 -0
  51. package/interfaces/IPolicyPool.sol +44 -0
  52. package/interfaces/IPolicyPoolComponent.sol +13 -0
  53. package/interfaces/IPolicyPoolConfig.sol +81 -0
  54. package/interfaces/IRiskModule.sol +29 -0
  55. package/package.json +30 -0
@@ -0,0 +1,660 @@
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
+ {
363
+ "internalType": "bytes32",
364
+ "name": "role",
365
+ "type": "bytes32"
366
+ }
367
+ ],
368
+ "name": "getRoleAdmin",
369
+ "outputs": [
370
+ {
371
+ "internalType": "bytes32",
372
+ "name": "",
373
+ "type": "bytes32"
374
+ }
375
+ ],
376
+ "stateMutability": "view",
377
+ "type": "function"
378
+ },
379
+ {
380
+ "inputs": [
381
+ {
382
+ "internalType": "bytes32",
383
+ "name": "role",
384
+ "type": "bytes32"
385
+ },
386
+ {
387
+ "internalType": "address",
388
+ "name": "account",
389
+ "type": "address"
390
+ }
391
+ ],
392
+ "name": "grantRole",
393
+ "outputs": [],
394
+ "stateMutability": "nonpayable",
395
+ "type": "function"
396
+ },
397
+ {
398
+ "inputs": [
399
+ {
400
+ "internalType": "bytes32",
401
+ "name": "role",
402
+ "type": "bytes32"
403
+ },
404
+ {
405
+ "internalType": "address",
406
+ "name": "account",
407
+ "type": "address"
408
+ }
409
+ ],
410
+ "name": "hasRole",
411
+ "outputs": [
412
+ {
413
+ "internalType": "bool",
414
+ "name": "",
415
+ "type": "bool"
416
+ }
417
+ ],
418
+ "stateMutability": "view",
419
+ "type": "function"
420
+ },
421
+ {
422
+ "inputs": [
423
+ {
424
+ "internalType": "contract IPolicyPool",
425
+ "name": "policyPool_",
426
+ "type": "address"
427
+ },
428
+ {
429
+ "internalType": "address",
430
+ "name": "treasury_",
431
+ "type": "address"
432
+ }
433
+ ],
434
+ "name": "initialize",
435
+ "outputs": [],
436
+ "stateMutability": "nonpayable",
437
+ "type": "function"
438
+ },
439
+ {
440
+ "inputs": [],
441
+ "name": "insolvencyHook",
442
+ "outputs": [
443
+ {
444
+ "internalType": "contract IInsolvencyHook",
445
+ "name": "",
446
+ "type": "address"
447
+ }
448
+ ],
449
+ "stateMutability": "view",
450
+ "type": "function"
451
+ },
452
+ {
453
+ "inputs": [],
454
+ "name": "lpWhitelist",
455
+ "outputs": [
456
+ {
457
+ "internalType": "contract ILPWhitelist",
458
+ "name": "",
459
+ "type": "address"
460
+ }
461
+ ],
462
+ "stateMutability": "view",
463
+ "type": "function"
464
+ },
465
+ {
466
+ "inputs": [],
467
+ "name": "policyPool",
468
+ "outputs": [
469
+ {
470
+ "internalType": "contract IPolicyPool",
471
+ "name": "",
472
+ "type": "address"
473
+ }
474
+ ],
475
+ "stateMutability": "view",
476
+ "type": "function"
477
+ },
478
+ {
479
+ "inputs": [],
480
+ "name": "proxiableUUID",
481
+ "outputs": [
482
+ {
483
+ "internalType": "bytes32",
484
+ "name": "",
485
+ "type": "bytes32"
486
+ }
487
+ ],
488
+ "stateMutability": "view",
489
+ "type": "function"
490
+ },
491
+ {
492
+ "inputs": [
493
+ {
494
+ "internalType": "contract IRiskModule",
495
+ "name": "riskModule",
496
+ "type": "address"
497
+ }
498
+ ],
499
+ "name": "removeRiskModule",
500
+ "outputs": [],
501
+ "stateMutability": "nonpayable",
502
+ "type": "function"
503
+ },
504
+ {
505
+ "inputs": [
506
+ {
507
+ "internalType": "bytes32",
508
+ "name": "role",
509
+ "type": "bytes32"
510
+ },
511
+ {
512
+ "internalType": "address",
513
+ "name": "account",
514
+ "type": "address"
515
+ }
516
+ ],
517
+ "name": "renounceRole",
518
+ "outputs": [],
519
+ "stateMutability": "nonpayable",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ {
525
+ "internalType": "bytes32",
526
+ "name": "role",
527
+ "type": "bytes32"
528
+ },
529
+ {
530
+ "internalType": "address",
531
+ "name": "account",
532
+ "type": "address"
533
+ }
534
+ ],
535
+ "name": "revokeRole",
536
+ "outputs": [],
537
+ "stateMutability": "nonpayable",
538
+ "type": "function"
539
+ },
540
+ {
541
+ "inputs": [
542
+ {
543
+ "internalType": "contract IAssetManager",
544
+ "name": "assetManager_",
545
+ "type": "address"
546
+ }
547
+ ],
548
+ "name": "setAssetManager",
549
+ "outputs": [],
550
+ "stateMutability": "nonpayable",
551
+ "type": "function"
552
+ },
553
+ {
554
+ "inputs": [
555
+ {
556
+ "internalType": "contract IInsolvencyHook",
557
+ "name": "insolvencyHook_",
558
+ "type": "address"
559
+ }
560
+ ],
561
+ "name": "setInsolvencyHook",
562
+ "outputs": [],
563
+ "stateMutability": "nonpayable",
564
+ "type": "function"
565
+ },
566
+ {
567
+ "inputs": [
568
+ {
569
+ "internalType": "contract ILPWhitelist",
570
+ "name": "lpWhitelist_",
571
+ "type": "address"
572
+ }
573
+ ],
574
+ "name": "setLPWhitelist",
575
+ "outputs": [],
576
+ "stateMutability": "nonpayable",
577
+ "type": "function"
578
+ },
579
+ {
580
+ "inputs": [
581
+ {
582
+ "internalType": "address",
583
+ "name": "treasury_",
584
+ "type": "address"
585
+ }
586
+ ],
587
+ "name": "setTreasury",
588
+ "outputs": [],
589
+ "stateMutability": "nonpayable",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [
594
+ {
595
+ "internalType": "bytes4",
596
+ "name": "interfaceId",
597
+ "type": "bytes4"
598
+ }
599
+ ],
600
+ "name": "supportsInterface",
601
+ "outputs": [
602
+ {
603
+ "internalType": "bool",
604
+ "name": "",
605
+ "type": "bool"
606
+ }
607
+ ],
608
+ "stateMutability": "view",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [],
613
+ "name": "treasury",
614
+ "outputs": [
615
+ {
616
+ "internalType": "address",
617
+ "name": "",
618
+ "type": "address"
619
+ }
620
+ ],
621
+ "stateMutability": "view",
622
+ "type": "function"
623
+ },
624
+ {
625
+ "inputs": [
626
+ {
627
+ "internalType": "address",
628
+ "name": "newImplementation",
629
+ "type": "address"
630
+ }
631
+ ],
632
+ "name": "upgradeTo",
633
+ "outputs": [],
634
+ "stateMutability": "nonpayable",
635
+ "type": "function"
636
+ },
637
+ {
638
+ "inputs": [
639
+ {
640
+ "internalType": "address",
641
+ "name": "newImplementation",
642
+ "type": "address"
643
+ },
644
+ {
645
+ "internalType": "bytes",
646
+ "name": "data",
647
+ "type": "bytes"
648
+ }
649
+ ],
650
+ "name": "upgradeToAndCall",
651
+ "outputs": [],
652
+ "stateMutability": "payable",
653
+ "type": "function"
654
+ }
655
+ ],
656
+ "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c61283d61005260003960008181610875015281816108b501528181610c8d01528181610ccd0152610d5c015261283d6000f3fe6080604052600436106101ee5760003560e01c80635b494dd51161010d578063948cb719116100a0578063ccdcd9cf1161006f578063ccdcd9cf14610597578063d547741f146105b7578063f0f44260146105d7578063f67b2bad146105f7578063f7d72a251461061957600080fd5b8063948cb7191461052d578063a217fddf14610542578063bbfb8bae14610557578063c5b8f5cf1461057757600080fd5b80638def80e3116100dc5780638def80e3146104b45780639042cf68146104cf57806391d14854146104ef57806394217ad11461050f57600080fd5b80635b494dd51461042457806361d027b31461045857806363b12da814610476578063878ccf781461049457600080fd5b80633659cfe6116101855780634a47a3e0116101545780634a47a3e0146103bc5780634d15eb03146103de5780634f1ef286146103fc57806352d1902d1461040f57600080fd5b80633659cfe61461033c578063398ae8e61461035c578063430602371461037c578063485cc9551461039c57600080fd5b806324ea54f4116101c157806324ea54f4146102ba5780632c08296b146102dc5780632f2ff15d146102fc57806336568abe1461031c57600080fd5b806301ffc9a7146101f357806312d9a6ad146102285780631455cd281461024a578063248a9ca31461027c575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461230a565b610639565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b506102486102433660046122a1565b610670565b005b34801561025657600080fd5b5060fd546001600160a01b03165b6040516001600160a01b03909116815260200161021f565b34801561028857600080fd5b506102ac61029736600461226f565b60009081526065602052604090206001015490565b60405190815260200161021f565b3480156102c657600080fd5b506102ac6000805160206127e883398151915281565b3480156102e857600080fd5b506102486102f736600461218e565b61067e565b34801561030857600080fd5b506102486103173660046122a1565b6107c5565b34801561032857600080fd5b506102486103373660046122a1565b6107f0565b34801561034857600080fd5b5061024861035736600461218e565b61086a565b34801561036857600080fd5b5061024861037736600461218e565b61094a565b34801561038857600080fd5b5061024861039736600461218e565b610a7f565b3480156103a857600080fd5b506102486103b7366004612351565b610bf5565b3480156103c857600080fd5b506102ac6000805160206127c883398151915281565b3480156103ea57600080fd5b5060fe546001600160a01b0316610264565b61024861040a3660046121ab565b610c82565b34801561041b57600080fd5b506102ac610d4f565b34801561043057600080fd5b506102ac7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561046457600080fd5b5060fb546001600160a01b0316610264565b34801561048257600080fd5b5060ff546001600160a01b0316610264565b3480156104a057600080fd5b506102486104af36600461218e565b610e02565b3480156104c057600080fd5b506102ac66b1a2bc2ec5000081565b3480156104db57600080fd5b506102486104ea36600461218e565b610ec2565b3480156104fb57600080fd5b5061021361050a3660046122a1565b611243565b34801561051b57600080fd5b5060fc546001600160a01b0316610264565b34801561053957600080fd5b5061024861126e565b34801561054e57600080fd5b506102ac600081565b34801561056357600080fd5b5061024861057236600461218e565b6112f0565b34801561058357600080fd5b506102486105923660046122d1565b611378565b3480156105a357600080fd5b506102486105b236600461218e565b611390565b3480156105c357600080fd5b506102486105d23660046122a1565b61153c565b3480156105e357600080fd5b506102486105f236600461218e565b611562565b34801561060357600080fd5b506102ac60008051602061278183398151915281565b34801561062557600080fd5b5061024861063436600461237f565b6115c3565b60006001600160e01b03198216637965db0b60e01b148061066a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61067a82826118c0565b5050565b6000805160206127e88339815191526000805160206127818339815191526106a68233611243565b6106b4576106b481336118c0565b6001600160a01b038316158061074f575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561070c57600080fd5b505afa158015610720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107449190612334565b6001600160a01b0316145b6107745760405162461bcd60e51b815260040161076b9061249d565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b038516179055600360fd546040516001600160a01b039091168152600080516020612741833981519152906020015b60405180910390a2505050565b6000828152606560205260409020600101546107e181336118c0565b6107eb8383611924565b505050565b6001600160a01b03811633146108605760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161076b565b61067a82826119aa565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108b35760405162461bcd60e51b815260040161076b906124e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108fc600080516020612761833981519152546001600160a01b031690565b6001600160a01b0316146109225760405162461bcd60e51b815260040161076b90612586565b61092b81611a11565b6040805160008082526020820190925261094791839190611a47565b50565b6000805160206127e88339815191526000805160206127818339815191526109728233611243565b6109805761098081336118c0565b6001600160a01b0383161580610a1b575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b1580156109d857600080fd5b505afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190612334565b6001600160a01b0316145b610a375760405162461bcd60e51b815260040161076b9061249d565b60ff80546001600160a01b0319166001600160a01b038516179055600460ff546040516001600160a01b039091168152600080516020612741833981519152906020016107b8565b600080516020612781833981519152610a9881336118c0565b6001600160a01b0382161580610b33575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190612334565b6001600160a01b0316145b610b4f5760405162461bcd60e51b815260040161076b9061249d565b60fe54604051634306023760e01b81526001600160a01b03848116600483015290911690634306023790602401600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b505060fc80546001600160a01b0319166001600160a01b0386169081179091556040519081526002925060008051602061274183398151915291506020015b60405180910390a25050565b600054610100900460ff16610c105760005460ff1615610c14565b303b155b610c305760405162461bcd60e51b815260040161076b906125d2565b600054610100900460ff16158015610c52576000805461ffff19166101011790555b610c5a611bc1565b610c62611bc1565b610c6c8383611c2e565b80156107eb576000805461ff0019169055505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ccb5760405162461bcd60e51b815260040161076b906124e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d14600080516020612761833981519152546001600160a01b031690565b6001600160a01b031614610d3a5760405162461bcd60e51b815260040161076b90612586565b610d4382611a11565b61067a82826001611a47565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610def5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161076b565b5060008051602061276183398151915290565b6001600160a01b0381166000908152610100602052604090205460ff166001816003811115610e3357610e336126e9565b1480610e5057506002816003811115610e4e57610e4e6126e9565b145b61067a5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e73000000000000606482015260840161076b565b6000805160206127818339815191526000805160206127c8833981519152610eea8233611243565b610ef857610ef881336118c0565b6001600160a01b0383166000908152610100602052604081205460ff166003811115610f2657610f266126e9565b14610f735760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c00604482015260640161076b565b6001600160a01b038316610fc95760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f0000000000000000604482015260640161076b565b60fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561101057600080fd5b505afa158015611024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110489190612334565b6001600160a01b0316146110a95760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b606482015260840161076b565b6110c160008051602061278183398151915233611243565b806111d1575061114966b1a2bc2ec50000846001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190612288565b90611cdc565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cf9190612288565b115b6111ed5760405162461bcd60e51b815260040161076b90612530565b6001600160a01b0383166000818152610100602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2916107b891612442565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fe546001600160a01b03161580611290575060fe546001600160a01b031633145b6112dc5760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e656374656400000000604482015260640161076b565b60fe80546001600160a01b03191633179055565b6001600160a01b0381166000908152610100602052604090205460ff166001816003811115611321576113216126e9565b1461067a5760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b606482015260840161076b565b6113828382611243565b6107eb576107eb82826118c0565b6000805160206127c88339815191526113a981336118c0565b6001600160a01b0382166000908152610100602052604081205460ff1660038111156113d7576113d76126e9565b141561141d5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161076b565b816001600160a01b031663ca996de36040518163ffffffff1660e01b815260040160206040518083038186803b15801561145657600080fd5b505afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190612288565b156114ee5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b606482015260840161076b565b6001600160a01b03821660008181526101006020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610be991612442565b60008281526065602052604090206001015461155881336118c0565b6107eb83836119aa565b60008051602061278183398151915261157b81336118c0565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b03909116815260008051602061274183398151915290602001610be9565b6000805160206127e88339815191526000805160206127818339815191526000805160206127c88339815191526115fa8333611243565b15801561160e575061160c8233611243565b155b1561161d5761161d81336118c0565b6001600160a01b0385166000908152610100602052604081205460ff16600381111561164b5761164b6126e9565b14156116915760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161076b565b60038460038111156116a5576116a56126e9565b1415806116c557506116c56000805160206127e883398151915233611243565b61171b5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b606482015260840161076b565b600184600381111561172f5761172f6126e9565b14158061174f575061174f60008051602061278183398151915233611243565b80611821575061179966b1a2bc2ec50000866001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e757600080fd5b505afa1580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f9190612288565b115b61183d5760405162461bcd60e51b815260040161076b90612530565b6001600160a01b038516600090815261010060205260409020805485919060ff19166001836003811115611873576118736126e9565b0217905550846001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2856040516118b19190612442565b60405180910390a25050505050565b6118ca8282611243565b61067a576118e2816001600160a01b03166014611db4565b6118ed836020611db4565b6040516020016118fe9291906123cd565b60408051601f198184030181529082905262461bcd60e51b825261076b9160040161246a565b61192e8282611243565b61067a5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119663390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119b48282611243565b1561067a5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206127e8833981519152600080516020612781833981519152611a398233611243565b6107eb576107eb81336118c0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a7a576107eb83611f50565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab357600080fd5b505afa925050508015611ae3575060408051601f3d908101601f19168201909252611ae091810190612288565b60015b611b465760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161076b565b6000805160206127618339815191528114611bb55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161076b565b506107eb838383611fec565b600054610100900460ff16611c2c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161076b565b565b600054610100900460ff16611c495760005460ff1615611c4d565b303b155b611c695760405162461bcd60e51b815260040161076b906125d2565b600054610100900460ff16158015611c8b576000805461ffff19166101011790555b611c96600033612017565b60fe80546001600160a01b038086166001600160a01b03199283161790925560fb80549285169290911691909117905580156107eb576000805461ff0019169055505050565b6000821580611ce9575081155b15611cf65750600061066a565b81611d0a6002670de0b6b3a7640000612638565b611d1690600019612679565b611d209190612638565b831115611d7b5760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b606482015260840161076b565b670de0b6b3a7640000611d8f600282612638565b611d99848661265a565b611da39190612620565b611dad9190612638565b9392505050565b60606000611dc383600261265a565b611dce906002612620565b67ffffffffffffffff811115611de657611de6612715565b6040519080825280601f01601f191660200182016040528015611e10576020820181803683370190505b509050600360fc1b81600081518110611e2b57611e2b6126ff565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611e5a57611e5a6126ff565b60200101906001600160f81b031916908160001a9053506000611e7e84600261265a565b611e89906001612620565b90505b6001811115611f01576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611ebd57611ebd6126ff565b1a60f81b828281518110611ed357611ed36126ff565b60200101906001600160f81b031916908160001a90535060049490941c93611efa816126bc565b9050611e8c565b508315611dad5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161076b565b6001600160a01b0381163b611fbd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161076b565b60008051602061276183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611ff583612021565b6000825111806120025750805b156107eb576120118383612061565b50505050565b61067a8282611924565b61202a81611f50565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6120c95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161076b565b600080846001600160a01b0316846040516120e491906123b1565b600060405180830381855af49150503d806000811461211f576040519150601f19603f3d011682016040523d82523d6000602084013e612124565b606091505b509150915061214c82826040518060600160405280602781526020016127a160279139612155565b95945050505050565b60608315612164575081611dad565b8251156121745782518084602001fd5b8160405162461bcd60e51b815260040161076b919061246a565b6000602082840312156121a057600080fd5b8135611dad8161272b565b600080604083850312156121be57600080fd5b82356121c98161272b565b9150602083013567ffffffffffffffff808211156121e657600080fd5b818501915085601f8301126121fa57600080fd5b81358181111561220c5761220c612715565b604051601f8201601f19908116603f0116810190838211818310171561223457612234612715565b8160405282815288602084870101111561224d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561228157600080fd5b5035919050565b60006020828403121561229a57600080fd5b5051919050565b600080604083850312156122b457600080fd5b8235915060208301356122c68161272b565b809150509250929050565b6000806000606084860312156122e657600080fd5b833592506020840135915060408401356122ff8161272b565b809150509250925092565b60006020828403121561231c57600080fd5b81356001600160e01b031981168114611dad57600080fd5b60006020828403121561234657600080fd5b8151611dad8161272b565b6000806040838503121561236457600080fd5b823561236f8161272b565b915060208301356122c68161272b565b6000806040838503121561239257600080fd5b823561239d8161272b565b91506020830135600481106122c657600080fd5b600082516123c3818460208701612690565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612405816017850160208801612690565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612436816028840160208801612690565b01602801949350505050565b602081016004831061246457634e487b7160e01b600052602160045260246000fd5b91905290565b6020815260008251806020840152612489816040850160208701612690565b601f01601f19169190910160400192915050565b60208082526027908201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6040820152661a58de541bdbdb60ca1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526036908201527f5269736b4d6f64756c6520534352204c696d6974206578636565647320746865604082015275103634b6b4ba103337b9102622ab22a619103ab9b2b960511b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008219821115612633576126336126d3565b500190565b60008261265557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612674576126746126d3565b500290565b60008282101561268b5761268b6126d3565b500390565b60005b838110156126ab578181015183820152602001612693565b838111156120115750506000910152565b6000816126cb576126cb6126d3565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461094757600080fdfeb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220de3c2b284ed13ceaa556627fd8863d84b442d93d37df357cd32e99a95036af4964736f6c63430008060033",
657
+ "deployedBytecode": "0x6080604052600436106101ee5760003560e01c80635b494dd51161010d578063948cb719116100a0578063ccdcd9cf1161006f578063ccdcd9cf14610597578063d547741f146105b7578063f0f44260146105d7578063f67b2bad146105f7578063f7d72a251461061957600080fd5b8063948cb7191461052d578063a217fddf14610542578063bbfb8bae14610557578063c5b8f5cf1461057757600080fd5b80638def80e3116100dc5780638def80e3146104b45780639042cf68146104cf57806391d14854146104ef57806394217ad11461050f57600080fd5b80635b494dd51461042457806361d027b31461045857806363b12da814610476578063878ccf781461049457600080fd5b80633659cfe6116101855780634a47a3e0116101545780634a47a3e0146103bc5780634d15eb03146103de5780634f1ef286146103fc57806352d1902d1461040f57600080fd5b80633659cfe61461033c578063398ae8e61461035c578063430602371461037c578063485cc9551461039c57600080fd5b806324ea54f4116101c157806324ea54f4146102ba5780632c08296b146102dc5780632f2ff15d146102fc57806336568abe1461031c57600080fd5b806301ffc9a7146101f357806312d9a6ad146102285780631455cd281461024a578063248a9ca31461027c575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461230a565b610639565b60405190151581526020015b60405180910390f35b34801561023457600080fd5b506102486102433660046122a1565b610670565b005b34801561025657600080fd5b5060fd546001600160a01b03165b6040516001600160a01b03909116815260200161021f565b34801561028857600080fd5b506102ac61029736600461226f565b60009081526065602052604090206001015490565b60405190815260200161021f565b3480156102c657600080fd5b506102ac6000805160206127e883398151915281565b3480156102e857600080fd5b506102486102f736600461218e565b61067e565b34801561030857600080fd5b506102486103173660046122a1565b6107c5565b34801561032857600080fd5b506102486103373660046122a1565b6107f0565b34801561034857600080fd5b5061024861035736600461218e565b61086a565b34801561036857600080fd5b5061024861037736600461218e565b61094a565b34801561038857600080fd5b5061024861039736600461218e565b610a7f565b3480156103a857600080fd5b506102486103b7366004612351565b610bf5565b3480156103c857600080fd5b506102ac6000805160206127c883398151915281565b3480156103ea57600080fd5b5060fe546001600160a01b0316610264565b61024861040a3660046121ab565b610c82565b34801561041b57600080fd5b506102ac610d4f565b34801561043057600080fd5b506102ac7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561046457600080fd5b5060fb546001600160a01b0316610264565b34801561048257600080fd5b5060ff546001600160a01b0316610264565b3480156104a057600080fd5b506102486104af36600461218e565b610e02565b3480156104c057600080fd5b506102ac66b1a2bc2ec5000081565b3480156104db57600080fd5b506102486104ea36600461218e565b610ec2565b3480156104fb57600080fd5b5061021361050a3660046122a1565b611243565b34801561051b57600080fd5b5060fc546001600160a01b0316610264565b34801561053957600080fd5b5061024861126e565b34801561054e57600080fd5b506102ac600081565b34801561056357600080fd5b5061024861057236600461218e565b6112f0565b34801561058357600080fd5b506102486105923660046122d1565b611378565b3480156105a357600080fd5b506102486105b236600461218e565b611390565b3480156105c357600080fd5b506102486105d23660046122a1565b61153c565b3480156105e357600080fd5b506102486105f236600461218e565b611562565b34801561060357600080fd5b506102ac60008051602061278183398151915281565b34801561062557600080fd5b5061024861063436600461237f565b6115c3565b60006001600160e01b03198216637965db0b60e01b148061066a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61067a82826118c0565b5050565b6000805160206127e88339815191526000805160206127818339815191526106a68233611243565b6106b4576106b481336118c0565b6001600160a01b038316158061074f575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561070c57600080fd5b505afa158015610720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107449190612334565b6001600160a01b0316145b6107745760405162461bcd60e51b815260040161076b9061249d565b60405180910390fd5b60fd80546001600160a01b0319166001600160a01b038516179055600360fd546040516001600160a01b039091168152600080516020612741833981519152906020015b60405180910390a2505050565b6000828152606560205260409020600101546107e181336118c0565b6107eb8383611924565b505050565b6001600160a01b03811633146108605760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161076b565b61067a82826119aa565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108b35760405162461bcd60e51b815260040161076b906124e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108fc600080516020612761833981519152546001600160a01b031690565b6001600160a01b0316146109225760405162461bcd60e51b815260040161076b90612586565b61092b81611a11565b6040805160008082526020820190925261094791839190611a47565b50565b6000805160206127e88339815191526000805160206127818339815191526109728233611243565b6109805761098081336118c0565b6001600160a01b0383161580610a1b575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b1580156109d857600080fd5b505afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190612334565b6001600160a01b0316145b610a375760405162461bcd60e51b815260040161076b9061249d565b60ff80546001600160a01b0319166001600160a01b038516179055600460ff546040516001600160a01b039091168152600080516020612741833981519152906020016107b8565b600080516020612781833981519152610a9881336118c0565b6001600160a01b0382161580610b33575060fe5460408051634d15eb0360e01b815290516001600160a01b0392831692851691634d15eb03916004808301926020929190829003018186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190612334565b6001600160a01b0316145b610b4f5760405162461bcd60e51b815260040161076b9061249d565b60fe54604051634306023760e01b81526001600160a01b03848116600483015290911690634306023790602401600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b505060fc80546001600160a01b0319166001600160a01b0386169081179091556040519081526002925060008051602061274183398151915291506020015b60405180910390a25050565b600054610100900460ff16610c105760005460ff1615610c14565b303b155b610c305760405162461bcd60e51b815260040161076b906125d2565b600054610100900460ff16158015610c52576000805461ffff19166101011790555b610c5a611bc1565b610c62611bc1565b610c6c8383611c2e565b80156107eb576000805461ff0019169055505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610ccb5760405162461bcd60e51b815260040161076b906124e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d14600080516020612761833981519152546001600160a01b031690565b6001600160a01b031614610d3a5760405162461bcd60e51b815260040161076b90612586565b610d4382611a11565b61067a82826001611a47565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610def5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161076b565b5060008051602061276183398151915290565b6001600160a01b0381166000908152610100602052604090205460ff166001816003811115610e3357610e336126e9565b1480610e5057506002816003811115610e4e57610e4e6126e9565b145b61067a5760405162461bcd60e51b815260206004820152603a60248201527f4d6f64756c65206d75737420626520616374697665206f72206465707265636160448201527f74656420746f2070726f63657373207265736f6c7574696f6e73000000000000606482015260840161076b565b6000805160206127818339815191526000805160206127c8833981519152610eea8233611243565b610ef857610ef881336118c0565b6001600160a01b0383166000908152610100602052604081205460ff166003811115610f2657610f266126e9565b14610f735760405162461bcd60e51b815260206004820152601f60248201527f5269736b204d6f64756c6520616c726561647920696e2074686520706f6f6c00604482015260640161076b565b6001600160a01b038316610fc95760405162461bcd60e51b815260206004820152601860248201527f7269736b4d6f64756c652063616e2774206265207a65726f0000000000000000604482015260640161076b565b60fe5460408051634d15eb0360e01b815290516001600160a01b0392831692861691634d15eb03916004808301926020929190829003018186803b15801561101057600080fd5b505afa158015611024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110489190612334565b6001600160a01b0316146110a95760405162461bcd60e51b815260206004820152602260248201527f5269736b4d6f64756c65206e6f74206c696e6b656420746f207468697320706f6044820152611bdb60f21b606482015260840161076b565b6110c160008051602061278183398151915233611243565b806111d1575061114966b1a2bc2ec50000846001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b505afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190612288565b90611cdc565b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b15801561119757600080fd5b505afa1580156111ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cf9190612288565b115b6111ed5760405162461bcd60e51b815260040161076b90612530565b6001600160a01b0383166000818152610100602052604090819020805460ff1916600190811790915590517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2916107b891612442565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60fe546001600160a01b03161580611290575060fe546001600160a01b031633145b6112dc5760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e656374656400000000604482015260640161076b565b60fe80546001600160a01b03191633179055565b6001600160a01b0381166000908152610100602052604090205460ff166001816003811115611321576113216126e9565b1461067a5760405162461bcd60e51b815260206004820152602160248201527f524d206d6f64756c65206e6f7420666f756e64206f72206e6f742061637469766044820152606560f81b606482015260840161076b565b6113828382611243565b6107eb576107eb82826118c0565b6000805160206127c88339815191526113a981336118c0565b6001600160a01b0382166000908152610100602052604081205460ff1660038111156113d7576113d76126e9565b141561141d5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161076b565b816001600160a01b031663ca996de36040518163ffffffff1660e01b815260040160206040518083038186803b15801561145657600080fd5b505afa15801561146a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148e9190612288565b156114ee5760405162461bcd60e51b815260206004820152602a60248201527f43616e27742072656d6f76652061206d6f64756c6520776974682061637469766044820152696520706f6c696369657360b01b606482015260840161076b565b6001600160a01b03821660008181526101006020526040808220805460ff19169055517fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b291610be991612442565b60008281526065602052604090206001015461155881336118c0565b6107eb83836119aa565b60008051602061278183398151915261157b81336118c0565b60fb80546001600160a01b0319166001600160a01b038416179055600160fb546040516001600160a01b03909116815260008051602061274183398151915290602001610be9565b6000805160206127e88339815191526000805160206127818339815191526000805160206127c88339815191526115fa8333611243565b15801561160e575061160c8233611243565b155b1561161d5761161d81336118c0565b6001600160a01b0385166000908152610100602052604081205460ff16600381111561164b5761164b6126e9565b14156116915760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b604482015260640161076b565b60038460038111156116a5576116a56126e9565b1415806116c557506116c56000805160206127e883398151915233611243565b61171b5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e64206d6f64756c656044820152607360f81b606482015260840161076b565b600184600381111561172f5761172f6126e9565b14158061174f575061174f60008051602061278183398151915233611243565b80611821575061179966b1a2bc2ec50000866001600160a01b03166341ea6a0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110b57600080fd5b60fe60009054906101000a90046001600160a01b03166001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e757600080fd5b505afa1580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f9190612288565b115b61183d5760405162461bcd60e51b815260040161076b90612530565b6001600160a01b038516600090815261010060205260409020805485919060ff19166001836003811115611873576118736126e9565b0217905550846001600160a01b03167fd53eb6b3f6b4537d457cf1ef5020afc3e8cef610aa1472d19e442e9a62fef4b2856040516118b19190612442565b60405180910390a25050505050565b6118ca8282611243565b61067a576118e2816001600160a01b03166014611db4565b6118ed836020611db4565b6040516020016118fe9291906123cd565b60408051601f198184030181529082905262461bcd60e51b825261076b9160040161246a565b61192e8282611243565b61067a5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119663390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119b48282611243565b1561067a5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206127e8833981519152600080516020612781833981519152611a398233611243565b6107eb576107eb81336118c0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a7a576107eb83611f50565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ab357600080fd5b505afa925050508015611ae3575060408051601f3d908101601f19168201909252611ae091810190612288565b60015b611b465760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161076b565b6000805160206127618339815191528114611bb55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161076b565b506107eb838383611fec565b600054610100900460ff16611c2c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161076b565b565b600054610100900460ff16611c495760005460ff1615611c4d565b303b155b611c695760405162461bcd60e51b815260040161076b906125d2565b600054610100900460ff16158015611c8b576000805461ffff19166101011790555b611c96600033612017565b60fe80546001600160a01b038086166001600160a01b03199283161790925560fb80549285169290911691909117905580156107eb576000805461ff0019169055505050565b6000821580611ce9575081155b15611cf65750600061066a565b81611d0a6002670de0b6b3a7640000612638565b611d1690600019612679565b611d209190612638565b831115611d7b5760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b606482015260840161076b565b670de0b6b3a7640000611d8f600282612638565b611d99848661265a565b611da39190612620565b611dad9190612638565b9392505050565b60606000611dc383600261265a565b611dce906002612620565b67ffffffffffffffff811115611de657611de6612715565b6040519080825280601f01601f191660200182016040528015611e10576020820181803683370190505b509050600360fc1b81600081518110611e2b57611e2b6126ff565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611e5a57611e5a6126ff565b60200101906001600160f81b031916908160001a9053506000611e7e84600261265a565b611e89906001612620565b90505b6001811115611f01576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611ebd57611ebd6126ff565b1a60f81b828281518110611ed357611ed36126ff565b60200101906001600160f81b031916908160001a90535060049490941c93611efa816126bc565b9050611e8c565b508315611dad5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161076b565b6001600160a01b0381163b611fbd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161076b565b60008051602061276183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611ff583612021565b6000825111806120025750805b156107eb576120118383612061565b50505050565b61067a8282611924565b61202a81611f50565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6120c95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161076b565b600080846001600160a01b0316846040516120e491906123b1565b600060405180830381855af49150503d806000811461211f576040519150601f19603f3d011682016040523d82523d6000602084013e612124565b606091505b509150915061214c82826040518060600160405280602781526020016127a160279139612155565b95945050505050565b60608315612164575081611dad565b8251156121745782518084602001fd5b8160405162461bcd60e51b815260040161076b919061246a565b6000602082840312156121a057600080fd5b8135611dad8161272b565b600080604083850312156121be57600080fd5b82356121c98161272b565b9150602083013567ffffffffffffffff808211156121e657600080fd5b818501915085601f8301126121fa57600080fd5b81358181111561220c5761220c612715565b604051601f8201601f19908116603f0116810190838211818310171561223457612234612715565b8160405282815288602084870101111561224d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561228157600080fd5b5035919050565b60006020828403121561229a57600080fd5b5051919050565b600080604083850312156122b457600080fd5b8235915060208301356122c68161272b565b809150509250929050565b6000806000606084860312156122e657600080fd5b833592506020840135915060408401356122ff8161272b565b809150509250925092565b60006020828403121561231c57600080fd5b81356001600160e01b031981168114611dad57600080fd5b60006020828403121561234657600080fd5b8151611dad8161272b565b6000806040838503121561236457600080fd5b823561236f8161272b565b915060208301356122c68161272b565b6000806040838503121561239257600080fd5b823561239d8161272b565b91506020830135600481106122c657600080fd5b600082516123c3818460208701612690565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612405816017850160208801612690565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612436816028840160208801612690565b01602801949350505050565b602081016004831061246457634e487b7160e01b600052602160045260246000fd5b91905290565b6020815260008251806020840152612489816040850160208701612690565b601f01601f19169190910160400192915050565b60208082526027908201527f436f6d706f6e656e74206e6f74206c696e6b656420746f207468697320506f6c6040820152661a58de541bdbdb60ca1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b60208082526036908201527f5269736b4d6f64756c6520534352204c696d6974206578636565647320746865604082015275103634b6b4ba103337b9102622ab22a619103ab9b2b960511b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008219821115612633576126336126d3565b500190565b60008261265557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612674576126746126d3565b500290565b60008282101561268b5761268b6126d3565b500390565b60005b838110156126ab578181015183820152602001612693565b838111156120115750506000910152565b6000816126cb576126cb6126d3565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461094757600080fdfeb6bdbd44472629fc24a00b6f4ee3348b72c9eff333d0e9c16d78c49da1323c8f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220de3c2b284ed13ceaa556627fd8863d84b442d93d37df357cd32e99a95036af4964736f6c63430008060033",
658
+ "linkReferences": {},
659
+ "deployedLinkReferences": {}
660
+ }