BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • xPLENTY
FA1FA1.2
operations (33.9K)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
938
1395
 
1
parameter (or
2
            (or
3
              (or
4
                (pair %RecoverExcessToken (pair (nat %amount) (bool %faTwoCheck))
5
                                          (pair (address %reciever)
6
                                                (pair (address %tokenAddress)
7
                                                      (nat %tokenId))))
8
                (or (pair %approve (address %spender) (nat %value))
9
                    (pair %burn (address %address) (nat %value))))
10
              (or
11
                (or (pair %getAdministrator unit (contract address))
12
                    (pair %getAllowance (pair (address %owner) (address %spender))
13
                                        (contract nat)))
14
                (or (pair %getBalance address (contract nat))
15
                    (pair %getPriorBalance (pair (address %address) (nat %level))
16
                                           (contract (pair (address %address)
17
                                                          (pair (nat %level)
18
                                                                (nat %result))))))))
19
            (or
20
              (or (pair %getTotalSupply unit (contract nat))
21
                  (or (pair %mint (address %address) (nat %value))
22
                      (address %setAdministrator)))
23
              (or
24
                (or (bool %setPause)
25
                    (pair %transfer (address %from) (pair (address %to) (nat %value))))
26
                (or (address %updateExchangeAddress)
27
                    (pair %update_metadata (string %key) (bytes %value))))));
28
storage (pair
29
          (pair
30
            (pair (address %administrator)
31
                  (big_map %approvals address (map address nat)))
32
            (pair (big_map %balances address nat)
33
                  (pair
34
                    (big_map %checkpoints (pair address nat)
35
                                          (pair (nat %fromBlock) (nat %balance)))
36
                    (address %exchangeAddress))))
37
          (pair
38
            (pair (big_map %metadata string bytes)
39
                  (pair (big_map %numCheckpoints address nat) (bool %paused)))
40
            (pair (bool %securityCheck)
41
                  (pair
42
                    (big_map %token_metadata nat
43
                                             (pair (nat %token_id)
44
                                                   (map %token_info string bytes)))
45
                    (nat %totalSupply)))));
