BCD

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