@ensuro/core 1.2.7 → 2.0.0-beta1

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 (92) hide show
  1. package/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +122 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +101 -323
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +15 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +13 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +15 -202
  12. package/build/contracts/RiskModule.sol/RiskModule.json +83 -310
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +131 -333
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  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/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -269
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +8 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +29 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -742
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -591
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1055
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -189
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -0,0 +1,353 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TestCurrencyUUPS",
4
+ "sourceName": "contracts/mocks/TestCurrencyUUPS.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": true,
11
+ "internalType": "address",
12
+ "name": "owner",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": true,
17
+ "internalType": "address",
18
+ "name": "spender",
19
+ "type": "address"
20
+ },
21
+ {
22
+ "indexed": false,
23
+ "internalType": "uint256",
24
+ "name": "value",
25
+ "type": "uint256"
26
+ }
27
+ ],
28
+ "name": "Approval",
29
+ "type": "event"
30
+ },
31
+ {
32
+ "anonymous": false,
33
+ "inputs": [
34
+ {
35
+ "indexed": false,
36
+ "internalType": "uint8",
37
+ "name": "version",
38
+ "type": "uint8"
39
+ }
40
+ ],
41
+ "name": "Initialized",
42
+ "type": "event"
43
+ },
44
+ {
45
+ "anonymous": false,
46
+ "inputs": [
47
+ {
48
+ "indexed": true,
49
+ "internalType": "address",
50
+ "name": "from",
51
+ "type": "address"
52
+ },
53
+ {
54
+ "indexed": true,
55
+ "internalType": "address",
56
+ "name": "to",
57
+ "type": "address"
58
+ },
59
+ {
60
+ "indexed": false,
61
+ "internalType": "uint256",
62
+ "name": "value",
63
+ "type": "uint256"
64
+ }
65
+ ],
66
+ "name": "Transfer",
67
+ "type": "event"
68
+ },
69
+ {
70
+ "inputs": [
71
+ {
72
+ "internalType": "address",
73
+ "name": "owner",
74
+ "type": "address"
75
+ },
76
+ {
77
+ "internalType": "address",
78
+ "name": "spender",
79
+ "type": "address"
80
+ }
81
+ ],
82
+ "name": "allowance",
83
+ "outputs": [
84
+ {
85
+ "internalType": "uint256",
86
+ "name": "",
87
+ "type": "uint256"
88
+ }
89
+ ],
90
+ "stateMutability": "view",
91
+ "type": "function"
92
+ },
93
+ {
94
+ "inputs": [
95
+ {
96
+ "internalType": "address",
97
+ "name": "spender",
98
+ "type": "address"
99
+ },
100
+ {
101
+ "internalType": "uint256",
102
+ "name": "amount",
103
+ "type": "uint256"
104
+ }
105
+ ],
106
+ "name": "approve",
107
+ "outputs": [
108
+ {
109
+ "internalType": "bool",
110
+ "name": "",
111
+ "type": "bool"
112
+ }
113
+ ],
114
+ "stateMutability": "nonpayable",
115
+ "type": "function"
116
+ },
117
+ {
118
+ "inputs": [
119
+ {
120
+ "internalType": "address",
121
+ "name": "account",
122
+ "type": "address"
123
+ }
124
+ ],
125
+ "name": "balanceOf",
126
+ "outputs": [
127
+ {
128
+ "internalType": "uint256",
129
+ "name": "",
130
+ "type": "uint256"
131
+ }
132
+ ],
133
+ "stateMutability": "view",
134
+ "type": "function"
135
+ },
136
+ {
137
+ "inputs": [
138
+ {
139
+ "internalType": "address",
140
+ "name": "recipient",
141
+ "type": "address"
142
+ },
143
+ {
144
+ "internalType": "uint256",
145
+ "name": "amount",
146
+ "type": "uint256"
147
+ }
148
+ ],
149
+ "name": "burn",
150
+ "outputs": [],
151
+ "stateMutability": "nonpayable",
152
+ "type": "function"
153
+ },
154
+ {
155
+ "inputs": [],
156
+ "name": "decimals",
157
+ "outputs": [
158
+ {
159
+ "internalType": "uint8",
160
+ "name": "",
161
+ "type": "uint8"
162
+ }
163
+ ],
164
+ "stateMutability": "view",
165
+ "type": "function"
166
+ },
167
+ {
168
+ "inputs": [
169
+ {
170
+ "internalType": "address",
171
+ "name": "spender",
172
+ "type": "address"
173
+ },
174
+ {
175
+ "internalType": "uint256",
176
+ "name": "subtractedValue",
177
+ "type": "uint256"
178
+ }
179
+ ],
180
+ "name": "decreaseAllowance",
181
+ "outputs": [
182
+ {
183
+ "internalType": "bool",
184
+ "name": "",
185
+ "type": "bool"
186
+ }
187
+ ],
188
+ "stateMutability": "nonpayable",
189
+ "type": "function"
190
+ },
191
+ {
192
+ "inputs": [
193
+ {
194
+ "internalType": "address",
195
+ "name": "spender",
196
+ "type": "address"
197
+ },
198
+ {
199
+ "internalType": "uint256",
200
+ "name": "addedValue",
201
+ "type": "uint256"
202
+ }
203
+ ],
204
+ "name": "increaseAllowance",
205
+ "outputs": [
206
+ {
207
+ "internalType": "bool",
208
+ "name": "",
209
+ "type": "bool"
210
+ }
211
+ ],
212
+ "stateMutability": "nonpayable",
213
+ "type": "function"
214
+ },
215
+ {
216
+ "inputs": [
217
+ {
218
+ "internalType": "string",
219
+ "name": "name_",
220
+ "type": "string"
221
+ },
222
+ {
223
+ "internalType": "string",
224
+ "name": "symbol_",
225
+ "type": "string"
226
+ },
227
+ {
228
+ "internalType": "uint256",
229
+ "name": "initialSupply",
230
+ "type": "uint256"
231
+ }
232
+ ],
233
+ "name": "initialize",
234
+ "outputs": [],
235
+ "stateMutability": "nonpayable",
236
+ "type": "function"
237
+ },
238
+ {
239
+ "inputs": [
240
+ {
241
+ "internalType": "address",
242
+ "name": "recipient",
243
+ "type": "address"
244
+ },
245
+ {
246
+ "internalType": "uint256",
247
+ "name": "amount",
248
+ "type": "uint256"
249
+ }
250
+ ],
251
+ "name": "mint",
252
+ "outputs": [],
253
+ "stateMutability": "nonpayable",
254
+ "type": "function"
255
+ },
256
+ {
257
+ "inputs": [],
258
+ "name": "name",
259
+ "outputs": [
260
+ {
261
+ "internalType": "string",
262
+ "name": "",
263
+ "type": "string"
264
+ }
265
+ ],
266
+ "stateMutability": "view",
267
+ "type": "function"
268
+ },
269
+ {
270
+ "inputs": [],
271
+ "name": "symbol",
272
+ "outputs": [
273
+ {
274
+ "internalType": "string",
275
+ "name": "",
276
+ "type": "string"
277
+ }
278
+ ],
279
+ "stateMutability": "view",
280
+ "type": "function"
281
+ },
282
+ {
283
+ "inputs": [],
284
+ "name": "totalSupply",
285
+ "outputs": [
286
+ {
287
+ "internalType": "uint256",
288
+ "name": "",
289
+ "type": "uint256"
290
+ }
291
+ ],
292
+ "stateMutability": "view",
293
+ "type": "function"
294
+ },
295
+ {
296
+ "inputs": [
297
+ {
298
+ "internalType": "address",
299
+ "name": "to",
300
+ "type": "address"
301
+ },
302
+ {
303
+ "internalType": "uint256",
304
+ "name": "amount",
305
+ "type": "uint256"
306
+ }
307
+ ],
308
+ "name": "transfer",
309
+ "outputs": [
310
+ {
311
+ "internalType": "bool",
312
+ "name": "",
313
+ "type": "bool"
314
+ }
315
+ ],
316
+ "stateMutability": "nonpayable",
317
+ "type": "function"
318
+ },
319
+ {
320
+ "inputs": [
321
+ {
322
+ "internalType": "address",
323
+ "name": "from",
324
+ "type": "address"
325
+ },
326
+ {
327
+ "internalType": "address",
328
+ "name": "to",
329
+ "type": "address"
330
+ },
331
+ {
332
+ "internalType": "uint256",
333
+ "name": "amount",
334
+ "type": "uint256"
335
+ }
336
+ ],
337
+ "name": "transferFrom",
338
+ "outputs": [
339
+ {
340
+ "internalType": "bool",
341
+ "name": "",
342
+ "type": "bool"
343
+ }
344
+ ],
345
+ "stateMutability": "nonpayable",
346
+ "type": "function"
347
+ }
348
+ ],
349
+ "bytecode": "0x608060405234801561001057600080fd5b50610f07806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146101d0578063a9059cbb146101e3578063b119490e146101f6578063dd62ed3e1461020957600080fd5b806370a082311461018c57806395d89b41146101b55780639dc29fac146101bd57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016457806340c10f191461017757600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761021c565b6040516101049190610d9b565b60405180910390f35b61012061011b366004610d04565b6102ae565b6040519015158152602001610104565b6035545b604051908152602001610104565b610120610150366004610cc8565b6102c6565b60405160128152602001610104565b610120610172366004610d04565b6102ea565b61018a610185366004610d04565b61030c565b005b61013461019a366004610c73565b6001600160a01b031660009081526033602052604090205490565b6100f761031a565b61018a6101cb366004610d04565b610329565b6101206101de366004610d04565b610333565b6101206101f1366004610d04565b6103b3565b61018a610204366004610d2e565b6103c1565b610134610217366004610c95565b6104ff565b60606036805461022b90610e6a565b80601f016020809104026020016040519081016040528092919081815260200182805461025790610e6a565b80156102a45780601f10610279576101008083540402835291602001916102a4565b820191906000526020600020905b81548152906001019060200180831161028757829003601f168201915b5050505050905090565b6000336102bc81858561052a565b5060019392505050565b6000336102d485828561064f565b6102df8585856106c3565b506001949350505050565b6000336102bc8185856102fd83836104ff565b6103079190610e3b565b61052a565b6103168282610891565b5050565b60606037805461022b90610e6a565b6103168282610970565b6000338161034182866104ff565b9050838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102df828686840361052a565b6000336102bc8185856106c3565b600054610100900460ff16158080156103e15750600054600160ff909116105b806103fb5750303b1580156103fb575060005460ff166001145b61045e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039d565b6000805460ff191660011790558015610481576000805461ff0019166101001790555b606580546001600160a01b0319163317905561049d8484610abb565b6065546104b3906001600160a01b031683610891565b80156104f9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6001600160a01b03831661058c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166105ed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061065b84846104ff565b905060001981146104f957818110156106b65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b6104f9848484840361052a565b6001600160a01b0383166107275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161039d565b6001600160a01b0382166107895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260336020526040902054818110156108015760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161039d565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290610838908490610e3b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161088491815260200190565b60405180910390a36104f9565b6001600160a01b0382166108e75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161039d565b80603560008282546108f99190610e3b565b90915550506001600160a01b03821660009081526033602052604081208054839290610926908490610e3b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166109d05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161039d565b6001600160a01b03821660009081526033602052604090205481811015610a445760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161039d565b6001600160a01b0383166000908152603360205260408120838303905560358054849290610a73908490610e53565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610642565b505050565b600054610100900460ff16610ae25760405162461bcd60e51b815260040161039d90610df0565b6103168282600054610100900460ff16610b0e5760405162461bcd60e51b815260040161039d90610df0565b8151610b21906036906020850190610b31565b508051610ab69060379060208401905b828054610b3d90610e6a565b90600052602060002090601f016020900481019282610b5f5760008555610ba5565b82601f10610b7857805160ff1916838001178555610ba5565b82800160010185558215610ba5579182015b82811115610ba5578251825591602001919060010190610b8a565b50610bb1929150610bb5565b5090565b5b80821115610bb15760008155600101610bb6565b80356001600160a01b0381168114610be157600080fd5b919050565b600082601f830112610bf757600080fd5b813567ffffffffffffffff80821115610c1257610c12610ebb565b604051601f8301601f19908116603f01168101908282118183101715610c3a57610c3a610ebb565b81604052838152866020858801011115610c5357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215610c8557600080fd5b610c8e82610bca565b9392505050565b60008060408385031215610ca857600080fd5b610cb183610bca565b9150610cbf60208401610bca565b90509250929050565b600080600060608486031215610cdd57600080fd5b610ce684610bca565b9250610cf460208501610bca565b9150604084013590509250925092565b60008060408385031215610d1757600080fd5b610d2083610bca565b946020939093013593505050565b600080600060608486031215610d4357600080fd5b833567ffffffffffffffff80821115610d5b57600080fd5b610d6787838801610be6565b94506020860135915080821115610d7d57600080fd5b50610d8a86828701610be6565b925050604084013590509250925092565b600060208083528351808285015260005b81811015610dc857858101830151858201604001528201610dac565b81811115610dda576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115610e4e57610e4e610ea5565b500190565b600082821015610e6557610e65610ea5565b500390565b600181811c90821680610e7e57607f821691505b60208210811415610e9f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f9d92f304f4360d354738de64a65b7f7eea2d21ee78815b84eeccee5f889c1f064736f6c63430008060033",
350
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d7146101d0578063a9059cbb146101e3578063b119490e146101f6578063dd62ed3e1461020957600080fd5b806370a082311461018c57806395d89b41146101b55780639dc29fac146101bd57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce56714610155578063395093511461016457806340c10f191461017757600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761021c565b6040516101049190610d9b565b60405180910390f35b61012061011b366004610d04565b6102ae565b6040519015158152602001610104565b6035545b604051908152602001610104565b610120610150366004610cc8565b6102c6565b60405160128152602001610104565b610120610172366004610d04565b6102ea565b61018a610185366004610d04565b61030c565b005b61013461019a366004610c73565b6001600160a01b031660009081526033602052604090205490565b6100f761031a565b61018a6101cb366004610d04565b610329565b6101206101de366004610d04565b610333565b6101206101f1366004610d04565b6103b3565b61018a610204366004610d2e565b6103c1565b610134610217366004610c95565b6104ff565b60606036805461022b90610e6a565b80601f016020809104026020016040519081016040528092919081815260200182805461025790610e6a565b80156102a45780601f10610279576101008083540402835291602001916102a4565b820191906000526020600020905b81548152906001019060200180831161028757829003601f168201915b5050505050905090565b6000336102bc81858561052a565b5060019392505050565b6000336102d485828561064f565b6102df8585856106c3565b506001949350505050565b6000336102bc8185856102fd83836104ff565b6103079190610e3b565b61052a565b6103168282610891565b5050565b60606037805461022b90610e6a565b6103168282610970565b6000338161034182866104ff565b9050838110156103a65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102df828686840361052a565b6000336102bc8185856106c3565b600054610100900460ff16158080156103e15750600054600160ff909116105b806103fb5750303b1580156103fb575060005460ff166001145b61045e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039d565b6000805460ff191660011790558015610481576000805461ff0019166101001790555b606580546001600160a01b0319163317905561049d8484610abb565b6065546104b3906001600160a01b031683610891565b80156104f9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6001600160a01b03831661058c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b0382166105ed5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061065b84846104ff565b905060001981146104f957818110156106b65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161039d565b6104f9848484840361052a565b6001600160a01b0383166107275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161039d565b6001600160a01b0382166107895760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b6001600160a01b038316600090815260336020526040902054818110156108015760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161039d565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290610838908490610e3b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161088491815260200190565b60405180910390a36104f9565b6001600160a01b0382166108e75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161039d565b80603560008282546108f99190610e3b565b90915550506001600160a01b03821660009081526033602052604081208054839290610926908490610e3b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166109d05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161039d565b6001600160a01b03821660009081526033602052604090205481811015610a445760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161039d565b6001600160a01b0383166000908152603360205260408120838303905560358054849290610a73908490610e53565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610642565b505050565b600054610100900460ff16610ae25760405162461bcd60e51b815260040161039d90610df0565b6103168282600054610100900460ff16610b0e5760405162461bcd60e51b815260040161039d90610df0565b8151610b21906036906020850190610b31565b508051610ab69060379060208401905b828054610b3d90610e6a565b90600052602060002090601f016020900481019282610b5f5760008555610ba5565b82601f10610b7857805160ff1916838001178555610ba5565b82800160010185558215610ba5579182015b82811115610ba5578251825591602001919060010190610b8a565b50610bb1929150610bb5565b5090565b5b80821115610bb15760008155600101610bb6565b80356001600160a01b0381168114610be157600080fd5b919050565b600082601f830112610bf757600080fd5b813567ffffffffffffffff80821115610c1257610c12610ebb565b604051601f8301601f19908116603f01168101908282118183101715610c3a57610c3a610ebb565b81604052838152866020858801011115610c5357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215610c8557600080fd5b610c8e82610bca565b9392505050565b60008060408385031215610ca857600080fd5b610cb183610bca565b9150610cbf60208401610bca565b90509250929050565b600080600060608486031215610cdd57600080fd5b610ce684610bca565b9250610cf460208501610bca565b9150604084013590509250925092565b60008060408385031215610d1757600080fd5b610d2083610bca565b946020939093013593505050565b600080600060608486031215610d4357600080fd5b833567ffffffffffffffff80821115610d5b57600080fd5b610d6787838801610be6565b94506020860135915080821115610d7d57600080fd5b50610d8a86828701610be6565b925050604084013590509250925092565b600060208083528351808285015260005b81811015610dc857858101830151858201604001528201610dac565b81811115610dda576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008219821115610e4e57610e4e610ea5565b500190565b600082821015610e6557610e65610ea5565b500390565b600181811c90821680610e7e57607f821691505b60208210811415610e9f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f9d92f304f4360d354738de64a65b7f7eea2d21ee78815b84eeccee5f889c1f064736f6c63430008060033",
351
+ "linkReferences": {},
352
+ "deployedLinkReferences": {}
353
+ }