@ubk-labs/ubk-oracle 0.1.2

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 (25) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/artifacts/contracts/constants/Constants.sol/Constants.dbg.json +4 -0
  4. package/artifacts/contracts/constants/Constants.sol/Constants.json +141 -0
  5. package/artifacts/contracts/core/UBKOracle.sol/UBKOracle.dbg.json +4 -0
  6. package/artifacts/contracts/core/UBKOracle.sol/UBKOracle.json +1028 -0
  7. package/artifacts/contracts/mocks/MockAggregatorV3.sol/MockAggregatorV3.dbg.json +4 -0
  8. package/artifacts/contracts/mocks/MockAggregatorV3.sol/MockAggregatorV3.json +177 -0
  9. package/artifacts/contracts/mocks/MockERC20.sol/MockERC20.dbg.json +4 -0
  10. package/artifacts/contracts/mocks/MockERC20.sol/MockERC20.json +381 -0
  11. package/artifacts/contracts/mocks/MockERC4626.sol/Mock4626.dbg.json +4 -0
  12. package/artifacts/contracts/mocks/MockERC4626.sol/Mock4626.json +500 -0
  13. package/artifacts/contracts/mocks/MockIERC4626.sol/MockIERC4626.dbg.json +4 -0
  14. package/artifacts/contracts/mocks/MockIERC4626.sol/MockIERC4626.json +99 -0
  15. package/artifacts/interfaces/IUBKOracle.sol/IUBKOracle.dbg.json +4 -0
  16. package/artifacts/interfaces/IUBKOracle.sol/IUBKOracle.json +264 -0
  17. package/contracts/constants/Constants.sol +34 -0
  18. package/contracts/core/UBKOracle.sol +560 -0
  19. package/contracts/errors/Errors.sol +17 -0
  20. package/contracts/mocks/MockAggregatorV3.sol +56 -0
  21. package/contracts/mocks/MockERC20.sol +28 -0
  22. package/contracts/mocks/MockERC4626.sol +74 -0
  23. package/contracts/mocks/MockIERC4626.sol +13 -0
  24. package/interfaces/IUBKOracle.sol +54 -0
  25. package/package.json +41 -0
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
4
+ }
@@ -0,0 +1,177 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "MockAggregatorV3",
4
+ "sourceName": "contracts/mocks/MockAggregatorV3.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "int256",
10
+ "name": "_initialAnswer",
11
+ "type": "int256"
12
+ },
13
+ {
14
+ "internalType": "uint8",
15
+ "name": "_decimals",
16
+ "type": "uint8"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "decimals",
25
+ "outputs": [
26
+ {
27
+ "internalType": "uint8",
28
+ "name": "",
29
+ "type": "uint8"
30
+ }
31
+ ],
32
+ "stateMutability": "view",
33
+ "type": "function"
34
+ },
35
+ {
36
+ "inputs": [],
37
+ "name": "description",
38
+ "outputs": [
39
+ {
40
+ "internalType": "string",
41
+ "name": "",
42
+ "type": "string"
43
+ }
44
+ ],
45
+ "stateMutability": "pure",
46
+ "type": "function"
47
+ },
48
+ {
49
+ "inputs": [
50
+ {
51
+ "internalType": "uint80",
52
+ "name": "",
53
+ "type": "uint80"
54
+ }
55
+ ],
56
+ "name": "getRoundData",
57
+ "outputs": [
58
+ {
59
+ "internalType": "uint80",
60
+ "name": "",
61
+ "type": "uint80"
62
+ },
63
+ {
64
+ "internalType": "int256",
65
+ "name": "",
66
+ "type": "int256"
67
+ },
68
+ {
69
+ "internalType": "uint256",
70
+ "name": "",
71
+ "type": "uint256"
72
+ },
73
+ {
74
+ "internalType": "uint256",
75
+ "name": "",
76
+ "type": "uint256"
77
+ },
78
+ {
79
+ "internalType": "uint80",
80
+ "name": "",
81
+ "type": "uint80"
82
+ }
83
+ ],
84
+ "stateMutability": "view",
85
+ "type": "function"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "getUpdatedAt",
90
+ "outputs": [
91
+ {
92
+ "internalType": "uint256",
93
+ "name": "",
94
+ "type": "uint256"
95
+ }
96
+ ],
97
+ "stateMutability": "view",
98
+ "type": "function"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "latestRoundData",
103
+ "outputs": [
104
+ {
105
+ "internalType": "uint80",
106
+ "name": "roundId",
107
+ "type": "uint80"
108
+ },
109
+ {
110
+ "internalType": "int256",
111
+ "name": "answer_",
112
+ "type": "int256"
113
+ },
114
+ {
115
+ "internalType": "uint256",
116
+ "name": "startedAt",
117
+ "type": "uint256"
118
+ },
119
+ {
120
+ "internalType": "uint256",
121
+ "name": "updatedAt",
122
+ "type": "uint256"
123
+ },
124
+ {
125
+ "internalType": "uint80",
126
+ "name": "answeredInRound",
127
+ "type": "uint80"
128
+ }
129
+ ],
130
+ "stateMutability": "view",
131
+ "type": "function"
132
+ },
133
+ {
134
+ "inputs": [
135
+ {
136
+ "internalType": "uint256",
137
+ "name": "_timestamp",
138
+ "type": "uint256"
139
+ }
140
+ ],
141
+ "name": "setUpdatedAt",
142
+ "outputs": [],
143
+ "stateMutability": "nonpayable",
144
+ "type": "function"
145
+ },
146
+ {
147
+ "inputs": [
148
+ {
149
+ "internalType": "int256",
150
+ "name": "_newAnswer",
151
+ "type": "int256"
152
+ }
153
+ ],
154
+ "name": "updateAnswer",
155
+ "outputs": [],
156
+ "stateMutability": "nonpayable",
157
+ "type": "function"
158
+ },
159
+ {
160
+ "inputs": [],
161
+ "name": "version",
162
+ "outputs": [
163
+ {
164
+ "internalType": "uint256",
165
+ "name": "",
166
+ "type": "uint256"
167
+ }
168
+ ],
169
+ "stateMutability": "pure",
170
+ "type": "function"
171
+ }
172
+ ],
173
+ "bytecode": "0x608060405234801561001057600080fd5b506040516102f63803806102f683398101604081905261002f91610051565b6000919091556001805460ff191660ff90921691909117905542600255610087565b6000806040838503121561006457600080fd5b82519150602083015160ff8116811461007c57600080fd5b809150509250929050565b610260806100966000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639a6fc8f51161005b5780639a6fc8f51461010c578063a87a20ce14610163578063e83558531461017a578063feaf968c1461018257600080fd5b80631ecc7d881461008d578063313ce567146100a257806354fd4d50146100bc5780637284e416146100cd575b600080fd5b6100a061009b366004610190565b600255565b005b60015460405160ff90911681526020015b60405180910390f35b60015b6040519081526020016100b3565b604080518082018252601981527f4d6f636b20436861696e6c696e6b2041676772656761746f7200000000000000602082015290516100b391906101a9565b61012c61011a3660046101f7565b60008054600254808391939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100b3565b6100a0610171366004610190565b60005542600255565b6002546100bf565b60008054600254808361012c565b6000602082840312156101a257600080fd5b5035919050565b600060208083528351808285015260005b818110156101d6578581018301518582016040015282016101ba565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561020957600080fd5b813569ffffffffffffffffffff8116811461022357600080fd5b939250505056fea2646970667358221220115a264a22ff12ab3ddf24acb3c7d788668b62629db8fd8fd9ab36ca68d39bb364736f6c63430008150033",
174
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639a6fc8f51161005b5780639a6fc8f51461010c578063a87a20ce14610163578063e83558531461017a578063feaf968c1461018257600080fd5b80631ecc7d881461008d578063313ce567146100a257806354fd4d50146100bc5780637284e416146100cd575b600080fd5b6100a061009b366004610190565b600255565b005b60015460405160ff90911681526020015b60405180910390f35b60015b6040519081526020016100b3565b604080518082018252601981527f4d6f636b20436861696e6c696e6b2041676772656761746f7200000000000000602082015290516100b391906101a9565b61012c61011a3660046101f7565b60008054600254808391939590929450565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100b3565b6100a0610171366004610190565b60005542600255565b6002546100bf565b60008054600254808361012c565b6000602082840312156101a257600080fd5b5035919050565b600060208083528351808285015260005b818110156101d6578581018301518582016040015282016101ba565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561020957600080fd5b813569ffffffffffffffffffff8116811461022357600080fd5b939250505056fea2646970667358221220115a264a22ff12ab3ddf24acb3c7d788668b62629db8fd8fd9ab36ca68d39bb364736f6c63430008150033",
175
+ "linkReferences": {},
176
+ "deployedLinkReferences": {}
177
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
4
+ }
@@ -0,0 +1,381 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "MockERC20",
4
+ "sourceName": "contracts/mocks/MockERC20.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "name_",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "symbol_",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "uint8",
20
+ "name": "decimals_",
21
+ "type": "uint8"
22
+ },
23
+ {
24
+ "internalType": "uint256",
25
+ "name": "initialSupply",
26
+ "type": "uint256"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "inputs": [
34
+ {
35
+ "internalType": "address",
36
+ "name": "spender",
37
+ "type": "address"
38
+ },
39
+ {
40
+ "internalType": "uint256",
41
+ "name": "allowance",
42
+ "type": "uint256"
43
+ },
44
+ {
45
+ "internalType": "uint256",
46
+ "name": "needed",
47
+ "type": "uint256"
48
+ }
49
+ ],
50
+ "name": "ERC20InsufficientAllowance",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [
55
+ {
56
+ "internalType": "address",
57
+ "name": "sender",
58
+ "type": "address"
59
+ },
60
+ {
61
+ "internalType": "uint256",
62
+ "name": "balance",
63
+ "type": "uint256"
64
+ },
65
+ {
66
+ "internalType": "uint256",
67
+ "name": "needed",
68
+ "type": "uint256"
69
+ }
70
+ ],
71
+ "name": "ERC20InsufficientBalance",
72
+ "type": "error"
73
+ },
74
+ {
75
+ "inputs": [
76
+ {
77
+ "internalType": "address",
78
+ "name": "approver",
79
+ "type": "address"
80
+ }
81
+ ],
82
+ "name": "ERC20InvalidApprover",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [
87
+ {
88
+ "internalType": "address",
89
+ "name": "receiver",
90
+ "type": "address"
91
+ }
92
+ ],
93
+ "name": "ERC20InvalidReceiver",
94
+ "type": "error"
95
+ },
96
+ {
97
+ "inputs": [
98
+ {
99
+ "internalType": "address",
100
+ "name": "sender",
101
+ "type": "address"
102
+ }
103
+ ],
104
+ "name": "ERC20InvalidSender",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [
109
+ {
110
+ "internalType": "address",
111
+ "name": "spender",
112
+ "type": "address"
113
+ }
114
+ ],
115
+ "name": "ERC20InvalidSpender",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "anonymous": false,
120
+ "inputs": [
121
+ {
122
+ "indexed": true,
123
+ "internalType": "address",
124
+ "name": "owner",
125
+ "type": "address"
126
+ },
127
+ {
128
+ "indexed": true,
129
+ "internalType": "address",
130
+ "name": "spender",
131
+ "type": "address"
132
+ },
133
+ {
134
+ "indexed": false,
135
+ "internalType": "uint256",
136
+ "name": "value",
137
+ "type": "uint256"
138
+ }
139
+ ],
140
+ "name": "Approval",
141
+ "type": "event"
142
+ },
143
+ {
144
+ "anonymous": false,
145
+ "inputs": [
146
+ {
147
+ "indexed": true,
148
+ "internalType": "address",
149
+ "name": "from",
150
+ "type": "address"
151
+ },
152
+ {
153
+ "indexed": true,
154
+ "internalType": "address",
155
+ "name": "to",
156
+ "type": "address"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "uint256",
161
+ "name": "value",
162
+ "type": "uint256"
163
+ }
164
+ ],
165
+ "name": "Transfer",
166
+ "type": "event"
167
+ },
168
+ {
169
+ "inputs": [
170
+ {
171
+ "internalType": "address",
172
+ "name": "owner",
173
+ "type": "address"
174
+ },
175
+ {
176
+ "internalType": "address",
177
+ "name": "spender",
178
+ "type": "address"
179
+ }
180
+ ],
181
+ "name": "allowance",
182
+ "outputs": [
183
+ {
184
+ "internalType": "uint256",
185
+ "name": "",
186
+ "type": "uint256"
187
+ }
188
+ ],
189
+ "stateMutability": "view",
190
+ "type": "function"
191
+ },
192
+ {
193
+ "inputs": [
194
+ {
195
+ "internalType": "address",
196
+ "name": "spender",
197
+ "type": "address"
198
+ },
199
+ {
200
+ "internalType": "uint256",
201
+ "name": "value",
202
+ "type": "uint256"
203
+ }
204
+ ],
205
+ "name": "approve",
206
+ "outputs": [
207
+ {
208
+ "internalType": "bool",
209
+ "name": "",
210
+ "type": "bool"
211
+ }
212
+ ],
213
+ "stateMutability": "nonpayable",
214
+ "type": "function"
215
+ },
216
+ {
217
+ "inputs": [
218
+ {
219
+ "internalType": "address",
220
+ "name": "account",
221
+ "type": "address"
222
+ }
223
+ ],
224
+ "name": "balanceOf",
225
+ "outputs": [
226
+ {
227
+ "internalType": "uint256",
228
+ "name": "",
229
+ "type": "uint256"
230
+ }
231
+ ],
232
+ "stateMutability": "view",
233
+ "type": "function"
234
+ },
235
+ {
236
+ "inputs": [
237
+ {
238
+ "internalType": "address",
239
+ "name": "from",
240
+ "type": "address"
241
+ },
242
+ {
243
+ "internalType": "uint256",
244
+ "name": "amount",
245
+ "type": "uint256"
246
+ }
247
+ ],
248
+ "name": "burn",
249
+ "outputs": [],
250
+ "stateMutability": "nonpayable",
251
+ "type": "function"
252
+ },
253
+ {
254
+ "inputs": [],
255
+ "name": "decimals",
256
+ "outputs": [
257
+ {
258
+ "internalType": "uint8",
259
+ "name": "",
260
+ "type": "uint8"
261
+ }
262
+ ],
263
+ "stateMutability": "view",
264
+ "type": "function"
265
+ },
266
+ {
267
+ "inputs": [
268
+ {
269
+ "internalType": "address",
270
+ "name": "to",
271
+ "type": "address"
272
+ },
273
+ {
274
+ "internalType": "uint256",
275
+ "name": "amount",
276
+ "type": "uint256"
277
+ }
278
+ ],
279
+ "name": "mint",
280
+ "outputs": [],
281
+ "stateMutability": "nonpayable",
282
+ "type": "function"
283
+ },
284
+ {
285
+ "inputs": [],
286
+ "name": "name",
287
+ "outputs": [
288
+ {
289
+ "internalType": "string",
290
+ "name": "",
291
+ "type": "string"
292
+ }
293
+ ],
294
+ "stateMutability": "view",
295
+ "type": "function"
296
+ },
297
+ {
298
+ "inputs": [],
299
+ "name": "symbol",
300
+ "outputs": [
301
+ {
302
+ "internalType": "string",
303
+ "name": "",
304
+ "type": "string"
305
+ }
306
+ ],
307
+ "stateMutability": "view",
308
+ "type": "function"
309
+ },
310
+ {
311
+ "inputs": [],
312
+ "name": "totalSupply",
313
+ "outputs": [
314
+ {
315
+ "internalType": "uint256",
316
+ "name": "",
317
+ "type": "uint256"
318
+ }
319
+ ],
320
+ "stateMutability": "view",
321
+ "type": "function"
322
+ },
323
+ {
324
+ "inputs": [
325
+ {
326
+ "internalType": "address",
327
+ "name": "to",
328
+ "type": "address"
329
+ },
330
+ {
331
+ "internalType": "uint256",
332
+ "name": "value",
333
+ "type": "uint256"
334
+ }
335
+ ],
336
+ "name": "transfer",
337
+ "outputs": [
338
+ {
339
+ "internalType": "bool",
340
+ "name": "",
341
+ "type": "bool"
342
+ }
343
+ ],
344
+ "stateMutability": "nonpayable",
345
+ "type": "function"
346
+ },
347
+ {
348
+ "inputs": [
349
+ {
350
+ "internalType": "address",
351
+ "name": "from",
352
+ "type": "address"
353
+ },
354
+ {
355
+ "internalType": "address",
356
+ "name": "to",
357
+ "type": "address"
358
+ },
359
+ {
360
+ "internalType": "uint256",
361
+ "name": "value",
362
+ "type": "uint256"
363
+ }
364
+ ],
365
+ "name": "transferFrom",
366
+ "outputs": [
367
+ {
368
+ "internalType": "bool",
369
+ "name": "",
370
+ "type": "bool"
371
+ }
372
+ ],
373
+ "stateMutability": "nonpayable",
374
+ "type": "function"
375
+ }
376
+ ],
377
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162000cdc38038062000cdc8339810160408190526200003491620002ad565b83836003620000448382620003c7565b506004620000538282620003c7565b50505060ff821660805262000069338262000073565b50505050620004bb565b6001600160a01b038216620000a35760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000b160008383620000b5565b5050565b6001600160a01b038316620000e4578060026000828254620000d8919062000493565b90915550620001589050565b6001600160a01b03831660009081526020819052604090205481811015620001395760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200009a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001765760028054829003905562000195565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620001db91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200021057600080fd5b81516001600160401b03808211156200022d576200022d620001e8565b604051601f8301601f19908116603f01168101908282118183101715620002585762000258620001e8565b816040528381526020925086838588010111156200027557600080fd5b600091505b838210156200029957858201830151818301840152908201906200027a565b600093810190920192909252949350505050565b60008060008060808587031215620002c457600080fd5b84516001600160401b0380821115620002dc57600080fd5b620002ea88838901620001fe565b955060208701519150808211156200030157600080fd5b506200031087828801620001fe565b935050604085015160ff811681146200032857600080fd5b6060959095015193969295505050565b600181811c908216806200034d57607f821691505b6020821081036200036e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003c257600081815260208120601f850160051c810160208610156200039d5750805b601f850160051c820191505b81811015620003be57828155600101620003a9565b5050505b505050565b81516001600160401b03811115620003e357620003e3620001e8565b620003fb81620003f4845462000338565b8462000374565b602080601f8311600181146200043357600084156200041a5750858301515b600019600386901b1c1916600185901b178555620003be565b600085815260208120601f198616915b82811015620004645788860151825594840194600190910190840162000443565b5085821015620004835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620004b557634e487b7160e01b600052601160045260246000fd5b92915050565b608051610805620004d7600039600061011b01526108056000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806340c10f191161007157806340c10f191461014557806370a082311461015a57806395d89b41146101835780639dc29fac1461018b578063a9059cbb1461019e578063dd62ed3e146101b157600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101ea565b6040516100c3919061064f565b60405180910390f35b6100df6100da3660046106b9565b61027c565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f3660046106e3565b610296565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100c3565b6101586101533660046106b9565b6102ba565b005b6100f361016836600461071f565b6001600160a01b031660009081526020819052604090205490565b6100b66102c8565b6101586101993660046106b9565b6102d7565b6100df6101ac3660046106b9565b6102e1565b6100f36101bf366004610741565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f990610774565b80601f016020809104026020016040519081016040528092919081815260200182805461022590610774565b80156102725780601f1061024757610100808354040283529160200191610272565b820191906000526020600020905b81548152906001019060200180831161025557829003601f168201915b5050505050905090565b60003361028a8185856102ef565b60019150505b92915050565b6000336102a4858285610301565b6102af858585610385565b506001949350505050565b6102c482826103e4565b5050565b6060600480546101f990610774565b6102c4828261041a565b60003361028a818585610385565b6102fc8383836001610450565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981101561037f578181101561037057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61037f84848484036000610450565b50505050565b6001600160a01b0383166103af57604051634b637e8f60e11b815260006004820152602401610367565b6001600160a01b0382166103d95760405163ec442f0560e01b815260006004820152602401610367565b6102fc838383610525565b6001600160a01b03821661040e5760405163ec442f0560e01b815260006004820152602401610367565b6102c460008383610525565b6001600160a01b03821661044457604051634b637e8f60e11b815260006004820152602401610367565b6102c482600083610525565b6001600160a01b03841661047a5760405163e602df0560e01b815260006004820152602401610367565b6001600160a01b0383166104a457604051634a1406b160e11b815260006004820152602401610367565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561037f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161051791815260200190565b60405180910390a350505050565b6001600160a01b03831661055057806002600082825461054591906107ae565b909155506105c29050565b6001600160a01b038316600090815260208190526040902054818110156105a35760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610367565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166105de576002805482900390556105fd565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161064291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561067c57858101830151858201604001528201610660565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146106b457600080fd5b919050565b600080604083850312156106cc57600080fd5b6106d58361069d565b946020939093013593505050565b6000806000606084860312156106f857600080fd5b6107018461069d565b925061070f6020850161069d565b9150604084013590509250925092565b60006020828403121561073157600080fd5b61073a8261069d565b9392505050565b6000806040838503121561075457600080fd5b61075d8361069d565b915061076b6020840161069d565b90509250929050565b600181811c9082168061078857607f821691505b6020821081036107a857634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561029057634e487b7160e01b600052601160045260246000fdfea2646970667358221220796b991bd4e7d38e33a58be564147d02635b17b7c46639d0d1dac834e428131c64736f6c63430008150033",
378
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806340c10f191161007157806340c10f191461014557806370a082311461015a57806395d89b41146101835780639dc29fac1461018b578063a9059cbb1461019e578063dd62ed3e146101b157600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101ea565b6040516100c3919061064f565b60405180910390f35b6100df6100da3660046106b9565b61027c565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f3660046106e3565b610296565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100c3565b6101586101533660046106b9565b6102ba565b005b6100f361016836600461071f565b6001600160a01b031660009081526020819052604090205490565b6100b66102c8565b6101586101993660046106b9565b6102d7565b6100df6101ac3660046106b9565b6102e1565b6100f36101bf366004610741565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f990610774565b80601f016020809104026020016040519081016040528092919081815260200182805461022590610774565b80156102725780601f1061024757610100808354040283529160200191610272565b820191906000526020600020905b81548152906001019060200180831161025557829003601f168201915b5050505050905090565b60003361028a8185856102ef565b60019150505b92915050565b6000336102a4858285610301565b6102af858585610385565b506001949350505050565b6102c482826103e4565b5050565b6060600480546101f990610774565b6102c4828261041a565b60003361028a818585610385565b6102fc8383836001610450565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981101561037f578181101561037057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61037f84848484036000610450565b50505050565b6001600160a01b0383166103af57604051634b637e8f60e11b815260006004820152602401610367565b6001600160a01b0382166103d95760405163ec442f0560e01b815260006004820152602401610367565b6102fc838383610525565b6001600160a01b03821661040e5760405163ec442f0560e01b815260006004820152602401610367565b6102c460008383610525565b6001600160a01b03821661044457604051634b637e8f60e11b815260006004820152602401610367565b6102c482600083610525565b6001600160a01b03841661047a5760405163e602df0560e01b815260006004820152602401610367565b6001600160a01b0383166104a457604051634a1406b160e11b815260006004820152602401610367565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561037f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161051791815260200190565b60405180910390a350505050565b6001600160a01b03831661055057806002600082825461054591906107ae565b909155506105c29050565b6001600160a01b038316600090815260208190526040902054818110156105a35760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610367565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166105de576002805482900390556105fd565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161064291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561067c57858101830151858201604001528201610660565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146106b457600080fd5b919050565b600080604083850312156106cc57600080fd5b6106d58361069d565b946020939093013593505050565b6000806000606084860312156106f857600080fd5b6107018461069d565b925061070f6020850161069d565b9150604084013590509250925092565b60006020828403121561073157600080fd5b61073a8261069d565b9392505050565b6000806040838503121561075457600080fd5b61075d8361069d565b915061076b6020840161069d565b90509250929050565b600181811c9082168061078857607f821691505b6020821081036107a857634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561029057634e487b7160e01b600052601160045260246000fdfea2646970667358221220796b991bd4e7d38e33a58be564147d02635b17b7c46639d0d1dac834e428131c64736f6c63430008150033",
379
+ "linkReferences": {},
380
+ "deployedLinkReferences": {}
381
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/59a7a86e788a7471c2e99b922236c2bf.json"
4
+ }