46
code { LAMBDA
47
         (pair (pair address (pair nat nat))
48
               (pair
49
                 (pair (pair address (big_map address (map address nat)))
50
                       (pair (big_map address nat)
51
                             (pair (big_map (pair address nat) (pair nat nat)) address)))
52
                 (pair (pair (big_map string bytes) (pair (big_map address nat) bool))
53
                       (pair bool (pair (big_map nat (pair nat (map string bytes))) nat)))))
54
         (pair (list operation)
55
               (pair unit
56
                     (pair
57
                       (pair (pair address (big_map address (map address nat)))
58
                             (pair (big_map address nat)
59
                                   (pair (big_map (pair address nat) (pair nat nat))
60
                                         address)))
61
                       (pair
62
                         (pair (big_map string bytes) (pair (big_map address nat) bool))
63
                         (pair bool
64
                               (pair (big_map nat (pair nat (map string bytes))) nat))))))
65
         { NIL operation ;
66
           SWAP ;
67
           DUP ;
68
           DUG 2 ;
69
           CDR ;
70
           PUSH nat 0 ;
71
           DUP 4 ;
72
           CAR ;
73
           GET 3 ;
74
           COMPARE ;
75
           EQ ;
76
           IF
77
             { UNPAIR ;
78
               UNPAIR ;
79
               SWAP ;
80
               UNPAIR ;
81
               SWAP ;
82
               UNPAIR ;
83
               DUP 7 ;
84
               CAR ;
85
               GET 4 ;
86
               LEVEL ;
87
               PAIR ;
88
               SOME ;
89
               PUSH nat 0 ;
90
               DUP 9 ;
91
               CAR ;
92
               CAR ;
93
               PAIR ;
94
               UPDATE ;
95
               PAIR ;
96
               SWAP ;
97
               PAIR ;
98
               SWAP ;
99
               PAIR ;
100
               SWAP ;
101
               UNPAIR ;
102
               UNPAIR ;
103
               SWAP ;
104
               UNPAIR ;
105
               PUSH nat 1 ;
106
               DUP 8 ;
107
               CAR ;
108
               GET 3 ;
109
               ADD ;
110
               SOME ;
111
               DIG 7 ;
112
               CAR ;
113
               CAR ;
114
               UPDATE ;
115
               PAIR ;
116
               SWAP ;
117
               PAIR ;
118
               PAIR ;
119
               SWAP ;
120
               PAIR }
121
             { DUP ;
122
               CAR ;
123
               GET 5 ;
124
               LEVEL ;
125
               SWAP ;
126
               PUSH nat 1 ;
127
               DUP 6 ;
128
               CAR ;
129
               GET 3 ;
130
               SUB ;
131
               ISNAT ;
132
               IF_NONE { PUSH int 110 ; FAILWITH } {} ;
133
               DUP 6 ;
134
               CAR ;
135
               CAR ;
136
               PAIR ;
137
               GET ;
138
               IF_NONE { PUSH int 110 ; FAILWITH } {} ;
139
               CAR ;
140
               COMPARE ;
141
               EQ ;
142
               IF
143
                 { UNPAIR ;
144
                   UNPAIR ;
145
                   SWAP ;
146
                   UNPAIR ;
147
                   SWAP ;
148
                   UNPAIR ;
149
                   DUP 7 ;
150
                   CAR ;
151
                   GET 4 ;
152
                   LEVEL ;
153
                   PAIR ;
154
                   SOME ;
155
                   PUSH nat 1 ;
156
                   DUP 9 ;
157
                   CAR ;
158
                   GET 3 ;
159
                   SUB ;
160
                   ISNAT ;
161
                   IF_NONE { PUSH int 111 ; FAILWITH } {} ;
162
                   DIG 8 ;
163
                   CAR ;
164
                   CAR ;
165
                   PAIR ;
166
                   UPDATE ;
167
                   PAIR ;
168
                   SWAP ;
169
                   PAIR ;
170
                   SWAP ;
171
                   PAIR ;
172
                   PAIR }
173
                 { DUP 3 ;
174
                   CAR ;
175
                   GET 4 ;
176
                   SWAP ;
177
                   DUP ;
178
                   DUG 2 ;
179
                   CAR ;
180
                   GET 5 ;
181
                   PUSH nat 1 ;
182
                   DUP 6 ;
183
                   CAR ;
184
                   GET 3 ;
185
                   SUB ;
186
                   ISNAT ;
187
                   IF_NONE { PUSH int 114 ; FAILWITH } {} ;
188
                   DUP 6 ;
189
                   CAR ;
190
                   CAR ;
191
                   PAIR ;
192
                   GET ;
193
                   IF_NONE { PUSH int 114 ; FAILWITH } {} ;
194
                   CDR ;
195
                   COMPARE ;
196
                   NEQ ;
197
                   IF
198
                     { UNPAIR ;
199
                       UNPAIR ;
200
                       SWAP ;
201
                       UNPAIR ;
202
                       SWAP ;
203
                       UNPAIR ;
204
                       DUP 7 ;
205
                       CAR ;
206
                       GET 4 ;
207
                       LEVEL ;
208
                       PAIR ;
209
                       SOME ;
210
                       DIG 7 ;
211
                       DUP ;
212
                       CAR ;
213
                       GET 3 ;
214
                       SWAP ;
215
                       DUP ;
216
                       DUG 9 ;
217
                       CAR ;
218
                       CAR ;
219
                       PAIR ;
220
                       UPDATE ;
221
                       PAIR ;
222
                       SWAP ;
223
                       PAIR ;
224
                       SWAP ;
225
                       PAIR ;
226
                       SWAP ;
227
                       UNPAIR ;
228
                       UNPAIR ;
229
                       SWAP ;
230
                       UNPAIR ;
231
                       PUSH nat 1 ;
232
                       DUP 8 ;
233
                       CAR ;
234
                       GET 3 ;
235
                       ADD ;
236
                       SOME ;
237
                       DIG 7 ;
238
                       CAR ;
239
                       CAR ;
240
                       UPDATE ;
241
                       PAIR ;
242
                       SWAP ;
243
                       PAIR ;
244
                       PAIR ;
245
                       SWAP ;
246
                       PAIR }
247
                     { DIG 2 ; DROP } } } ;
248
           UNIT ;
249
           DIG 2 ;
250
           PAIR 3 } ;
251
       SWAP ;
252
       UNPAIR ;
253
       IF_LEFT
254
         { IF_LEFT
255
             { IF_LEFT
256
                 { DIG 2 ;
257
                   DROP ;
258
                   SWAP ;
259
                   DUP ;
260
                   DUG 2 ;
261
                   CAR ;
262
                   CAR ;
263
                   CAR ;
264
                   SENDER ;
265
                   COMPARE ;
266
                   EQ ;
267
                   IF {} { PUSH string "xPlenty_NotAdmin" ; FAILWITH } ;
268
                   DUP ;
269
                   CAR ;
270
                   CDR ;
271
                   IF
272
                     { DUP ;
273
                       GET 5 ;
274
                       CONTRACT %transfer (list (pair address
275
                                                     (list (pair address (pair nat nat))))) ;
276
                       IF_NONE { PUSH int 284 ; FAILWITH } {} ;
277
                       NIL operation ;
278
                       SWAP ;
279
                       PUSH mutez 0 ;
280
                       NIL (pair address (list (pair address (pair nat nat)))) ;
281
                       NIL (pair address (pair nat nat)) ;
282
                       DIG 5 ;
283
                       DUP ;
284
                       CAR ;
285
                       CAR ;
286
                       SWAP ;
287
                       DUP ;
288
                       GET 6 ;
289
                       SWAP ;
290
                       GET 3 ;
291
                       PAIR 3 ;
292
                       CONS ;
293
                       SELF_ADDRESS ;
294
                       PAIR ;
295
                       CONS ;
296
                       TRANSFER_TOKENS ;
297
                       CONS }
298
                     { DUP ;
299
                       GET 5 ;
300
                       CONTRACT %transfer (pair address (pair address nat)) ;
301
                       IF_NONE { PUSH int 300 ; FAILWITH } {} ;
302
                       NIL operation ;
303
                       SWAP ;
304
                       PUSH mutez 0 ;
305
                       DIG 3 ;
306
                       DUP ;
307
                       CAR ;
308
                       CAR ;
309
                       SWAP ;
310
                       GET 3 ;
311
                       SELF_ADDRESS ;
312
                       PAIR 3 ;
313
                       TRANSFER_TOKENS ;
314
                       CONS } }
315
                 { IF_LEFT
316
                     { DIG 2 ;
317
                       DROP ;
318
                       SWAP ;
319
                       DUP ;
320
                       DUG 2 ;
321
                       CAR ;
322
                       GET 3 ;
323
                       SENDER ;
324
                       MEM ;
325
                       IF
326
                         {}
327
                         { SWAP ;
328
                           UNPAIR ;
329
                           UNPAIR ;
330
                           SWAP ;
331
                           UNPAIR ;
332
                           PUSH (option nat) (Some 0) ;
333
                           SENDER ;
334
                           UPDATE ;
335
                           PAIR ;
336
                           SWAP ;
337
                           UNPAIR ;
338
                           SWAP ;
339
                           PUSH (option (map address nat)) (Some {}) ;
340
                           SENDER ;
341
                           UPDATE ;
342
                           SWAP ;
343
                           PAIR ;
344
                           PAIR ;
345
                           PAIR ;
346
                           SWAP } ;
347
                       SWAP ;
348
                       DUP ;
349
                       DUG 2 ;
350
                       GET 3 ;
351
                       GET 4 ;
352
                       IF { PUSH string "xPlenty_Paused" ; FAILWITH } {} ;
353
                       PUSH nat 0 ;
354
                       DUP 3 ;
355
                       CAR ;
356
                       CAR ;
357
                       CDR ;
358
                       SENDER ;
359
                       GET ;
360
                       IF_NONE { PUSH int 231 ; FAILWITH } {} ;
361
                       DUP 3 ;
362
                       CAR ;
363
                       GET ;
364
                       IF_NONE { PUSH nat 0 } {} ;
365
                       COMPARE ;
366
                       EQ ;
367
                       IF { PUSH bool True } { DUP ; CDR ; PUSH nat 0 ; COMPARE ; EQ } ;
368
                       IF
369
                         {}
370
                         { PUSH string "xPlenty_UnsafeAllowanceChange" ; FAILWITH } ;
371
                       SWAP ;
372
                       UNPAIR ;
373
                       UNPAIR ;
374
                       UNPAIR ;
375
                       SWAP ;
376
                       DUP ;
377
                       SENDER ;
378
                       DUP ;
379
                       DUG 2 ;
380
                       GET ;
381
                       IF_NONE { PUSH int 233 ; FAILWITH } {} ;
382
                       DUP 7 ;
383
                       CDR ;
384
                       SOME ;
385
                       DIG 7 ;
386
                       CAR ;
387
                       UPDATE ;
388
                       SOME ;
389
                       SWAP ;
390
                       UPDATE ;
391
                       SWAP ;
392
                       PAIR ;
393
                       PAIR ;
394
                       PAIR ;
395
                       NIL operation }
396
                     { SWAP ;
397
                       DUP ;
398
                       DUG 2 ;
399
                       CAR ;
400
                       GET 6 ;
401
                       SENDER ;
402
                       COMPARE ;
403
                       EQ ;
404
                       IF {} { PUSH string "xPlenty_NotExchange" ; FAILWITH } ;
405
                       DUP ;
406
                       CDR ;
407
                       DUP 3 ;
408
                       CAR ;
409
                       GET 3 ;
410
                       DUP 3 ;
411
                       CAR ;
412
                       GET ;
413
                       IF_NONE { PUSH int 350 ; FAILWITH } {} ;
414
                       COMPARE ;
415
                       GE ;
416
                       IF {} { PUSH string "xPlenty_InsufficientBalance" ; FAILWITH } ;
417
                       SWAP ;
418
                       DUP ;
419
                       DUG 2 ;
420
                       UNPAIR ;
421
                       UNPAIR ;
422
                       SWAP ;
423
                       UNPAIR ;
424
                       DUP 5 ;
425
                       CDR ;
426
                       DIG 6 ;
427
                       CAR ;
428
                       GET 3 ;
429
                       DUP 7 ;
430
                       CAR ;
431
                       GET ;
432
                       IF_NONE { PUSH int 352 ; FAILWITH } {} ;
433
                       SUB ;
434
                       ISNAT ;
435
                       IF_NONE { PUSH int 352 ; FAILWITH } {} ;
436
                       SOME ;
437
                       DUP 6 ;
438
                       CAR ;
439
                       UPDATE ;
440
                       PAIR ;
441
                       SWAP ;
442
                       PAIR ;
443
                       PAIR ;
444
                       DUP ;
445
                       DUG 2 ;
446
                       SWAP ;
447
                       DUP ;
448
                       DUG 2 ;
449
                       CDR ;
450
                       DIG 3 ;
451
                       GET 8 ;
452
                       SUB ;
453
                       ISNAT ;
454
                       IF_NONE { PUSH int 353 ; FAILWITH } {} ;
455
                       UPDATE 8 ;
456
                       SWAP ;
457
                       DUG 2 ;
458
                       DUP ;
459
                       DUP ;
460
                       DUG 4 ;
461
                       CAR ;
462
                       GET 3 ;
463
                       DUP 4 ;
464
                       CAR ;
465
                       GET ;
466
                       IF_NONE { PUSH int 357 ; FAILWITH } {} ;
467
                       DIG 4 ;
468
                       GET 3 ;
469
                       GET 3 ;
470
                       DUP 5 ;
471
                       CAR ;
472
                       GET ;
473
                       IF_NONE { PUSH nat 0 } {} ;
474
                       DIG 4 ;
475
                       CAR ;
476
                       PAIR 3 ;
477
                       PAIR ;
478
                       EXEC ;
479
                       DUP ;
480
                       GET 4 ;
481
                       SWAP ;
482
                       CAR } } }
483
             { IF_LEFT
484
                 { IF_LEFT
485
                     { DIG 2 ;
486
                       DROP ;
487
                       SWAP ;
488
                       DUP ;
489
                       DUG 2 ;
490
                       CAR ;
491
                       CAR ;
492
                       CAR ;
493
                       NIL operation ;
494
                       DIG 2 ;
495
                       CDR ;
496
                       PUSH mutez 0 ;
497
                       DIG 3 ;
498
                       TRANSFER_TOKENS ;
499
                       CONS }
500
                     { DIG 2 ;
501
                       DROP ;
502
                       SWAP ;
503
                       DUP ;
504
                       DUG 2 ;
505
                       CAR ;
506
                       GET 3 ;
507
                       SWAP ;
508
                       DUP ;
509
                       DUG 2 ;
510
                       CAR ;
511
                       CAR ;
512
                       MEM ;
513
                       IF
514
                         {}
515
                         { SWAP ;
516
                           UNPAIR ;
517
                           UNPAIR ;
518
                           SWAP ;
519
                           UNPAIR ;
520
                           PUSH (option nat) (Some 0) ;
521
                           DUP 6 ;
522
                           CAR ;
523
                           CAR ;
524
                           UPDATE ;
525
                           PAIR ;
526
                           SWAP ;
527
                           UNPAIR ;
528
                           SWAP ;
529
                           PUSH (option (map address nat)) (Some {}) ;
530
                           DUP 6 ;
531
                           CAR ;
532
                           CAR ;
533
                           UPDATE ;
534
                           SWAP ;
535
                           PAIR ;
536
                           PAIR ;
537
                           PAIR ;
538
                           SWAP } ;
539
                       SWAP ;
540
                       DUP ;
541
                       DUG 2 ;
542
                       CAR ;
543
                       CAR ;
544
                       CDR ;
545
                       SWAP ;
546
                       DUP ;
547
                       DUG 2 ;
548
                       CAR ;
549
                       CAR ;
550
                       GET ;
551
                       IF_NONE { PUSH int 251 ; FAILWITH } {} ;
552
                       SWAP ;
553
                       DUP ;
554
                       DUG 2 ;
555
                       CAR ;
556
                       CDR ;
557
                       GET ;
558
                       IF_NONE { PUSH nat 0 } {} ;
559
                       NIL operation ;
560
                       DIG 2 ;
561
                       CDR ;
562
                       PUSH mutez 0 ;
563
                       DIG 3 ;
564
                       TRANSFER_TOKENS ;
565
                       CONS } }
566
                 { IF_LEFT
567
                     { DIG 2 ;
568
                       DROP ;
569
                       SWAP ;
570
                       DUP ;
571
                       DUG 2 ;
572
                       CAR ;
573
                       GET 3 ;
574
                       SWAP ;
575
                       DUP ;
576
                       DUG 2 ;
577
                       CAR ;
578
                       MEM ;
579
                       IF
580
                         {}
581
                         { SWAP ;
582
                           UNPAIR ;
583
                           UNPAIR ;
584
                           SWAP ;
585
                           UNPAIR ;
586
                           PUSH (option nat) (Some 0) ;
587
                           DUP 6 ;
588
                           CAR ;
589
                           UPDATE ;
590
                           PAIR ;
591
                           SWAP ;
592
                           UNPAIR ;
593
                           SWAP ;
594
                           PUSH (option (map address nat)) (Some {}) ;
595
                           DUP 6 ;
596
                           CAR ;
597
                           UPDATE ;
598
                           SWAP ;
599
                           PAIR ;
600
                           PAIR ;
601
                           PAIR ;
602
                           SWAP } ;
603
                       SWAP ;
604
                       DUP ;
605
                       DUG 2 ;
606
                       CAR ;
607
                       GET 3 ;
608
                       SWAP ;
609
                       DUP ;
610
                       DUG 2 ;
611
                       CAR ;
612
                       GET ;
613
                       IF_NONE { PUSH int 244 ; FAILWITH } {} ;
614
                       NIL operation ;
615
                       DIG 2 ;
616
                       CDR ;
617
                       PUSH mutez 0 ;
618
                       DIG 3 ;
619
                       TRANSFER_TOKENS ;
620
                       CONS }
621
                     { DUP ;
622
                       CAR ;
623
                       CDR ;
624
                       LEVEL ;
625
                       COMPARE ;
626
                       GT ;
627
                       IF {} { PUSH string "xPlenty_Block_Level_Too_Soon" ; FAILWITH } ;
628
                       PUSH nat 0 ;
629
                       DUP 3 ;
630
                       GET 3 ;
631
                       GET 3 ;
632
                       DUP 3 ;
633
                       CAR ;
634
                       CAR ;
635
                       GET ;
636
                       IF_NONE { PUSH nat 0 } {} ;
637
                       COMPARE ;
638
                       EQ ;
639
                       IF
640
                         { DIG 2 ; DROP ; PUSH nat 0 ; SWAP ; DUP ; CAR ; CDR ; SWAP ; DUP ; DUG 3 ; CAR ; CAR ; PAIR 3 }
641
                         { DUP ;
642
                           CAR ;
643
                           CDR ;
644
                           DUP 3 ;
645
                           CAR ;
646
                           GET 5 ;
647
                           PUSH nat 1 ;
648
                           DUP 5 ;
649
                           GET 3 ;
650
                           GET 3 ;
651
                           DUP 5 ;
652
                           CAR ;
653
                           CAR ;
654
                           GET ;
655
                           IF_NONE { PUSH int 133 ; FAILWITH } {} ;
656
                           SUB ;
657
                           ISNAT ;
658
                           IF_NONE { PUSH int 133 ; FAILWITH } {} ;
659
                           DUP 4 ;
660
                           CAR ;
661
                           CAR ;
662
                           PAIR ;
663
                           GET ;
664
                           IF_NONE { PUSH int 133 ; FAILWITH } {} ;
665
                           CAR ;
666
                           COMPARE ;
667
                           LE ;
668
                           IF
669
                             { DIG 2 ;
670
                               DROP ;
671
                               SWAP ;
672
                               DUP ;
673
                               DUG 2 ;
674
                               CAR ;
675
                               GET 5 ;
676
                               PUSH nat 1 ;
677
                               DUP 4 ;
678
                               GET 3 ;
679
                               GET 3 ;
680
                               DUP 4 ;
681
                               CAR ;
682
                               CAR ;
683
                               GET ;
684
                               IF_NONE { PUSH int 134 ; FAILWITH } {} ;
685
                               SUB ;
686
                               ISNAT ;
687
                               IF_NONE { PUSH int 134 ; FAILWITH } {} ;
688
                               DUP 3 ;
689
                               CAR ;
690
                               CAR ;
691
                               PAIR ;
692
                               GET ;
693
                               IF_NONE { PUSH int 134 ; FAILWITH } {} ;
694
                               CDR ;
695
                               SWAP ;
696
                               DUP ;
697
                               CAR ;
698
                               CDR ;
699
                               SWAP ;
700
                               DUP ;
701
                               DUG 3 ;
702
                               CAR ;
703
                               CAR ;
704
                               PAIR 3 }
705
                             { DUP ;
706
                               CAR ;
707
                               CDR ;
708
                               DUP 3 ;
709
                               CAR ;
710
                               GET 5 ;
711
                               PUSH nat 0 ;
712
                               DUP 4 ;
713
                               CAR ;
714
                               CAR ;
715
                               PAIR ;
716
                               GET ;
717
                               IF_NONE { PUSH int 141 ; FAILWITH } {} ;
718
                               CAR ;
719
                               COMPARE ;
720
                               GT ;
721
                               IF
722
                                 { DIG 2 ;
723
                                   DROP ;
724
                                   PUSH nat 0 ;
725
                                   SWAP ;
726
                                   DUP ;
727
                                   CAR ;
728
                                   CDR ;
729
                                   SWAP ;
730
                                   DUP ;
731
                                   DUG 3 ;
732
                                   CAR ;
733
                                   CAR ;
734
                                   PAIR 3 }
735
                                 { PUSH bool False ;
736
                                   PUSH nat 0 ;
737
                                   PUSH nat 0 ;
738
                                   PUSH nat 1 ;
739
                                   DUP 6 ;
740
                                   GET 3 ;
741
                                   GET 3 ;
742
                                   DUP 6 ;
743
                                   CAR ;
744
                                   CAR ;
745
                                   GET ;
746
                                   IF_NONE { PUSH int 152 ; FAILWITH } {} ;
747
                                   SUB ;
748
                                   ISNAT ;
749
                                   IF_NONE { PUSH int 152 ; FAILWITH } {} ;
750
                                   SWAP ;
751
                                   DUP ;
752
                                   DUG 2 ;
753
                                   SWAP ;
754
                                   DUP ;
755
                                   DUG 2 ;
756
                                   COMPARE ;
757
                                   GT ;
758
                                   IF
759
                                     { PUSH bool False ; DUP 5 ; COMPARE ; EQ }
760
                                     { PUSH bool False } ;
761
                                   LOOP { DIG 2 ;
762
                                          DROP ;
763
                                          PUSH nat 2 ;
764
                                          DUP 3 ;
765
                                          DUP 3 ;
766
                                          SUB ;
767
                                          ISNAT ;
768
                                          IF_NONE { PUSH int 156 ; FAILWITH } {} ;
769
                                          EDIV ;
770
                                          IF_NONE { PUSH int 156 ; FAILWITH } { CAR } ;
771
                                          SWAP ;
772
                                          DUP ;
773
                                          DUG 2 ;
774
                                          SUB ;
775
                                          ISNAT ;
776
                                          IF_NONE { PUSH int 156 ; FAILWITH } {} ;
777
                                          DUG 2 ;
778
                                          DUP 5 ;
779
                                          CAR ;
780
                                          CDR ;
781
                                          DUP 7 ;
782
                                          CAR ;
783
                                          GET 5 ;
784
                                          DUP 5 ;
785
                                          DUP 8 ;
786
                                          CAR ;
787
                                          CAR ;
788
                                          PAIR ;
789
                                          GET ;
790
                                          IF_NONE { PUSH int 159 ; FAILWITH } {} ;
791
                                          CAR ;
792
                                          COMPARE ;
793
                                          EQ ;
794
                                          IF
795
                                            { DIG 3 ; DROP ; PUSH bool True ; DUG 3 }
796
                                            { DUP 5 ;
797
                                              CAR ;
798
                                              CDR ;
799
                                              DUP 7 ;
800
                                              CAR ;
801
                                              GET 5 ;
802
                                              DUP 5 ;
803
                                              DUP 8 ;
804
                                              CAR ;
805
                                              CAR ;
806
                                              PAIR ;
807
                                              GET ;
808
                                              IF_NONE { PUSH int 162 ; FAILWITH } {} ;
809
                                              CAR ;
810
                                              COMPARE ;
811
                                              LT ;
812
                                              IF
813
                                                { SWAP ; DROP ; SWAP ; DUP ; DUG 2 ; SWAP }
814
                                                { DROP ;
815
                                                  PUSH nat 1 ;
816
                                                  DUP 3 ;
817
                                                  SUB ;
818
                                                  ISNAT ;
819
                                                  IF_NONE
820
                                                    { PUSH int 165 ; FAILWITH }
821
                                                    {} } } ;
822
                                          SWAP ;
823
                                          DUP ;
824
                                          DUG 2 ;
825
                                          SWAP ;
826
                                          DUP ;
827
                                          DUG 2 ;
828
                                          COMPARE ;
829
                                          GT ;
830
                                          IF
831
                                            { PUSH bool False ; DUP 5 ; COMPARE ; EQ }
832
                                            { PUSH bool False } } ;
833
                                   DROP ;
834
                                   PUSH bool True ;
835
                                   DUP 4 ;
836
                                   COMPARE ;
837
                                   EQ ;
838
                                   IF
839
                                     { DROP ;
840
                                       SWAP ;
841
                                       DROP ;
842
                                       DIG 3 ;
843
                                       DROP ;
844
                                       DUP 3 ;
845
                                       CAR ;
846
                                       GET 5 ;
847
                                       SWAP ;
848
                                       DUP 3 ;
849
                                       CAR ;
850
                                       CAR ;
851
                                       PAIR ;
852
                                       GET ;
853
                                       IF_NONE { PUSH int 169 ; FAILWITH } {} ;
854
                                       CDR ;
855
                                       SWAP ;
856
                                       DUP ;
857
                                       CAR ;
858
                                       CDR ;
859
                                       SWAP ;
860
                                       DUP ;
861
                                       DUG 3 ;
862
                                       CAR ;
863
                                       CAR ;
864
                                       PAIR 3 }
865
                                     { SWAP ;
866
                                       DROP ;
867
                                       SWAP ;
868
                                       DROP ;
869
                                       DIG 3 ;
870
                                       DROP ;
871
                                       DUP 3 ;
872
                                       CAR ;
873
                                       GET 5 ;
874
                                       SWAP ;
875
                                       DUP 3 ;
876
                                       CAR ;
877
                                       CAR ;
878
                                       PAIR ;
879
                                       GET ;
880
                                       IF_NONE { PUSH int 178 ; FAILWITH } {} ;
881
                                       CDR ;
882
                                       SWAP ;
883
                                       DUP ;
884
                                       CAR ;
885
                                       CDR ;
886
                                       SWAP ;
887
                                       DUP ;
888
                                       DUG 3 ;
889
                                       CAR ;
890
                                       CAR ;
891
                                       PAIR 3 } } } } ;
892
                       NIL operation ;
893
                       DIG 2 ;
894
                       CDR ;
895
                       PUSH mutez 0 ;
896
                       DIG 3 ;
897
                       TRANSFER_TOKENS ;
898
                       CONS } } } }
899
         { IF_LEFT
900
             { IF_LEFT
901
                 { DIG 2 ;
902
                   DROP ;
903
                   SWAP ;
904
                   DUP ;
905
                   DUG 2 ;
906
                   GET 8 ;
907
                   NIL operation ;
908
                   DIG 2 ;
909
                   CDR ;
910
                   PUSH mutez 0 ;
911
                   DIG 3 ;
912
                   TRANSFER_TOKENS ;
913
                   CONS }
914
                 { IF_LEFT
915
                     { SWAP ;
916
                       DUP ;
917
                       DUG 2 ;
918
                       CAR ;
919
                       GET 6 ;
920
                       SENDER ;
921
                       COMPARE ;
922
                       EQ ;
923
                       IF {} { PUSH string "xPlenty_NotExchange" ; FAILWITH } ;
924
                       SWAP ;
925
                       DUP ;
926
                       DUG 2 ;
927
                       CAR ;
928
                       GET 3 ;
929
                       SWAP ;
930
                       DUP ;
931
                       DUG 2 ;
932
                       CAR ;
933
                       MEM ;
934
                       IF
935
                         {}
936
                         { SWAP ;
937
                           UNPAIR ;
938
                           UNPAIR ;
939
                           SWAP ;
940
                           UNPAIR ;
941
                           PUSH (option nat) (Some 0) ;
942
                           DUP 6 ;
943
                           CAR ;
944
                           UPDATE ;
945
                           PAIR ;
946
                           SWAP ;
947
                           UNPAIR ;
948
                           SWAP ;
949
                           PUSH (option (map address nat)) (Some {}) ;
950
                           DUP 6 ;
951
                           CAR ;
952
                           UPDATE ;
953
                           SWAP ;
954
                           PAIR ;
955
                           PAIR ;
956
                           PAIR ;
957
                           SWAP } ;
958
                       SWAP ;
959
                       UNPAIR ;
960
                       UNPAIR ;
961
                       SWAP ;
962
                       UNPAIR ;
963
                       DUP ;
964
                       DUP 6 ;
965
                       CAR ;
966
                       DUP ;
967
                       DUG 2 ;
968
                       GET ;
969
                       IF_NONE { PUSH int 330 ; FAILWITH } {} ;
970
                       DUP 7 ;
971
                       CDR ;
972
                       ADD ;
973
                       SOME ;
974
                       SWAP ;
975
                       UPDATE ;
976
                       PAIR ;
977
                       SWAP ;
978
                       PAIR ;
979
                       PAIR ;
980
                       DUP ;
981
                       GET 8 ;
982
                       DUP 3 ;
983
                       CDR ;
984
                       ADD ;
985
                       UPDATE 8 ;
986
                       SWAP ;
987
                       DUG 2 ;
988
                       DUP ;
989
                       DUP ;
990
                       DUG 4 ;
991
                       CAR ;
992
                       GET 3 ;
993
                       DUP 4 ;
994
                       CAR ;
995
                       GET ;
996
                       IF_NONE { PUSH int 335 ; FAILWITH } {} ;
997
                       DIG 4 ;
998
                       GET 3 ;
999
                       GET 3 ;
1000
                       DUP 5 ;
1001
                       CAR ;
1002
                       GET ;
1003
                       IF_NONE { PUSH nat 0 } {} ;
1004
                       DIG 4 ;
1005
                       CAR ;
1006
                       PAIR 3 ;
1007
                       PAIR ;
1008
                       EXEC ;
1009
                       DUP ;
1010
                       GET 4 ;
1011
                       SWAP ;
1012
                       CAR }
1013
                     { DIG 2 ;
1014
                       DROP ;
1015
                       SWAP ;
1016
                       DUP ;
1017
                       DUG 2 ;
1018
                       CAR ;
1019
                       CAR ;
1020
                       CAR ;
1021
                       SENDER ;
1022
                       COMPARE ;
1023
                       EQ ;
1024
                       IF {} { PUSH string "xPlenty_NotAdmin" ; FAILWITH } ;
1025
                       SWAP ;
1026
                       UNPAIR ;
1027
                       UNPAIR ;
1028
                       CDR ;
1029
                       DIG 3 ;
1030
                       PAIR ;
1031
                       PAIR ;
1032
                       PAIR ;
1033
                       NIL operation } } }
1034
             { IF_LEFT
1035
                 { IF_LEFT
1036
                     { DIG 2 ;
1037
                       DROP ;
1038
                       SWAP ;
1039
                       DUP ;
1040
                       DUG 2 ;
1041
                       CAR ;
1042
                       CAR ;
1043
                       CAR ;
1044
                       SENDER ;
1045
                       COMPARE ;
1046
                       EQ ;
1047
                       IF {} { PUSH string "xPlenty_NotAdmin" ; FAILWITH } ;
1048
                       SWAP ;
1049
                       UNPAIR ;
1050
                       SWAP ;
1051
                       UNPAIR ;
1052
                       UNPAIR ;
1053
                       SWAP ;
1054
                       CAR ;
1055
                       DIG 4 ;
1056
                       SWAP ;
1057
                       PAIR ;
1058
                       SWAP ;
1059
                       PAIR ;
1060
                       PAIR ;
1061
                       SWAP ;
1062
                       PAIR ;
1063
                       NIL operation }
1064
                     { SWAP ;
1065
                       DUP ;
1066
                       DUG 2 ;
1067
                       GET 3 ;
1068
                       GET 4 ;
1069
                       IF
1070
                         { PUSH bool False }
1071
                         { DUP ;
1072
                           CAR ;
1073
                           SENDER ;
1074
                           COMPARE ;
1075
                           EQ ;
1076
                           IF
1077
                             { PUSH bool True }
1078
                             { DUP ;
1079
                               GET 4 ;
1080
                               DUP 3 ;
1081
                               CAR ;
1082
                               CAR ;
1083
                               CDR ;
1084
                               DUP 3 ;
1085
                               CAR ;
1086
                               GET ;
1087
                               IF_NONE { PUSH int 189 ; FAILWITH } {} ;
1088
                               SENDER ;
1089
                               GET ;
1090
                               IF_NONE { PUSH int 189 ; FAILWITH } {} ;
1091
                               COMPARE ;
1092
                               GE } } ;
1093
                       IF {} { PUSH string "xPlenty_Not_Allowed" ; FAILWITH } ;
1094
                       SWAP ;
1095
                       DUP ;
1096
                       DUG 2 ;
1097
                       CAR ;
1098
                       GET 3 ;
1099
                       SWAP ;
1100
                       DUP ;
1101
                       DUG 2 ;
1102
                       GET 3 ;
1103
                       MEM ;
1104
                       IF
1105
                         {}
1106
                         { SWAP ;
1107
                           UNPAIR ;
1108
                           UNPAIR ;
1109
                           SWAP ;
1110
                           UNPAIR ;
1111
                           PUSH (option nat) (Some 0) ;
1112
                           DUP 6 ;
1113
                           GET 3 ;
1114
                           UPDATE ;
1115
                           PAIR ;
1116
                           SWAP ;
1117
                           UNPAIR ;
1118
                           SWAP ;
1119
                           PUSH (option (map address nat)) (Some {}) ;
1120
                           DUP 6 ;
1121
                           GET 3 ;
1122
                           UPDATE ;
1123
                           SWAP ;
1124
                           PAIR ;
1125
                           PAIR ;
1126
                           PAIR ;
1127
                           SWAP } ;
1128
                       SWAP ;
1129
                       DUP ;
1130
                       DUG 2 ;
1131
                       CAR ;
1132
                       GET 3 ;
1133
                       SWAP ;
1134
                       DUP ;
1135
                       DUG 2 ;
1136
                       CAR ;
1137
                       MEM ;
1138
                       IF
1139
                         {}
1140
                         { SWAP ;
1141
                           UNPAIR ;
1142
                           UNPAIR ;
1143
                           SWAP ;
1144
                           UNPAIR ;
1145
                           PUSH (option nat) (Some 0) ;
1146
                           DUP 6 ;
1147
                           CAR ;
1148
                           UPDATE ;
1149
                           PAIR ;
1150
                           SWAP ;
1151
                           UNPAIR ;
1152
                           SWAP ;
1153
                           PUSH (option (map address nat)) (Some {}) ;
1154
                           DUP 6 ;
1155
                           CAR ;
1156
                           UPDATE ;
1157
                           SWAP ;
1158
                           PAIR ;
1159
                           PAIR ;
1160
                           PAIR ;
1161
                           SWAP } ;
1162
                       DUP ;
1163
                       GET 4 ;
1164
                       DUP 3 ;
1165
                       CAR ;
1166
                       GET 3 ;
1167
                       DUP 3 ;
1168
                       CAR ;
1169
                       GET ;
1170
                       IF_NONE { PUSH int 198 ; FAILWITH } {} ;
1171
                       COMPARE ;
1172
                       GE ;
1173
                       IF {} { PUSH string "xPlenty_InsufficientBalance" ; FAILWITH } ;
1174
                       SWAP ;
1175
                       DUP ;
1176
                       DUG 2 ;
1177
                       UNPAIR ;
1178
                       UNPAIR ;
1179
                       SWAP ;
1180
                       UNPAIR ;
1181
                       DUP 5 ;
1182
                       GET 4 ;
1183
                       DIG 6 ;
1184
                       CAR ;
1185
                       GET 3 ;
1186
                       DUP 7 ;
1187
                       CAR ;
1188
                       GET ;
1189
                       IF_NONE { PUSH int 199 ; FAILWITH } {} ;
1190
                       SUB ;
1191
                       ISNAT ;
1192
                       IF_NONE { PUSH int 199 ; FAILWITH } {} ;
1193
                       SOME ;
1194
                       DUP 6 ;
1195
                       CAR ;
1196
                       UPDATE ;
1197
                       DUP ;
1198
                       DUP 6 ;
1199
                       GET 3 ;
1200
                       DUP ;
1201
                       DUG 2 ;
1202
                       GET ;
1203
                       IF_NONE { PUSH int 200 ; FAILWITH } {} ;
1204
                       DUP 7 ;
1205
                       GET 4 ;
1206
                       ADD ;
1207
                       SOME ;
1208
                       SWAP ;
1209
                       UPDATE ;
1210
                       PAIR ;
1211
                       SWAP ;
1212
                       PAIR ;
1213
                       PAIR ;
1214
                       SWAP ;
1215
                       DUP ;
1216
                       CAR ;
1217
                       SENDER ;
1218
                       COMPARE ;
1219
                       NEQ ;
1220
                       IF
1221
                         { SWAP ;
1222
                           DUP ;
1223
                           DUG 2 ;
1224
                           UNPAIR ;
1225
                           UNPAIR ;
1226
                           UNPAIR ;
1227
                           SWAP ;
1228
                           DUP ;
1229
                           DUP 6 ;
1230
                           CAR ;
1231
                           DUP ;
1232
                           DUG 2 ;
1233
                           GET ;
1234
                           IF_NONE { PUSH int 202 ; FAILWITH } {} ;
1235
                           DUP 7 ;
1236
                           GET 4 ;
1237
                           DIG 8 ;
1238
                           CAR ;
1239
                           CAR ;
1240
                           CDR ;
1241
                           DUP 9 ;
1242
                           CAR ;
1243
                           GET ;
1244
                           IF_NONE { PUSH int 202 ; FAILWITH } {} ;
1245
                           SENDER ;
1246
                           GET ;
1247
                           IF_NONE { PUSH int 202 ; FAILWITH } {} ;
1248
                           SUB ;
1249
                           ISNAT ;
1250
                           IF_NONE { PUSH int 202 ; FAILWITH } {} ;
1251
                           SOME ;
1252
                           SENDER ;
1253
                           UPDATE ;
1254
                           SOME ;
1255
                           SWAP ;
1256
                           UPDATE ;
1257
                           SWAP ;
1258
                           PAIR ;
1259
                           PAIR ;
1260
                           PAIR ;
1261
                           SWAP }
1262
                         {} ;
1263
                       DUP 3 ;
1264
                       DIG 2 ;
1265
                       DUP ;
1266
                       DUP ;
1267
                       DUG 4 ;
1268
                       CAR ;
1269
                       GET 3 ;
1270
                       DUP 4 ;
1271
                       CAR ;
1272
                       GET ;
1273
                       IF_NONE { PUSH int 206 ; FAILWITH } {} ;
1274
                       DIG 4 ;
1275
                       GET 3 ;
1276
                       GET 3 ;
1277
                       DUP 5 ;
1278
                       CAR ;
1279
                       GET ;
1280
                       IF_NONE { PUSH nat 0 } {} ;
1281
                       DUP 5 ;
1282
                       CAR ;
1283
                       PAIR 3 ;
1284
                       PAIR ;
1285
                       EXEC ;
1286
                       DUP ;
1287
                       GET 4 ;
1288
                       DUG 2 ;
1289
                       DUP ;
1290
                       CAR ;
1291
                       DUP 5 ;
1292
                       DIG 4 ;
1293
                       DUP ;
1294
                       DUP ;
1295
                       DUG 6 ;
1296
                       CAR ;
1297
                       GET 3 ;
1298
                       DUP 6 ;
1299
                       GET 3 ;
1300
                       GET ;
1301
                       IF_NONE { PUSH int 214 ; FAILWITH } {} ;
1302
                       DIG 6 ;
1303
                       GET 3 ;
1304
                       GET 3 ;
1305
                       DUP 7 ;
1306
                       GET 3 ;
1307
                       GET ;
1308
                       IF_NONE { PUSH nat 0 } {} ;
1309
                       DUP 7 ;
1310
                       GET 3 ;
1311
                       PAIR 3 ;
1312
                       PAIR ;
1313
                       EXEC ;
1314
                       DUP ;
1315
                       GET 4 ;
1316
                       DUG 4 ;
1317
                       DUP ;
1318
                       CAR ;
1319
                       NIL operation ;
1320
                       SWAP ;
1321
                       ITER { CONS } ;
1322
                       ITER { DIG 2 ; SWAP ; CONS ; SWAP } ;
1323
                       DROP ;
1324
                       SWAP ;
1325
                       DROP ;
1326
                       SWAP ;
1327
                       DROP ;
1328
                       DIG 2 ;
1329
                       DROP } }
1330
                 { DIG 2 ;
1331
                   DROP ;
1332
                   IF_LEFT
1333
                     { SWAP ;
1334
                       DUP ;
1335
                       DUG 2 ;
1336
                       CAR ;
1337
                       CAR ;
1338
                       CAR ;
1339
                       SENDER ;
1340
                       COMPARE ;
1341
                       EQ ;
1342
                       IF {} { PUSH string "xPlenty_NotAdmin" ; FAILWITH } ;
1343
                       PUSH bool False ;
1344
                       DUP 3 ;
1345
                       GET 5 ;
1346
                       COMPARE ;
1347
                       EQ ;
1348
                       IF {} { PUSH string "xPlenty_CannotUpdate" ; FAILWITH } ;
1349
                       SWAP ;
1350
                       UNPAIR ;
1351
                       UNPAIR ;
1352
                       SWAP ;
1353
                       UNPAIR ;
1354
                       SWAP ;
1355
                       CAR ;
1356
                       DIG 4 ;
1357
                       SWAP ;
1358
                       PAIR ;
1359
                       SWAP ;
1360
                       PAIR ;
1361
                       SWAP ;
1362
                       PAIR ;
1363
                       PAIR ;
1364
                       PUSH bool True ;
1365
                       UPDATE 5 }
1366
                     { SWAP ;
1367
                       DUP ;
1368
                       DUG 2 ;
1369
                       CAR ;
1370
                       CAR ;
1371
                       CAR ;
1372
                       SENDER ;
1373
                       COMPARE ;
1374
                       EQ ;
1375
                       IF {} { PUSH string "xPlenty_NotAdmin" ; FAILWITH } ;
1376
                       SWAP ;
1377
                       UNPAIR ;
1378
                       SWAP ;
1379
                       UNPAIR ;
1380
                       UNPAIR ;
1381
                       DUP 5 ;
1382
                       CDR ;
1383
                       SOME ;
1384
                       DIG 5 ;
1385
                       CAR ;
1386
                       UPDATE ;
1387
                       PAIR ;
1388
                       PAIR ;
1389
                       SWAP ;
1390
                       PAIR } ;
1391
                   NIL operation } } } ;
1392
       NIL operation ;
1393
       SWAP ;
1394
       ITER { CONS } ;
1395
       PAIR }