UNPKG

47.4 kBJSONView Raw
1{
2 "_format": "hh-sol-artifact-1",
3 "contractName": "LoyaltyContract",
4 "sourceName": "contracts/LoyaltyContract.sol",
5 "abi": [
6 {
7 "inputs": [],
8 "stateMutability": "nonpayable",
9 "type": "constructor"
10 },
11 {
12 "anonymous": false,
13 "inputs": [
14 {
15 "indexed": true,
16 "internalType": "address",
17 "name": "recipient",
18 "type": "address"
19 },
20 {
21 "indexed": true,
22 "internalType": "int256",
23 "name": "amount",
24 "type": "int256"
25 },
26 {
27 "indexed": true,
28 "internalType": "uint256",
29 "name": "eventId",
30 "type": "uint256"
31 }
32 ],
33 "name": "AddPoints",
34 "type": "event"
35 },
36 {
37 "anonymous": false,
38 "inputs": [
39 {
40 "indexed": true,
41 "internalType": "address",
42 "name": "recipient",
43 "type": "address"
44 },
45 {
46 "indexed": true,
47 "internalType": "int256",
48 "name": "amount",
49 "type": "int256"
50 },
51 {
52 "indexed": true,
53 "internalType": "uint256",
54 "name": "eventId",
55 "type": "uint256"
56 }
57 ],
58 "name": "RedeemPoints",
59 "type": "event"
60 },
61 {
62 "inputs": [
63 {
64 "internalType": "address",
65 "name": "partnerAddress",
66 "type": "address"
67 }
68 ],
69 "name": "addAuthorizedPartner",
70 "outputs": [],
71 "stateMutability": "nonpayable",
72 "type": "function"
73 },
74 {
75 "inputs": [
76 {
77 "components": [
78 {
79 "internalType": "address",
80 "name": "recipient",
81 "type": "address"
82 },
83 {
84 "internalType": "int256",
85 "name": "amount",
86 "type": "int256"
87 },
88 {
89 "internalType": "uint256",
90 "name": "eventId",
91 "type": "uint256"
92 }
93 ],
94 "internalType": "struct LedgerContract.AddPointsBatchItem[]",
95 "name": "items",
96 "type": "tuple[]"
97 }
98 ],
99 "name": "addBatchPoints",
100 "outputs": [],
101 "stateMutability": "nonpayable",
102 "type": "function"
103 },
104 {
105 "inputs": [
106 {
107 "internalType": "address",
108 "name": "newOwner",
109 "type": "address"
110 }
111 ],
112 "name": "addOwner",
113 "outputs": [],
114 "stateMutability": "nonpayable",
115 "type": "function"
116 },
117 {
118 "inputs": [
119 {
120 "internalType": "address",
121 "name": "recipient",
122 "type": "address"
123 },
124 {
125 "internalType": "int256",
126 "name": "amount",
127 "type": "int256"
128 },
129 {
130 "internalType": "uint256",
131 "name": "eventId",
132 "type": "uint256"
133 }
134 ],
135 "name": "addPoints",
136 "outputs": [],
137 "stateMutability": "nonpayable",
138 "type": "function"
139 },
140 {
141 "inputs": [
142 {
143 "internalType": "address",
144 "name": "recipient",
145 "type": "address"
146 }
147 ],
148 "name": "checkLifetimePoints",
149 "outputs": [
150 {
151 "internalType": "int256",
152 "name": "",
153 "type": "int256"
154 }
155 ],
156 "stateMutability": "view",
157 "type": "function"
158 },
159 {
160 "inputs": [
161 {
162 "internalType": "address",
163 "name": "recipient",
164 "type": "address"
165 }
166 ],
167 "name": "checkPoints",
168 "outputs": [
169 {
170 "internalType": "int256",
171 "name": "",
172 "type": "int256"
173 }
174 ],
175 "stateMutability": "view",
176 "type": "function"
177 },
178 {
179 "inputs": [],
180 "name": "coinContract",
181 "outputs": [
182 {
183 "internalType": "address",
184 "name": "",
185 "type": "address"
186 }
187 ],
188 "stateMutability": "view",
189 "type": "function"
190 },
191 {
192 "inputs": [
193 {
194 "internalType": "address",
195 "name": "recipient",
196 "type": "address"
197 },
198 {
199 "internalType": "int256",
200 "name": "amount",
201 "type": "int256"
202 }
203 ],
204 "name": "convertPointsToCoins",
205 "outputs": [],
206 "stateMutability": "nonpayable",
207 "type": "function"
208 },
209 {
210 "inputs": [
211 {
212 "internalType": "address",
213 "name": "recipient",
214 "type": "address"
215 },
216 {
217 "internalType": "int256",
218 "name": "amount",
219 "type": "int256"
220 }
221 ],
222 "name": "forfeitPoints",
223 "outputs": [],
224 "stateMutability": "nonpayable",
225 "type": "function"
226 },
227 {
228 "inputs": [],
229 "name": "getCoinTransferSourceAddress",
230 "outputs": [
231 {
232 "internalType": "address",
233 "name": "",
234 "type": "address"
235 }
236 ],
237 "stateMutability": "view",
238 "type": "function"
239 },
240 {
241 "inputs": [],
242 "name": "getDescription",
243 "outputs": [
244 {
245 "internalType": "string",
246 "name": "",
247 "type": "string"
248 }
249 ],
250 "stateMutability": "view",
251 "type": "function"
252 },
253 {
254 "inputs": [
255 {
256 "internalType": "uint256",
257 "name": "groupId",
258 "type": "uint256"
259 }
260 ],
261 "name": "getGroupManager",
262 "outputs": [
263 {
264 "internalType": "address",
265 "name": "",
266 "type": "address"
267 }
268 ],
269 "stateMutability": "view",
270 "type": "function"
271 },
272 {
273 "inputs": [],
274 "name": "getOwners",
275 "outputs": [
276 {
277 "internalType": "address[]",
278 "name": "",
279 "type": "address[]"
280 }
281 ],
282 "stateMutability": "view",
283 "type": "function"
284 },
285 {
286 "inputs": [],
287 "name": "getPartners",
288 "outputs": [
289 {
290 "internalType": "address[]",
291 "name": "",
292 "type": "address[]"
293 }
294 ],
295 "stateMutability": "view",
296 "type": "function"
297 },
298 {
299 "inputs": [],
300 "name": "getTrustedForwarder",
301 "outputs": [
302 {
303 "internalType": "address",
304 "name": "forwarder",
305 "type": "address"
306 }
307 ],
308 "stateMutability": "view",
309 "type": "function"
310 },
311 {
312 "inputs": [
313 {
314 "internalType": "address",
315 "name": "userAddr",
316 "type": "address"
317 }
318 ],
319 "name": "getUserGroup",
320 "outputs": [
321 {
322 "internalType": "uint256",
323 "name": "",
324 "type": "uint256"
325 }
326 ],
327 "stateMutability": "view",
328 "type": "function"
329 },
330 {
331 "inputs": [],
332 "name": "getVersion",
333 "outputs": [
334 {
335 "internalType": "string",
336 "name": "version",
337 "type": "string"
338 }
339 ],
340 "stateMutability": "pure",
341 "type": "function"
342 },
343 {
344 "inputs": [
345 {
346 "internalType": "address",
347 "name": "partnerAddress",
348 "type": "address"
349 }
350 ],
351 "name": "isAuthorizedPartner",
352 "outputs": [
353 {
354 "internalType": "bool",
355 "name": "",
356 "type": "bool"
357 }
358 ],
359 "stateMutability": "view",
360 "type": "function"
361 },
362 {
363 "inputs": [
364 {
365 "internalType": "address",
366 "name": "userAddress",
367 "type": "address"
368 },
369 {
370 "internalType": "address",
371 "name": "partnerAddress",
372 "type": "address"
373 }
374 ],
375 "name": "isBlocked",
376 "outputs": [
377 {
378 "internalType": "bool",
379 "name": "",
380 "type": "bool"
381 }
382 ],
383 "stateMutability": "view",
384 "type": "function"
385 },
386 {
387 "inputs": [
388 {
389 "internalType": "address",
390 "name": "userAddress",
391 "type": "address"
392 }
393 ],
394 "name": "isOptOut",
395 "outputs": [
396 {
397 "internalType": "bool",
398 "name": "",
399 "type": "bool"
400 }
401 ],
402 "stateMutability": "view",
403 "type": "function"
404 },
405 {
406 "inputs": [
407 {
408 "internalType": "address",
409 "name": "addr",
410 "type": "address"
411 }
412 ],
413 "name": "isOwner",
414 "outputs": [
415 {
416 "internalType": "bool",
417 "name": "",
418 "type": "bool"
419 }
420 ],
421 "stateMutability": "view",
422 "type": "function"
423 },
424 {
425 "inputs": [
426 {
427 "internalType": "address",
428 "name": "recipient",
429 "type": "address"
430 }
431 ],
432 "name": "isPartner",
433 "outputs": [
434 {
435 "internalType": "bool",
436 "name": "",
437 "type": "bool"
438 }
439 ],
440 "stateMutability": "view",
441 "type": "function"
442 },
443 {
444 "inputs": [
445 {
446 "internalType": "address",
447 "name": "recipient",
448 "type": "address"
449 }
450 ],
451 "name": "isPartnerOrOwner",
452 "outputs": [
453 {
454 "internalType": "bool",
455 "name": "",
456 "type": "bool"
457 }
458 ],
459 "stateMutability": "view",
460 "type": "function"
461 },
462 {
463 "inputs": [
464 {
465 "internalType": "address",
466 "name": "forwarder",
467 "type": "address"
468 }
469 ],
470 "name": "isTrustedForwarder",
471 "outputs": [
472 {
473 "internalType": "bool",
474 "name": "",
475 "type": "bool"
476 }
477 ],
478 "stateMutability": "view",
479 "type": "function"
480 },
481 {
482 "inputs": [
483 {
484 "internalType": "address",
485 "name": "userAddress",
486 "type": "address"
487 }
488 ],
489 "name": "optOut",
490 "outputs": [],
491 "stateMutability": "nonpayable",
492 "type": "function"
493 },
494 {
495 "inputs": [
496 {
497 "internalType": "address",
498 "name": "recipient",
499 "type": "address"
500 },
501 {
502 "internalType": "int256",
503 "name": "amount",
504 "type": "int256"
505 },
506 {
507 "internalType": "uint256",
508 "name": "eventId",
509 "type": "uint256"
510 }
511 ],
512 "name": "redeemPoints",
513 "outputs": [],
514 "stateMutability": "nonpayable",
515 "type": "function"
516 },
517 {
518 "inputs": [
519 {
520 "internalType": "address",
521 "name": "partnerAddress",
522 "type": "address"
523 }
524 ],
525 "name": "removeAuthorizedPartner",
526 "outputs": [],
527 "stateMutability": "nonpayable",
528 "type": "function"
529 },
530 {
531 "inputs": [
532 {
533 "internalType": "address",
534 "name": "userAddress",
535 "type": "address"
536 }
537 ],
538 "name": "removeOptOut",
539 "outputs": [],
540 "stateMutability": "nonpayable",
541 "type": "function"
542 },
543 {
544 "inputs": [
545 {
546 "internalType": "address",
547 "name": "owner",
548 "type": "address"
549 }
550 ],
551 "name": "removeOwner",
552 "outputs": [],
553 "stateMutability": "nonpayable",
554 "type": "function"
555 },
556 {
557 "inputs": [
558 {
559 "internalType": "address",
560 "name": "recipient",
561 "type": "address"
562 }
563 ],
564 "name": "retrieveLogs",
565 "outputs": [
566 {
567 "components": [
568 {
569 "internalType": "uint256",
570 "name": "timestamp",
571 "type": "uint256"
572 },
573 {
574 "internalType": "uint256",
575 "name": "eventId",
576 "type": "uint256"
577 },
578 {
579 "internalType": "int256",
580 "name": "pointsAmount",
581 "type": "int256"
582 }
583 ],
584 "internalType": "struct LedgerContract.PointsLogItem[]",
585 "name": "",
586 "type": "tuple[]"
587 }
588 ],
589 "stateMutability": "view",
590 "type": "function"
591 },
592 {
593 "inputs": [
594 {
595 "internalType": "address",
596 "name": "partnerAddress",
597 "type": "address"
598 },
599 {
600 "internalType": "bool",
601 "name": "isBlocked",
602 "type": "bool"
603 }
604 ],
605 "name": "setBlock",
606 "outputs": [],
607 "stateMutability": "nonpayable",
608 "type": "function"
609 },
610 {
611 "inputs": [
612 {
613 "internalType": "address",
614 "name": "coinContractAddress",
615 "type": "address"
616 }
617 ],
618 "name": "setCoinContractAddress",
619 "outputs": [],
620 "stateMutability": "nonpayable",
621 "type": "function"
622 },
623 {
624 "inputs": [
625 {
626 "internalType": "address",
627 "name": "newAddr",
628 "type": "address"
629 }
630 ],
631 "name": "setCoinTransferSourceAddress",
632 "outputs": [],
633 "stateMutability": "nonpayable",
634 "type": "function"
635 },
636 {
637 "inputs": [
638 {
639 "internalType": "string",
640 "name": "description",
641 "type": "string"
642 }
643 ],
644 "name": "setDescription",
645 "outputs": [],
646 "stateMutability": "nonpayable",
647 "type": "function"
648 },
649 {
650 "inputs": [
651 {
652 "internalType": "uint256",
653 "name": "groupId",
654 "type": "uint256"
655 },
656 {
657 "internalType": "address",
658 "name": "manager",
659 "type": "address"
660 }
661 ],
662 "name": "setGroupManager",
663 "outputs": [],
664 "stateMutability": "nonpayable",
665 "type": "function"
666 },
667 {
668 "inputs": [
669 {
670 "internalType": "address",
671 "name": "_forwarder",
672 "type": "address"
673 }
674 ],
675 "name": "setTrustedForwarder",
676 "outputs": [],
677 "stateMutability": "nonpayable",
678 "type": "function"
679 },
680 {
681 "inputs": [
682 {
683 "internalType": "address",
684 "name": "userAddr",
685 "type": "address"
686 },
687 {
688 "internalType": "uint256",
689 "name": "groupId",
690 "type": "uint256"
691 }
692 ],
693 "name": "setUserGroup",
694 "outputs": [],
695 "stateMutability": "nonpayable",
696 "type": "function"
697 }
698 ],
699 "bytecode": "0x60806040523480156200001157600080fd5b50620000266200002062000056565b6200008c565b6200003062000056565b600580546001600160a01b0319166001600160a01b039290921691909117905562000193565b6000601436108015906200007457506003546001600160a01b031633145b1562000087575060131936013560601c90565b503390565b60015415801590620000ae57503360009081526020819052604090205460ff16155b156200010b5760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b03811660009081526020819052604090205460ff1615620001305750565b6001600160a01b03166000818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b611f0180620001a36000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806386c58d3e11610130578063ce1b815f116100b8578063e1e610e11161007c578063e1e610e114610515578063e9858e3014610528578063ea0f40fe14610554578063ee28f50114610567578063f617d91d1461058757600080fd5b8063ce1b815f146104a2578063d4610483146104b3578063d4f1205c146104c6578063da742228146104d9578063dc79b176146104ec57600080fd5b8063954a85b4116100ff578063954a85b414610438578063a0e67e2b14610461578063a99752c414610469578063ad102b841461047c578063c75305bc1461048f57600080fd5b806386c58d3e1461040a5780638c0f9aac1461036557806390c3f38f1461041d57806391825dca1461043057600080fd5b806350ee7b69116101b3578063668ff42711610182578063668ff427146103915780637065cb48146103a4578063717fbc96146103b757806372dd52e3146103ca57806373e29b0d146103f557600080fd5b806350ee7b691461031d578063572b6c05146103305780635d0fd6c1146103525780635e9b45e11461036557600080fd5b806327a920dc116101fa57806327a920dc146102a057806329dd5120146102b35780632f54bf6e146102c657806334e0ee2e146102e9578063356baf0c1461030a57600080fd5b80630d8e6e2c1461022c57806315650cac14610270578063173825d9146102855780631a09254114610298575b600080fd5b60408051808201909152601681527504c6564676572436f6e7472616374207620312e302e360541b60208201525b6040516102679190611b9e565b60405180910390f35b61028361027e366004611905565b61059a565b005b610283610293366004611853565b610736565b61025a6107e0565b6102836102ae366004611853565b610872565b6102836102c1366004611937565b6108bb565b6102d96102d4366004611853565b6109f9565b6040519015158152602001610267565b6102fc6102f7366004611853565b610a17565b604051908152602001610267565b6102836103183660046118dc565b610a5e565b61028361032b3660046118a6565b610aa1565b6102d961033e366004611853565b6003546001600160a01b0391821691161490565b6102d9610360366004611853565b610ba4565b6102d9610373366004611853565b6001600160a01b03166000908152600a602052604090205460ff1690565b61028361039f366004611905565b610bd8565b6102836103b2366004611853565b610e00565b6102836103c5366004611ad6565b610ea8565b6004546103dd906001600160a01b031681565b6040516001600160a01b039091168152602001610267565b6103fd610efd565b6040516102679190611af8565b6102d9610418366004611874565b610f5e565b61028361042b366004611a31565b610fa5565b6103dd610fdf565b6103dd610446366004611abe565b6000908152600860205260409020546001600160a01b031690565b6103fd611018565b610283610477366004611853565b611078565b61028361048a3660046118dc565b611105565b61028361049d366004611853565b611204565b6003546001600160a01b03166103dd565b6102836104c1366004611853565b611256565b6102836104d4366004611853565b6112a1565b6102836104e7366004611853565b6112ea565b6102fc6104fa366004611853565b6001600160a01b031660009081526007602052604090205490565b6102836105233660046118dc565b61132f565b6102d9610536366004611853565b6001600160a01b031660009081526006602052604090205460ff1690565b6102fc610562366004611853565b6114db565b61057a610575366004611853565b611522565b6040516102679190611b45565b610283610595366004611853565b6115db565b6105a5610360611623565b6105ca5760405162461bcd60e51b81526004016105c190611c33565b60405180910390fd5b6001600160a01b03831660009081526006602052604090205460ff16156106035760405162461bcd60e51b81526004016105c190611cf9565b600082136106235760405162461bcd60e51b81526004016105c190611cb7565b61062f83610418611623565b1561064c5760405162461bcd60e51b81526004016105c190611c80565b6001600160a01b0383166000908152600c602052604081208054849290610674908490611d8a565b90915550506001600160a01b0383166000908152600d6020526040812080548492906106a1908490611d8a565b90915550506001600160a01b0383166000818152600e60209081526040808320815160608101835242815280840187815281840189815283546001818101865594885295872092516003909602909201948555519184019190915551600290920191909155518392859290917f67839115ecfc56e55723f233dbb40ca67429025c19e220e84a0de77357dce0fc9190a4505050565b6107416102d4611623565b61075d5760405162461bcd60e51b81526004016105c190611bf1565b610766816109f9565b6107b25760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e6572000060448201526064016105c1565b6001600160a01b0381166000908152602081905260409020805460ff191690556107dd600182611657565b50565b6060600280546107ef90611e21565b80601f016020809104026020016040519081016040528092919081815260200182805461081b90611e21565b80156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b61087d610360611623565b6108995760405162461bcd60e51b81526004016105c190611c33565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6108c6610360611623565b6108e25760405162461bcd60e51b81526004016105c190611c33565b60005b81518110156109f5576006600083838151811061091257634e487b7160e01b600052603260045260246000fd5b602090810291909101810151516001600160a01b031682528101919091526040016000205460ff16156109575760405162461bcd60e51b81526004016105c190611cf9565b6109e382828151811061097a57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518383815181106109a657634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518484815181106109d257634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161059a565b806109ed81611e5c565b9150506108e5565b5050565b6001600160a01b031660009081526020819052604090205460ff1690565b6000610a2582610418611623565b15610a425760405162461bcd60e51b81526004016105c190611c80565b506001600160a01b03166000908152600c602052604090205490565b610a696102d4611623565b610a855760405162461bcd60e51b81526004016105c190611bf1565b6001600160a01b03909116600090815260076020526040902055565b610aaa826109f9565b15610af75760405162461bcd60e51b815260206004820152601860248201527f4f776e65722063616e206e6f7420626520626c6f636b6564000000000000000060448201526064016105c1565b816001600160a01b0316610b09611623565b6001600160a01b03161415610b575760405162461bcd60e51b815260206004820152601460248201527321b0b7303a10313637b1b5903cb7bab939b2b63360611b60448201526064016105c1565b8060096000610b64611623565b6001600160a01b0390811682526020808301939093526040918201600090812096909116815294909152909220805460ff19169215159290921790915550565b6000610baf826109f9565b80610bd257506001600160a01b0382166000908152600a602052604090205460ff165b92915050565b6001600160a01b03831660009081526006602052604090205460ff1615610c115760405162461bcd60e51b81526004016105c190611cf9565b610c19611623565b6001600160a01b0316836001600160a01b03161480610c3e5750610c3e610360611623565b610c8a5760405162461bcd60e51b815260206004820152601f60248201527f596f752063616e2072656465656d206f6e6c7920796f757220706f696e74730060448201526064016105c1565b610c9683610418611623565b15610cb35760405162461bcd60e51b81526004016105c190611c80565b60008213610cd35760405162461bcd60e51b81526004016105c190611cb7565b6001600160a01b0383166000908152600c6020526040902054821315610d2f5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c1565b6001600160a01b0383166000908152600c602052604081208054849290610d57908490611dcb565b90915550506001600160a01b0383166000908152600e60209081526040918290208251606081018452428152918201849052918101610d9585611e77565b90528154600181810184556000938452602080852084516003909402019283558301519082015560409182015160029091015551829184916001600160a01b038716917fee3b1ba81f87423fecc5e13b69a00e5be4d7e9970fb24498122085bbef9b973891a4505050565b60015415801590610e175750610e15336109f9565b155b15610e345760405162461bcd60e51b81526004016105c190611bf1565b610e3d816109f9565b15610e455750565b6001600160a01b03166000818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b610eb36102d4611623565b610ecf5760405162461bcd60e51b81526004016105c190611bf1565b60009182526008602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6060600b80548060200260200160405190810160405280929190818152602001828054801561086857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f37575050505050905090565b6000610f69826109f9565b15610f7657506000610bd2565b506001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b610fb06102d4611623565b610fcc5760405162461bcd60e51b81526004016105c190611bf1565b80516109f590600290602084019061179e565b6000610fec610360611623565b6110085760405162461bcd60e51b81526004016105c190611c33565b506005546001600160a01b031690565b60606001805480602002602001604051908101604052809291908181526020018280548015610868576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f37575050505050905090565b6110836102d4611623565b61109f5760405162461bcd60e51b81526004016105c190611bf1565b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b03821660009081526006602052604090205460ff161561113e5760405162461bcd60e51b81526004016105c190611cf9565b6000811361115e5760405162461bcd60e51b81526004016105c190611cb7565b61116a82826001610bd8565b600480546005546040516323b872dd60e01b81526001600160a01b0391821693810193909352848116602484015260448301849052169081906323b872dd90606401602060405180830381600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe9190611a15565b50505050565b61120f6102d4611623565b61122b5760405162461bcd60e51b81526004016105c190611bf1565b6001600160a01b0381166000908152600a60205260409020805460ff191690556107dd600b82611657565b611261610360611623565b61127d5760405162461bcd60e51b81526004016105c190611c33565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6112ac610360611623565b6112c85760405162461bcd60e51b81526004016105c190611c33565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6112f56102d4611623565b6113115760405162461bcd60e51b81526004016105c190611bf1565b600380546001600160a01b0319166001600160a01b03831617905550565b61133a610360611623565b6113565760405162461bcd60e51b81526004016105c190611c33565b6001600160a01b03821660009081526006602052604090205460ff161561138f5760405162461bcd60e51b81526004016105c190611cf9565b600081136113af5760405162461bcd60e51b81526004016105c190611cb7565b6001600160a01b0382166000908152600c602052604090205481131561140b5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c1565b6001600160a01b0382166000908152600c602052604081208054839290611433908490611dcb565b90915550506001600160a01b0382166000908152600d602052604081208054839290611460908490611dcb565b90915550506001600160a01b0382166000908152600e602090815260409182902082516060810184524281526002928101929092529181016114a184611e77565b9052815460018181018455600093845260209384902083516003909302019182559282015192810192909255604001516002909101555050565b60006114e982610418611623565b156115065760405162461bcd60e51b81526004016105c190611c80565b506001600160a01b03166000908152600d602052604090205490565b606061153082610418611623565b1561154d5760405162461bcd60e51b81526004016105c190611c80565b6001600160a01b0382166000908152600e6020908152604080832080548251818502810185019093528083529193909284015b828210156115d05783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190611580565b505050509050919050565b6115e6610360611623565b6116025760405162461bcd60e51b81526004016105c190611c33565b6001600160a01b03166000908152600660205260409020805460ff19169055565b60006014361080159061164057506003546001600160a01b031633145b15611652575060131936013560601c90565b503390565b60005b825481101561179957816001600160a01b031683828154811061168d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561178757825483906116b890600190611e0a565b815481106116d657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031683828154811061171457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061176057634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b8061179181611e5c565b91505061165a565b505050565b8280546117aa90611e21565b90600052602060002090601f0160209004810192826117cc5760008555611812565b82601f106117e557805160ff1916838001178555611812565b82800160010185558215611812579182015b828111156118125782518255916020019190600101906117f7565b5061181e929150611822565b5090565b5b8082111561181e5760008155600101611823565b80356001600160a01b038116811461184e57600080fd5b919050565b600060208284031215611864578081fd5b61186d82611837565b9392505050565b60008060408385031215611886578081fd5b61188f83611837565b915061189d60208401611837565b90509250929050565b600080604083850312156118b8578182fd5b6118c183611837565b915060208301356118d181611ebd565b809150509250929050565b600080604083850312156118ee578182fd5b6118f783611837565b946020939093013593505050565b600080600060608486031215611919578081fd5b61192284611837565b95602085013595506040909401359392505050565b60006020808385031215611949578182fd5b823567ffffffffffffffff80821115611960578384fd5b818501915085601f830112611973578384fd5b81358181111561198557611985611ea7565b611993848260051b01611d59565b81815284810192508385016060808402860187018a10156119b2578788fd5b8795505b83861015611a075780828b0312156119cc578788fd5b6119d4611d30565b6119dd83611837565b815282880135888201526040808401359082015285526001959095019493860193908101906119b6565b509098975050505050505050565b600060208284031215611a26578081fd5b815161186d81611ebd565b60006020808385031215611a43578182fd5b823567ffffffffffffffff80821115611a5a578384fd5b818501915085601f830112611a6d578384fd5b813581811115611a7f57611a7f611ea7565b611a91601f8201601f19168501611d59565b91508082528684828501011115611aa6578485fd5b80848401858401378101909201929092529392505050565b600060208284031215611acf578081fd5b5035919050565b60008060408385031215611ae8578182fd5b8235915061189d60208401611837565b6020808252825182820181905260009190848201906040850190845b81811015611b395783516001600160a01b031683529284019291840191600101611b14565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015611b915781518051855286810151878601528501518585015260609093019290850190600101611b62565b5091979650505050505050565b6000602080835283518082850152825b81811015611bca57858101830151858201604001528201611bae565b81811115611bdb5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602d908201527f4f6e6c79206f776e6572206f7220706172746e65722063616e2063616c6c207460408201526c3434b990333ab731ba34b7b71760991b606082015260800190565b6020808252601e908201527f53656e646572206164647265737320626c6f636b656420627920757365720000604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252601a908201527f546172676574206164647265737320776173206f7074206f7574000000000000604082015260600190565b6040516060810167ffffffffffffffff81118282101715611d5357611d53611ea7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d8257611d82611ea7565b604052919050565b600080821280156001600160ff1b0384900385131615611dac57611dac611e91565b600160ff1b8390038412811615611dc557611dc5611e91565b50500190565b60008083128015600160ff1b850184121615611de957611de9611e91565b6001600160ff1b0384018313811615611e0457611e04611e91565b50500390565b600082821015611e1c57611e1c611e91565b500390565b600181811c90821680611e3557607f821691505b60208210811415611e5657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611e7057611e70611e91565b5060010190565b6000600160ff1b821415611e8d57611e8d611e91565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146107dd57600080fdfea2646970667358221220f8ef068afcd7700d6a96dad7f355254bb7eed555f722e2bf2f75f39b4f329dc264736f6c63430008040033",
700 "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c806386c58d3e11610130578063ce1b815f116100b8578063e1e610e11161007c578063e1e610e114610515578063e9858e3014610528578063ea0f40fe14610554578063ee28f50114610567578063f617d91d1461058757600080fd5b8063ce1b815f146104a2578063d4610483146104b3578063d4f1205c146104c6578063da742228146104d9578063dc79b176146104ec57600080fd5b8063954a85b4116100ff578063954a85b414610438578063a0e67e2b14610461578063a99752c414610469578063ad102b841461047c578063c75305bc1461048f57600080fd5b806386c58d3e1461040a5780638c0f9aac1461036557806390c3f38f1461041d57806391825dca1461043057600080fd5b806350ee7b69116101b3578063668ff42711610182578063668ff427146103915780637065cb48146103a4578063717fbc96146103b757806372dd52e3146103ca57806373e29b0d146103f557600080fd5b806350ee7b691461031d578063572b6c05146103305780635d0fd6c1146103525780635e9b45e11461036557600080fd5b806327a920dc116101fa57806327a920dc146102a057806329dd5120146102b35780632f54bf6e146102c657806334e0ee2e146102e9578063356baf0c1461030a57600080fd5b80630d8e6e2c1461022c57806315650cac14610270578063173825d9146102855780631a09254114610298575b600080fd5b60408051808201909152601681527504c6564676572436f6e7472616374207620312e302e360541b60208201525b6040516102679190611b9e565b60405180910390f35b61028361027e366004611905565b61059a565b005b610283610293366004611853565b610736565b61025a6107e0565b6102836102ae366004611853565b610872565b6102836102c1366004611937565b6108bb565b6102d96102d4366004611853565b6109f9565b6040519015158152602001610267565b6102fc6102f7366004611853565b610a17565b604051908152602001610267565b6102836103183660046118dc565b610a5e565b61028361032b3660046118a6565b610aa1565b6102d961033e366004611853565b6003546001600160a01b0391821691161490565b6102d9610360366004611853565b610ba4565b6102d9610373366004611853565b6001600160a01b03166000908152600a602052604090205460ff1690565b61028361039f366004611905565b610bd8565b6102836103b2366004611853565b610e00565b6102836103c5366004611ad6565b610ea8565b6004546103dd906001600160a01b031681565b6040516001600160a01b039091168152602001610267565b6103fd610efd565b6040516102679190611af8565b6102d9610418366004611874565b610f5e565b61028361042b366004611a31565b610fa5565b6103dd610fdf565b6103dd610446366004611abe565b6000908152600860205260409020546001600160a01b031690565b6103fd611018565b610283610477366004611853565b611078565b61028361048a3660046118dc565b611105565b61028361049d366004611853565b611204565b6003546001600160a01b03166103dd565b6102836104c1366004611853565b611256565b6102836104d4366004611853565b6112a1565b6102836104e7366004611853565b6112ea565b6102fc6104fa366004611853565b6001600160a01b031660009081526007602052604090205490565b6102836105233660046118dc565b61132f565b6102d9610536366004611853565b6001600160a01b031660009081526006602052604090205460ff1690565b6102fc610562366004611853565b6114db565b61057a610575366004611853565b611522565b6040516102679190611b45565b610283610595366004611853565b6115db565b6105a5610360611623565b6105ca5760405162461bcd60e51b81526004016105c190611c33565b60405180910390fd5b6001600160a01b03831660009081526006602052604090205460ff16156106035760405162461bcd60e51b81526004016105c190611cf9565b600082136106235760405162461bcd60e51b81526004016105c190611cb7565b61062f83610418611623565b1561064c5760405162461bcd60e51b81526004016105c190611c80565b6001600160a01b0383166000908152600c602052604081208054849290610674908490611d8a565b90915550506001600160a01b0383166000908152600d6020526040812080548492906106a1908490611d8a565b90915550506001600160a01b0383166000818152600e60209081526040808320815160608101835242815280840187815281840189815283546001818101865594885295872092516003909602909201948555519184019190915551600290920191909155518392859290917f67839115ecfc56e55723f233dbb40ca67429025c19e220e84a0de77357dce0fc9190a4505050565b6107416102d4611623565b61075d5760405162461bcd60e51b81526004016105c190611bf1565b610766816109f9565b6107b25760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e6572000060448201526064016105c1565b6001600160a01b0381166000908152602081905260409020805460ff191690556107dd600182611657565b50565b6060600280546107ef90611e21565b80601f016020809104026020016040519081016040528092919081815260200182805461081b90611e21565b80156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b61087d610360611623565b6108995760405162461bcd60e51b81526004016105c190611c33565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6108c6610360611623565b6108e25760405162461bcd60e51b81526004016105c190611c33565b60005b81518110156109f5576006600083838151811061091257634e487b7160e01b600052603260045260246000fd5b602090810291909101810151516001600160a01b031682528101919091526040016000205460ff16156109575760405162461bcd60e51b81526004016105c190611cf9565b6109e382828151811061097a57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518383815181106109a657634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518484815181106109d257634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161059a565b806109ed81611e5c565b9150506108e5565b5050565b6001600160a01b031660009081526020819052604090205460ff1690565b6000610a2582610418611623565b15610a425760405162461bcd60e51b81526004016105c190611c80565b506001600160a01b03166000908152600c602052604090205490565b610a696102d4611623565b610a855760405162461bcd60e51b81526004016105c190611bf1565b6001600160a01b03909116600090815260076020526040902055565b610aaa826109f9565b15610af75760405162461bcd60e51b815260206004820152601860248201527f4f776e65722063616e206e6f7420626520626c6f636b6564000000000000000060448201526064016105c1565b816001600160a01b0316610b09611623565b6001600160a01b03161415610b575760405162461bcd60e51b815260206004820152601460248201527321b0b7303a10313637b1b5903cb7bab939b2b63360611b60448201526064016105c1565b8060096000610b64611623565b6001600160a01b0390811682526020808301939093526040918201600090812096909116815294909152909220805460ff19169215159290921790915550565b6000610baf826109f9565b80610bd257506001600160a01b0382166000908152600a602052604090205460ff165b92915050565b6001600160a01b03831660009081526006602052604090205460ff1615610c115760405162461bcd60e51b81526004016105c190611cf9565b610c19611623565b6001600160a01b0316836001600160a01b03161480610c3e5750610c3e610360611623565b610c8a5760405162461bcd60e51b815260206004820152601f60248201527f596f752063616e2072656465656d206f6e6c7920796f757220706f696e74730060448201526064016105c1565b610c9683610418611623565b15610cb35760405162461bcd60e51b81526004016105c190611c80565b60008213610cd35760405162461bcd60e51b81526004016105c190611cb7565b6001600160a01b0383166000908152600c6020526040902054821315610d2f5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c1565b6001600160a01b0383166000908152600c602052604081208054849290610d57908490611dcb565b90915550506001600160a01b0383166000908152600e60209081526040918290208251606081018452428152918201849052918101610d9585611e77565b90528154600181810184556000938452602080852084516003909402019283558301519082015560409182015160029091015551829184916001600160a01b038716917fee3b1ba81f87423fecc5e13b69a00e5be4d7e9970fb24498122085bbef9b973891a4505050565b60015415801590610e175750610e15336109f9565b155b15610e345760405162461bcd60e51b81526004016105c190611bf1565b610e3d816109f9565b15610e455750565b6001600160a01b03166000818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b610eb36102d4611623565b610ecf5760405162461bcd60e51b81526004016105c190611bf1565b60009182526008602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6060600b80548060200260200160405190810160405280929190818152602001828054801561086857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f37575050505050905090565b6000610f69826109f9565b15610f7657506000610bd2565b506001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b610fb06102d4611623565b610fcc5760405162461bcd60e51b81526004016105c190611bf1565b80516109f590600290602084019061179e565b6000610fec610360611623565b6110085760405162461bcd60e51b81526004016105c190611c33565b506005546001600160a01b031690565b60606001805480602002602001604051908101604052809291908181526020018280548015610868576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f37575050505050905090565b6110836102d4611623565b61109f5760405162461bcd60e51b81526004016105c190611bf1565b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b03821660009081526006602052604090205460ff161561113e5760405162461bcd60e51b81526004016105c190611cf9565b6000811361115e5760405162461bcd60e51b81526004016105c190611cb7565b61116a82826001610bd8565b600480546005546040516323b872dd60e01b81526001600160a01b0391821693810193909352848116602484015260448301849052169081906323b872dd90606401602060405180830381600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fe9190611a15565b50505050565b61120f6102d4611623565b61122b5760405162461bcd60e51b81526004016105c190611bf1565b6001600160a01b0381166000908152600a60205260409020805460ff191690556107dd600b82611657565b611261610360611623565b61127d5760405162461bcd60e51b81526004016105c190611c33565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6112ac610360611623565b6112c85760405162461bcd60e51b81526004016105c190611c33565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6112f56102d4611623565b6113115760405162461bcd60e51b81526004016105c190611bf1565b600380546001600160a01b0319166001600160a01b03831617905550565b61133a610360611623565b6113565760405162461bcd60e51b81526004016105c190611c33565b6001600160a01b03821660009081526006602052604090205460ff161561138f5760405162461bcd60e51b81526004016105c190611cf9565b600081136113af5760405162461bcd60e51b81526004016105c190611cb7565b6001600160a01b0382166000908152600c602052604090205481131561140b5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820706f696e747360781b60448201526064016105c1565b6001600160a01b0382166000908152600c602052604081208054839290611433908490611dcb565b90915550506001600160a01b0382166000908152600d602052604081208054839290611460908490611dcb565b90915550506001600160a01b0382166000908152600e602090815260409182902082516060810184524281526002928101929092529181016114a184611e77565b9052815460018181018455600093845260209384902083516003909302019182559282015192810192909255604001516002909101555050565b60006114e982610418611623565b156115065760405162461bcd60e51b81526004016105c190611c80565b506001600160a01b03166000908152600d602052604090205490565b606061153082610418611623565b1561154d5760405162461bcd60e51b81526004016105c190611c80565b6001600160a01b0382166000908152600e6020908152604080832080548251818502810185019093528083529193909284015b828210156115d05783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190611580565b505050509050919050565b6115e6610360611623565b6116025760405162461bcd60e51b81526004016105c190611c33565b6001600160a01b03166000908152600660205260409020805460ff19169055565b60006014361080159061164057506003546001600160a01b031633145b15611652575060131936013560601c90565b503390565b60005b825481101561179957816001600160a01b031683828154811061168d57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561178757825483906116b890600190611e0a565b815481106116d657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031683828154811061171457634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061176057634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b8061179181611e5c565b91505061165a565b505050565b8280546117aa90611e21565b90600052602060002090601f0160209004810192826117cc5760008555611812565b82601f106117e557805160ff1916838001178555611812565b82800160010185558215611812579182015b828111156118125782518255916020019190600101906117f7565b5061181e929150611822565b5090565b5b8082111561181e5760008155600101611823565b80356001600160a01b038116811461184e57600080fd5b919050565b600060208284031215611864578081fd5b61186d82611837565b9392505050565b60008060408385031215611886578081fd5b61188f83611837565b915061189d60208401611837565b90509250929050565b600080604083850312156118b8578182fd5b6118c183611837565b915060208301356118d181611ebd565b809150509250929050565b600080604083850312156118ee578182fd5b6118f783611837565b946020939093013593505050565b600080600060608486031215611919578081fd5b61192284611837565b95602085013595506040909401359392505050565b60006020808385031215611949578182fd5b823567ffffffffffffffff80821115611960578384fd5b818501915085601f830112611973578384fd5b81358181111561198557611985611ea7565b611993848260051b01611d59565b81815284810192508385016060808402860187018a10156119b2578788fd5b8795505b83861015611a075780828b0312156119cc578788fd5b6119d4611d30565b6119dd83611837565b815282880135888201526040808401359082015285526001959095019493860193908101906119b6565b509098975050505050505050565b600060208284031215611a26578081fd5b815161186d81611ebd565b60006020808385031215611a43578182fd5b823567ffffffffffffffff80821115611a5a578384fd5b818501915085601f830112611a6d578384fd5b813581811115611a7f57611a7f611ea7565b611a91601f8201601f19168501611d59565b91508082528684828501011115611aa6578485fd5b80848401858401378101909201929092529392505050565b600060208284031215611acf578081fd5b5035919050565b60008060408385031215611ae8578182fd5b8235915061189d60208401611837565b6020808252825182820181905260009190848201906040850190845b81811015611b395783516001600160a01b031683529284019291840191600101611b14565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015611b915781518051855286810151878601528501518585015260609093019290850190600101611b62565b5091979650505050505050565b6000602080835283518082850152825b81811015611bca57858101830151858201604001528201611bae565b81811115611bdb5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602d908201527f4f6e6c79206f776e6572206f7220706172746e65722063616e2063616c6c207460408201526c3434b990333ab731ba34b7b71760991b606082015260800190565b6020808252601e908201527f53656e646572206164647265737320626c6f636b656420627920757365720000604082015260600190565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252601a908201527f546172676574206164647265737320776173206f7074206f7574000000000000604082015260600190565b6040516060810167ffffffffffffffff81118282101715611d5357611d53611ea7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611d8257611d82611ea7565b604052919050565b600080821280156001600160ff1b0384900385131615611dac57611dac611e91565b600160ff1b8390038412811615611dc557611dc5611e91565b50500190565b60008083128015600160ff1b850184121615611de957611de9611e91565b6001600160ff1b0384018313811615611e0457611e04611e91565b50500390565b600082821015611e1c57611e1c611e91565b500390565b600181811c90821680611e3557607f821691505b60208210811415611e5657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611e7057611e70611e91565b5060010190565b6000600160ff1b821415611e8d57611e8d611e91565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146107dd57600080fdfea2646970667358221220f8ef068afcd7700d6a96dad7f355254bb7eed555f722e2bf2f75f39b4f329dc264736f6c63430008040033",
701 "linkReferences": {},
702 "deployedLinkReferences": {}
703}