BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1GH6d...BU3Q
operations (48)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
1282
 
1
parameter (or
2
            (or (or (string %claimFees) (nat %ownerWithdraw))
3
                (or (string %provideLiquidity) (address %setOwnerAddress)))
4
            (or
5
              (or
6
                (pair %transferAmountToContract (bytes %args1)
7
                                                (pair (string %args2) (string %args3)))
8
                (pair %withdrawal (string %args1)
9
                                  (pair (string %args2)
10
                                        (pair (bytes %args3)
11
                                              (pair (string %args4)
12
                                                    (pair (string %args5) (nat %args6)))))))
13
              (pair %withdrawalLiquidity (string %args1) (nat %args2))));
14
storage (pair
15
          (pair
16
            (pair (set %checkMap bytes)
17
                  (pair %liquidityPot
18
                    (pair (pair (nat %liquidityBracketOne) (nat %liquidityBracketThree))
19
                          (pair (nat %liquidityBracketTwo) (nat %liquidityOfAllBrackets)))
20
                    (nat %totalFeepot)))
21
            (pair
22
              (big_map %liquidityUserData string
23
                                          (pair
24
                                            (pair (timestamp %lastClaimed)
25
                                                  (string %liquidityBracket))
26
                                            (pair (nat %storedAmount)
27
                                                  (address %userAddress))))
28
              (pair %ownerData (address %ownerAddress) (nat %totalFeepot))))
29
          (pair
30
            (pair %statistic
31
              (pair (pair (nat %claimedFees) (nat %totalLiquidityOfAllBrackets))
32
                    (pair (nat %totalMixingAmount) (nat %totalUser)))
33
              (nat %transactionsCount))
34
            (big_map %userData bytes
35
                               (pair (pair (string %identifier) (string %senderAddress))
36
                                     (nat %storedAmount)))));
37
code { PUSH nat 1000000000000000000 ;
38
       LAMBDA
39
         (pair string
40
               (pair
41
                 (pair
42
                   (pair (set bytes) (pair (pair (pair nat nat) (pair nat nat)) nat))
43
                   (pair
44
                     (big_map string (pair (pair timestamp string) (pair nat address)))
45
                     (pair address nat)))
46
                 (pair (pair (pair (pair nat nat) (pair nat nat)) nat)
47
                       (big_map bytes (pair (pair string string) nat)))))
48
         (pair (pair timestamp string) (pair nat address))
49
         { DUP ;
50
           CDR ;
51
           CAR ;
52
           CDR ;
53
           CAR ;
54
           SWAP ;
55
           CAR ;
56
           GET ;
57
           IF_NONE { PUSH string "Access denied." ; FAILWITH } {} } ;
58
       LAMBDA
59
         string
60
         bytes
61
         { DUP ;
62
           PACK ;
63
           SWAP ;
64
           SIZE ;
65
           PUSH nat 6 ;
66
           SLICE ;
67
           IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
68
           SHA256 } ;
69
       LAMBDA
70
         mutez
71
         nat
72
         { PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ;
73
       LAMBDA nat mutez { PUSH mutez 1 ; SWAP ; MUL } ;
74
       LAMBDA
75
         nat
76
         string
77
         { PUSH nat 0 ;
78
           SWAP ;
79
           DUP ;
80
           DUG 2 ;
81
           COMPARE ;
82
           GT ;
83
           IF
84
             {}
85
             { PUSH string "Liquidity provided must be greater than zero." ; FAILWITH } ;
86
           PUSH nat 50000000 ;
87
           SWAP ;
88
           DUP ;
89
           DUG 2 ;
90
           COMPARE ;
91
           LE ;
92
           IF
93
             { DROP ; PUSH string "1" }
94
             { PUSH nat 300000000 ;
95
               SWAP ;
96
               DUP ;
97
               DUG 2 ;
98
               COMPARE ;
99
               LE ;
100
               PUSH nat 50000000 ;
101
               DIG 2 ;
102
               COMPARE ;
103
               GT ;
104
               AND ;
105
               IF { PUSH string "2" } { PUSH string "3" } } } ;
106
       LAMBDA
107
         (pair (pair nat string)
108
               (pair
109
                 (pair
110
                   (pair (set bytes) (pair (pair (pair nat nat) (pair nat nat)) nat))
111
                   (pair
112
                     (big_map string (pair (pair timestamp string) (pair nat address)))
113
                     (pair address nat)))
114
                 (pair (pair (pair (pair nat nat) (pair nat nat)) nat)
115
                       (big_map bytes (pair (pair string string) nat)))))
116
         (pair
117
           (pair (pair (set bytes) (pair (pair (pair nat nat) (pair nat nat)) nat))
118
                 (pair
119
                   (big_map string (pair (pair timestamp string) (pair nat address)))
120
                   (pair address nat)))
121
           (pair (pair (pair (pair nat nat) (pair nat nat)) nat)
122
                 (big_map bytes (pair (pair string string) nat))))
123
         { DUP ;
124
           CAR ;
125
           CAR ;
126
           SWAP ;
127
           DUP ;
128
           DUG 2 ;
129
           CAR ;
130
           CDR ;
131
           DIG 2 ;
132
           CDR ;
133
           DUP ;
134
           CAR ;
135
           CAR ;
136
           CDR ;
137
           PUSH string "1" ;
138
           DIG 3 ;
139
           DUP ;
140
           DUG 4 ;
141
           COMPARE ;
142
           EQ ;
143
           IF
144
             { DIG 2 ;
145
               DROP ;
146
               DUP ;
147
               CDR ;
148
               SWAP ;
149
               DUP ;
150
               DUG 2 ;
151
               CAR ;
152
               CDR ;
153
               DIG 2 ;
154
               DUP ;
155
               DUG 3 ;
156
               CAR ;
157
               CAR ;
158
               CDR ;
159
               DIG 5 ;
160
               DUP ;
161
               DUG 6 ;
162
               DIG 4 ;
163
               CAR ;
164
               CAR ;
165
               CAR ;
166
               ADD ;
167
               PAIR ;
168
               PAIR ;
169
               PAIR }
170
             { PUSH string "2" ;
171
               DIG 3 ;
172
               COMPARE ;
173
               EQ ;
174
               IF
175
                 { DUP ;
176
                   CDR ;
177
                   SWAP ;
178
                   DUP ;
179
                   DUG 2 ;
180
                   CAR ;
181
                   CDR ;
182
                   CDR ;
183
                   DIG 4 ;
184
                   DUP ;
185
                   DUG 5 ;
186
                   DIG 3 ;
187
                   DUP ;
188
                   DUG 4 ;
189
                   CAR ;
190
                   CDR ;
191
                   CAR ;
192
                   ADD ;
193
                   PAIR ;
194
                   DIG 2 ;
195
                   CAR ;
196
                   CAR ;
197
                   PAIR ;
198
                   PAIR }
199
                 { DUP ;
200
                   CDR ;
201
                   SWAP ;
202
                   DUP ;
203
                   DUG 2 ;
204
                   CAR ;
205
                   CDR ;
206
                   DIG 4 ;
207
                   DUP ;
208
                   DUG 5 ;
209
                   DIG 3 ;
210
                   DUP ;
211
                   DUG 4 ;
212
                   CAR ;
213
                   CAR ;
214
                   CDR ;
215
                   ADD ;
216
                   DIG 3 ;
217
                   CAR ;
218
                   CAR ;
219
                   CAR ;
220
                   PAIR ;
221
                   PAIR ;
222
                   PAIR } } ;
223
           DUP ;
224
           CDR ;
225
           SWAP ;
226
           DUP ;
227
           DUG 2 ;
228
           CAR ;
229
           CAR ;
230
           CDR ;
231
           DIG 2 ;
232
           DUP ;
233
           DUG 3 ;
234
           CAR ;
235
           CDR ;
236
           CAR ;
237
           DIG 3 ;
238
           DUP ;
239
           DUG 4 ;
240
           CAR ;
241
           CAR ;
242
           CAR ;
243
           ADD ;
244
           ADD ;
245
           DIG 2 ;
246
           DUP ;
247
           DUG 3 ;
248
           CAR ;
249
           CDR ;
250
           CAR ;
251
           PAIR ;
252
           DIG 2 ;
253
           CAR ;
254
           CAR ;
255
           PAIR ;
256
           PAIR ;
257
           SWAP ;
258
           DUP ;
259
           DUG 2 ;
260
           CDR ;
261
           DIG 2 ;
262
           DUP ;
263
           DUG 3 ;
264
           CAR ;
265
           CDR ;
266
           DIG 2 ;
267
           DIG 3 ;
268
           CAR ;
269
           CAR ;
270
           CAR ;
271
           PAIR ;
272
           PAIR ;
273
           PAIR ;
274
           DUP ;
275
           CDR ;
276
           CDR ;
277
           SWAP ;
278
           DUP ;
279
           DUG 2 ;
280
           CDR ;
281
           CAR ;
282
           CDR ;
283
           DIG 2 ;
284
           DUP ;
285
           DUG 3 ;
286
           CDR ;
287
           CAR ;
288
           CAR ;
289
           CDR ;
290
           DIG 4 ;
291
           DIG 4 ;
292
           DUP ;
293
           DUG 5 ;
294
           CDR ;
295
           CAR ;
296
           CAR ;
297
           CAR ;
298
           CDR ;
299
           ADD ;
300
           DIG 4 ;
301
           DUP ;
302
           DUG 5 ;
303
           CDR ;
304
           CAR ;
305
           CAR ;
306
           CAR ;
307
           CAR ;
308
           PAIR ;
309
           PAIR ;
310
           PAIR ;
311
           PAIR ;
312
           SWAP ;
313
           CAR ;
314
           PAIR } ;
315
       LAMBDA
316
         (pair (pair nat string)
317
               (pair
318
                 (pair
319
                   (pair (set bytes) (pair (pair (pair nat nat) (pair nat nat)) nat))
320
                   (pair
321
                     (big_map string (pair (pair timestamp string) (pair nat address)))
322
                     (pair address nat)))
323
                 (pair (pair (pair (pair nat nat) (pair nat nat)) nat)
324
                       (big_map bytes (pair (pair string string) nat)))))
325
         (pair
326
           (pair (pair (set bytes) (pair (pair (pair nat nat) (pair nat nat)) nat))
327
                 (pair
328
                   (big_map string (pair (pair timestamp string) (pair nat address)))
329
                   (pair address nat)))
330
           (pair (pair (pair (pair nat nat) (pair nat nat)) nat)
331
                 (big_map bytes (pair (pair string string) nat))))
332
         { DUP ;
333
           CAR ;
334
           CAR ;
335
           SWAP ;
336
           DUP ;
337
           DUG 2 ;
338
           CAR ;
339
           CDR ;
340
           DIG 2 ;
341
           CDR ;
342
           DUP ;
343
           CAR ;
344
           CAR ;
345
           CDR ;
346
           PUSH string "1" ;
347
           DIG 3 ;
348
           DUP ;
349
           DUG 4 ;
350
           COMPARE ;
351
           EQ ;
352
           IF
353
             { DIG 2 ;
354
               DROP ;
355
               DUP ;
356
               CDR ;
357
               SWAP ;
358
               DUP ;
359
               DUG 2 ;
360
               CAR ;
361
               CDR ;
362
               DIG 2 ;
363
               DUP ;
364
               DUG 3 ;
365
               CAR ;
366
               CAR ;
367
               CDR ;
368
               DIG 5 ;
369
               DUP ;
370
               DUG 6 ;
371
               DIG 4 ;
372
               CAR ;
373
               CAR ;
374
               CAR ;
375
               SUB ;
376
               ABS ;
377
               PAIR ;
378
               PAIR ;
379
               PAIR }
380
             { PUSH string "2" ;
381
               DIG 3 ;
382
               COMPARE ;
383
               EQ ;
384
               IF
385
                 { DUP ;
386
                   CDR ;
387
                   SWAP ;
388
                   DUP ;
389
                   DUG 2 ;
390
                   CAR ;
391
                   CDR ;
392
                   CDR ;
393
                   DIG 4 ;
394
                   DUP ;
395
                   DUG 5 ;
396
                   DIG 3 ;
397
                   DUP ;
398
                   DUG 4 ;
399
                   CAR ;
400
                   CDR ;
401
                   CAR ;
402
                   SUB ;
403
                   ABS ;
404
                   PAIR ;
405
                   DIG 2 ;
406
                   CAR ;
407
                   CAR ;
408
                   PAIR ;
409
                   PAIR }
410
                 { DUP ;
411
                   CDR ;
412
                   SWAP ;
413
                   DUP ;
414
                   DUG 2 ;
415
                   CAR ;
416
                   CDR ;
417
                   DIG 4 ;
418
                   DUP ;
419
                   DUG 5 ;
420
                   DIG 3 ;
421
                   DUP ;
422
                   DUG 4 ;
423
                   CAR ;
424
                   CAR ;
425
                   CDR ;
426
                   SUB ;
427
                   ABS ;
428
                   DIG 3 ;
429
                   CAR ;
430
                   CAR ;
431
                   CAR ;
432
                   PAIR ;
433
                   PAIR ;
434
                   PAIR } } ;
435
           SWAP ;
436
           DUP ;
437
           DUG 2 ;
438
           CDR ;
439
           DIG 2 ;
440
           DUP ;
441
           DUG 3 ;
442
           CAR ;
443
           CDR ;
444
           DIG 2 ;
445
           DIG 3 ;
446
           CAR ;
447
           CAR ;
448
           CAR ;
449
           PAIR ;
450
           PAIR ;
451
           PAIR ;
452
           DUP ;
453
           CDR ;
454
           CDR ;
455
           SWAP ;
456
           DUP ;
457
           DUG 2 ;
458
           CDR ;
459
           CAR ;
460
           CDR ;
461
           DIG 2 ;
462
           DUP ;
463
           DUG 3 ;
464
           CDR ;
465
           CAR ;
466
           CAR ;
467
           CDR ;
468
           DIG 4 ;
469
           DIG 4 ;
470
           DUP ;
471
           DUG 5 ;
472
           CDR ;
473
           CAR ;
474
           CAR ;
475
           CAR ;
476
           CDR ;
477
           SUB ;
478
           ABS ;
479
           DIG 4 ;
480
           DUP ;
481
           DUG 5 ;
482
           CDR ;
483
           CAR ;
484
           CAR ;
485
           CAR ;
486
           CAR ;
487
           PAIR ;
488
           PAIR ;
489
           PAIR ;
490
           PAIR ;
491
           SWAP ;
492
           CAR ;
493
           PAIR } ;
494
       DIG 8 ;
495
       DUP ;
496
       DUG 9 ;
497
       CDR ;
498
       DIG 9 ;
499
       CAR ;
500
       IF_LEFT
501
         { DIG 7 ;
502
           DROP ;
503
           IF_LEFT
504
             { DIG 2 ;
505
               DROP ;
506
               DIG 2 ;
507
               DROP ;
508
               DIG 2 ;
509
               DROP ;
510
               DIG 3 ;
511
               DROP ;
512
               IF_LEFT
513
                 { DIG 2 ;
514
                   DROP ;
515
                   SWAP ;
516
                   DUP ;
517
                   DIG 2 ;
518
                   DUP ;
519
                   DUG 3 ;
520
                   PAIR ;
521
                   DIG 3 ;
522
                   SWAP ;
523
                   EXEC ;
524
                   DUP ;
525
                   CAR ;
526
                   CDR ;
527
                   PUSH int 86400 ;
528
                   PUSH string "1" ;
529
                   DIG 2 ;
530
                   DUP ;
531
                   DUG 3 ;
532
                   COMPARE ;
533
                   EQ ;
534
                   IF
535
                     { SWAP ; DROP ; PUSH int 3 ; SWAP ; MUL }
536
                     { PUSH string "2" ; DIG 2 ; COMPARE ; EQ ; IF { PUSH int 2 ; SWAP ; MUL } {} } ;
537
                   SWAP ;
538
                   DUP ;
539
                   DUG 2 ;
540
                   CAR ;
541
                   CAR ;
542
                   ADD ;
543
                   SENDER ;
544
                   DIG 2 ;
545
                   DUP ;
546
                   DUG 3 ;
547
                   CDR ;
548
                   CDR ;
549
                   COMPARE ;
550
                   EQ ;
551
                   IF {} { PUSH string "Access denied." ; FAILWITH } ;
552
                   NOW ;
553
                   SWAP ;
554
                   COMPARE ;
555
                   LT ;
556
                   IF
557
                     {}
558
                     { PUSH string "You are not allowed to claim fees yet." ; FAILWITH } ;
559
                   SWAP ;
560
                   DUP ;
561
                   DUG 2 ;
562
                   SWAP ;
563
                   DUP ;
564
                   DUG 2 ;
565
                   CDR ;
566
                   CAR ;
567
                   DIG 2 ;
568
                   DUP ;
569
                   DUG 3 ;
570
                   CAR ;
571
                   CDR ;
572
                   PAIR ;
573
                   PAIR ;
574
                   DUP ;
575
                   CAR ;
576
                   CAR ;
577
                   SWAP ;
578
                   DUP ;
579
                   DUG 2 ;
580
                   CDR ;
581
                   PUSH string "1" ;
582
                   DIG 2 ;
583
                   DUP ;
584
                   DUG 3 ;
585
                   COMPARE ;
586
                   EQ ;
587
                   IF
588
                     { SWAP ; DROP ; PUSH nat 20 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CAR ; CAR ; CAR ; PAIR }
589
                     { PUSH string "2" ;
590
                       DIG 2 ;
591
                       COMPARE ;
592
                       EQ ;
593
                       IF
594
                         { PUSH nat 33 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CAR ; CDR ; CAR ; PAIR }
595
                         { PUSH nat 47 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CAR ; CAR ; CDR ; PAIR } } ;
596
                   PUSH nat 100 ;
597
                   SWAP ;
598
                   DUP ;
599
                   DUG 2 ;
600
                   CDR ;
601
                   DIG 3 ;
602
                   CAR ;
603
                   CAR ;
604
                   CDR ;
605
                   CDR ;
606
                   MUL ;
607
                   EDIV ;
608
                   IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
609
                   CAR ;
610
                   DIG 6 ;
611
                   DUP ;
612
                   DUG 7 ;
613
                   DIG 3 ;
614
                   CAR ;
615
                   CDR ;
616
                   MUL ;
617
                   DIG 2 ;
618
                   CAR ;
619
                   SWAP ;
620
                   EDIV ;
621
                   IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
622
                   CAR ;
623
                   DIG 5 ;
624
                   SWAP ;
625
                   DIG 2 ;
626
                   MUL ;
627
                   EDIV ;
628
                   IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
629
                   CAR ;
630
                   SWAP ;
631
                   DUP ;
632
                   DUG 2 ;
633
                   CDR ;
634
                   CDR ;
635
                   SWAP ;
636
                   DUP ;
637
                   DUG 2 ;
638
                   DIG 3 ;
639
                   DUP ;
640
                   DUG 4 ;
641
                   CDR ;
642
                   CAR ;
643
                   ADD ;
644
                   PAIR ;
645
                   DIG 2 ;
646
                   CAR ;
647
                   CDR ;
648
                   NOW ;
649
                   PAIR ;
650
                   PAIR ;
651
                   DIG 2 ;
652
                   DUP ;
653
                   DUG 3 ;
654
                   CDR ;
655
                   DIG 3 ;
656
                   DUP ;
657
                   DUG 4 ;
658
                   CAR ;
659
                   CDR ;
660
                   CDR ;
661
                   DIG 4 ;
662
                   DUP ;
663
                   DUG 5 ;
664
                   CAR ;
665
                   CDR ;
666
                   CAR ;
667
                   DIG 3 ;
668
                   DIG 6 ;
669
                   SWAP ;
670
                   SOME ;
671
                   SWAP ;
672
                   UPDATE ;
673
                   PAIR ;
674
                   DIG 3 ;
675
                   CAR ;
676
                   CAR ;
677
                   PAIR ;
678
                   PAIR ;
679
                   DUP ;
680
                   CDR ;
681
                   SWAP ;
682
                   DUP ;
683
                   DUG 2 ;
684
                   CAR ;
685
                   CDR ;
686
                   DIG 3 ;
687
                   DUP ;
688
                   DUG 4 ;
689
                   DIG 3 ;
690
                   DUP ;
691
                   DUG 4 ;
692
                   CAR ;
693
                   CAR ;
694
                   CDR ;
695
                   CDR ;
696
                   SUB ;
697
                   ABS ;
698
                   DIG 3 ;
699
                   DUP ;
700
                   DUG 4 ;
701
                   CAR ;
702
                   CAR ;
703
                   CDR ;
704
                   CAR ;
705
                   PAIR ;
706
                   DIG 3 ;
707
                   CAR ;
708
                   CAR ;
709
                   CAR ;
710
                   PAIR ;
711
                   PAIR ;
712
                   PAIR ;
713
                   DUP ;
714
                   CDR ;
715
                   CDR ;
716
                   SWAP ;
717
                   DUP ;
718
                   DUG 2 ;
719
                   CDR ;
720
                   CAR ;
721
                   CDR ;
722
                   DIG 2 ;
723
                   DUP ;
724
                   DUG 3 ;
725
                   CDR ;
726
                   CAR ;
727
                   CAR ;
728
                   CDR ;
729
                   DIG 3 ;
730
                   DUP ;
731
                   DUG 4 ;
732
                   CDR ;
733
                   CAR ;
734
                   CAR ;
735
                   CAR ;
736
                   CDR ;
737
                   DIG 5 ;
738
                   DIG 5 ;
739
                   DUP ;
740
                   DUG 6 ;
741
                   CDR ;
742
                   CAR ;
743
                   CAR ;
744
                   CAR ;
745
                   CAR ;
746
                   ADD ;
747
                   PAIR ;
748
                   PAIR ;
749
                   PAIR ;
750
                   PAIR ;
751
                   SWAP ;
752
                   CAR ;
753
                   PAIR ;
754
                   NIL operation ;
755
                   PAIR }
756
                 { DIG 3 ;
757
                   DROP ;
758
                   DIG 3 ;
759
                   DROP ;
760
                   SWAP ;
761
                   DUP ;
762
                   CAR ;
763
                   CDR ;
764
                   CDR ;
765
                   CAR ;
766
                   SENDER ;
767
                   COMPARE ;
768
                   EQ ;
769
                   IF {} { PUSH string "Access denied." ; FAILWITH } ;
770
                   DUP ;
771
                   CAR ;
772
                   CDR ;
773
                   CDR ;
774
                   CDR ;
775
                   DIG 2 ;
776
                   DUP ;
777
                   DUG 3 ;
778
                   COMPARE ;
779
                   LE ;
780
                   IF
781
                     {}
782
                     { PUSH string "The amount of tezos you want to withdraw must not exceed the amount in the feepot." ;
783
                       FAILWITH } ;
784
                   SENDER ;
785
                   CONTRACT unit ;
786
                   IF_NONE { PUSH string "Address does not exist." ; FAILWITH } {} ;
787
                   DIG 2 ;
788
                   DUP ;
789
                   DUG 3 ;
790
                   DIG 4 ;
791
                   SWAP ;
792
                   EXEC ;
793
                   UNIT ;
794
                   TRANSFER_TOKENS ;
795
                   SWAP ;
796
                   DUP ;
797
                   DUG 2 ;
798
                   CDR ;
799
                   DIG 3 ;
800
                   DIG 3 ;
801
                   DUP ;
802
                   DUG 4 ;
803
                   CAR ;
804
                   CDR ;
805
                   CDR ;
806
                   CDR ;
807
                   SUB ;
808
                   ABS ;
809
                   DIG 3 ;
810
                   DUP ;
811
                   DUG 4 ;
812
                   CAR ;
813
                   CDR ;
814
                   CDR ;
815
                   CAR ;
816
                   PAIR ;
817
                   DIG 3 ;
818
                   DUP ;
819
                   DUG 4 ;
820
                   CAR ;
821
                   CDR ;
822
                   CAR ;
823
                   PAIR ;
824
                   DIG 3 ;
825
                   CAR ;
826
                   CAR ;
827
                   PAIR ;
828
                   PAIR ;
829
                   NIL operation ;
830
                   DIG 2 ;
831
                   CONS ;
832
                   PAIR } }
833
             { DIG 5 ;
834
               DROP ;
835
               DIG 7 ;
836
               DROP ;
837
               IF_LEFT
838
                 { SWAP ;
839
                   AMOUNT ;
840
                   DIG 6 ;
841
                   SWAP ;
842
                   EXEC ;
843
                   PUSH bool False ;
844
                   DIG 2 ;
845
                   DUP ;
846
                   DUG 3 ;
847
                   DIG 4 ;
848
                   DUP ;
849
                   DUG 5 ;
850
                   PAIR ;
851
                   DUP ;
852
                   CDR ;
853
                   CAR ;
854
                   CDR ;
855
                   CAR ;
856
                   SWAP ;
857
                   CAR ;
858
                   GET ;
859
                   IF_NONE { PUSH bool False } { DROP ; PUSH bool True } ;
860
                   COMPARE ;
861
                   EQ ;
862
                   IF
863
                     { DIG 3 ;
864
                       DROP ;
865
                       DIG 5 ;
866
                       DROP ;
867
                       SENDER ;
868
                       SWAP ;
869
                       DUP ;
870
                       DUG 2 ;
871
                       PAIR ;
872
                       SWAP ;
873
                       DIG 5 ;
874
                       SWAP ;
875
                       EXEC ;
876
                       NOW ;
877
                       PAIR ;
878
                       PAIR ;
879
                       SWAP ;
880
                       DUP ;
881
                       DUG 2 ;
882
                       CDR ;
883
                       DIG 2 ;
884
                       DUP ;
885
                       DUG 3 ;
886
                       CAR ;
887
                       CDR ;
888
                       CDR ;
889
                       DIG 3 ;
890
                       DUP ;
891
                       DUG 4 ;
892
                       CAR ;
893
                       CDR ;
894
                       CAR ;
895
                       DIG 3 ;
896
                       DUP ;
897
                       DUG 4 ;
898
                       DIG 6 ;
899
                       SWAP ;
900
                       SOME ;
901
                       SWAP ;
902
                       UPDATE ;
903
                       PAIR ;
904
                       DIG 3 ;
905
                       CAR ;
906
                       CAR ;
907
                       PAIR ;
908
                       PAIR ;
909
                       SWAP ;
910
                       DUP ;
911
                       DUG 2 ;
912
                       CAR ;
913
                       CDR ;
914
                       DIG 2 ;
915
                       CDR ;
916
                       CAR ;
917
                       PAIR ;
918
                       PAIR ;
919
                       EXEC }
920
                     { SWAP ;
921
                       DUP ;
922
                       DUG 2 ;
923
                       DIG 3 ;
924
                       DUP ;
925
                       DUG 4 ;
926
                       PAIR ;
927
                       DIG 7 ;
928
                       SWAP ;
929
                       EXEC ;
930
                       DIG 2 ;
931
                       SWAP ;
932
                       DUP ;
933
                       DUG 2 ;
934
                       CAR ;
935
                       CDR ;
936
                       DIG 2 ;
937
                       DUP ;
938
                       DUG 3 ;
939
                       CDR ;
940
                       CAR ;
941
                       PAIR ;
942
                       PAIR ;
943
                       DIG 4 ;
944
                       SWAP ;
945
                       EXEC ;
946
                       DUG 2 ;
947
                       DUP ;
948
                       DUG 3 ;
949
                       CDR ;
950
                       CAR ;
951
                       ADD ;
952
                       DIG 2 ;
953
                       DUP ;
954
                       DUG 3 ;
955
                       CDR ;
956
                       CDR ;
957
                       SWAP ;
958
                       DUP ;
959
                       DUG 2 ;
960
                       PAIR ;
961
                       DIG 3 ;
962
                       CAR ;
963
                       PAIR ;
964
                       DUP ;
965
                       CDR ;
966
                       DIG 2 ;
967
                       DIG 6 ;
968
                       SWAP ;
969
                       EXEC ;
970
                       DIG 2 ;
971
                       CAR ;
972
                       CAR ;
973
                       PAIR ;
974
                       CDR ;
975
                       NOW ;
976
                       PAIR ;
977
                       PAIR ;
978
                       SWAP ;
979
                       DUP ;
980
                       DUG 2 ;
981
                       CDR ;
982
                       DIG 2 ;
983
                       DUP ;
984
                       DUG 3 ;
985
                       CAR ;
986
                       CDR ;
987
                       CDR ;
988
                       DIG 3 ;
989
                       DUP ;
990
                       DUG 4 ;
991
                       CAR ;
992
                       CDR ;
993
                       CAR ;
994
                       DIG 3 ;
995
                       DUP ;
996
                       DUG 4 ;
997
                       DIG 6 ;
998
                       SWAP ;
999
                       SOME ;
1000
                       SWAP ;
1001
                       UPDATE ;
1002
                       PAIR ;
1003
                       DIG 3 ;
1004
                       CAR ;
1005
                       CAR ;
1006
                       PAIR ;
1007
                       PAIR ;
1008
                       SWAP ;
1009
                       DUP ;
1010
                       DUG 2 ;
1011
                       CAR ;
1012
                       CDR ;
1013
                       DIG 2 ;
1014
                       CDR ;
1015
                       CAR ;
1016
                       PAIR ;
1017
                       PAIR ;
1018
                       EXEC } ;
1019
                   DUP ;
1020
                   CDR ;
1021
                   CDR ;
1022
                   PUSH nat 1 ;
1023
                   DIG 2 ;
1024
                   DUP ;
1025
                   DUG 3 ;
1026
                   CDR ;
1027
                   CAR ;
1028
                   CDR ;
1029
                   ADD ;
1030
                   DIG 2 ;
1031
                   DUP ;
1032
                   DUG 3 ;
1033
                   CDR ;
1034
                   CAR ;
1035
                   CAR ;
1036
                   PAIR ;
1037
                   PAIR ;
1038
                   SWAP ;
1039
                   CAR ;
1040
                   PAIR ;
1041
                   DUP ;
1042
                   CDR ;
1043
                   CDR ;
1044
                   SWAP ;
1045
                   DUP ;
1046
                   DUG 2 ;
1047
                   CDR ;
1048
                   CAR ;
1049
                   CDR ;
1050
                   PUSH nat 1 ;
1051
                   DIG 3 ;
1052
                   DUP ;
1053
                   DUG 4 ;
1054
                   CDR ;
1055
                   CAR ;
1056
                   CAR ;
1057
                   CDR ;
1058
                   CDR ;
1059
                   ADD ;
1060
                   DIG 3 ;
1061
                   DUP ;
1062
                   DUG 4 ;
1063
                   CDR ;
1064
                   CAR ;
1065
                   CAR ;
1066
                   CDR ;
1067
                   CAR ;
1068
                   PAIR ;
1069
                   DIG 3 ;
1070
                   DUP ;
1071
                   DUG 4 ;
1072
                   CDR ;
1073
                   CAR ;
1074
                   CAR ;
1075
                   CAR ;
1076
                   PAIR ;
1077
                   PAIR ;
1078
                   PAIR ;
1079
                   SWAP ;
1080
                   CAR ;
1081
                   PAIR ;
1082
                   NIL operation ;
1083
                   PAIR }
1084
                 { DIG 2 ;
1085
                   DROP ;
1086
                   DIG 2 ;
1087
                   DROP ;
1088
                   DIG 2 ;
1089
                   DROP ;
1090
                   DIG 2 ;
1091
                   DROP ;
1092
                   DIG 2 ;
1093
                   DROP ;
1094
                   PAIR ;
1095
                   DUP ;
1096
                   CDR ;
1097
                   DUP ;
1098
                   CAR ;
1099
                   CDR ;
1100
                   CDR ;
1101
                   CAR ;
1102
                   SENDER ;
1103
                   COMPARE ;
1104
                   EQ ;
1105
                   IF {} { PUSH string "Access denied." ; FAILWITH } ;
1106
                   DUP ;
1107
                   CDR ;
1108
                   SWAP ;
1109
                   DUP ;
1110
                   DUG 2 ;
1111
                   CAR ;
1112
                   CDR ;
1113
                   CDR ;
1114
                   CDR ;
1115
                   DIG 3 ;
1116
                   CAR ;
1117
                   PAIR ;
1118
                   DIG 2 ;
1119
                   DUP ;
1120
                   DUG 3 ;
1121
                   CAR ;
1122
                   CDR ;
1123
                   CAR ;
1124
                   PAIR ;
1125
                   DIG 2 ;
1126
                   CAR ;
1127
                   CAR ;
1128
                   PAIR ;
1129
                   PAIR ;
1130
                   NIL operation ;
1131
                   PAIR } } }
1132
         { DIG 9 ;
1133
           DROP ;
1134
           IF_LEFT
1135
             { DIG 2 ;
1136
               DROP ;
1137
               DIG 2 ;
1138
               DROP ;
1139
               DIG 2 ;
1140
               DROP ;
1141
               DIG 5 ;
1142
               DROP ;
1143
               IF_LEFT
1144
                 { DIG 2 ;
1145
                   DROP ;
1146
                   DIG 3 ;
1147
                   DROP ;
1148
                   DUP ;
1149
                   DUG 2 ;
1150
                   CDR ;
1151
                   CDR ;
1152
                   PAIR ;
1153
                   SWAP ;
1154
                   DUP ;
1155
                   DUG 2 ;
1156
                   CDR ;
1157
                   CAR ;
1158
                   DIG 2 ;
1159
                   CAR ;
1160
                   PAIR ;
1161
                   PAIR ;
1162
                   DUP ;
1163
                   CDR ;
1164
                   CDR ;
1165
                   AMOUNT ;
1166
                   DIG 3 ;
1167
                   SWAP ;
1168
                   EXEC ;
1169
                   PUSH nat 1000 ;
1170
                   SWAP ;
1171
                   DUP ;
1172
                   DUG 2 ;
1173
                   COMPARE ;
1174
                   GE ;
1175
                   IF
1176
                     {}
1177
                     { PUSH string "The minimum required amount for mixing are 1000 mutez." ;
1178
                       FAILWITH } ;
1179
                   PUSH nat 50 ;
1180
                   SWAP ;
1181
                   DUP ;
1182
                   DUG 2 ;
1183
                   MUL ;
1184
                   PUSH nat 10000 ;
1185
                   SWAP ;
1186
                   EDIV ;
1187
                   IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1188
                   CAR ;
1189
                   PUSH nat 2 ;
1190
                   SWAP ;
1191
                   DUP ;
1192
                   DUG 2 ;
1193
                   MUL ;
1194
                   DIG 2 ;
1195
                   SUB ;
1196
                   ABS ;
1197
                   DIG 3 ;
1198
                   DUP ;
1199
                   DUG 4 ;
1200
                   CDR ;
1201
                   CAR ;
1202
                   DIG 4 ;
1203
                   DUP ;
1204
                   DUG 5 ;
1205
                   CAR ;
1206
                   CDR ;
1207
                   PAIR ;
1208
                   PAIR ;
1209
                   DIG 2 ;
1210
                   DUP ;
1211
                   DUG 3 ;
1212
                   CDR ;
1213
                   CDR ;
1214
                   SWAP ;
1215
                   DUP ;
1216
                   DUG 2 ;
1217
                   DIG 5 ;
1218
                   CAR ;
1219
                   CAR ;
1220
                   SWAP ;
1221
                   SOME ;
1222
                   SWAP ;
1223
                   UPDATE ;
1224
                   DIG 3 ;
1225
                   DUP ;
1226
                   DUG 4 ;
1227
                   CDR ;
1228
                   CAR ;
1229
                   PAIR ;
1230
                   DIG 3 ;
1231
                   CAR ;
1232
                   PAIR ;
1233
                   DIG 2 ;
1234
                   SWAP ;
1235
                   DUP ;
1236
                   CDR ;
1237
                   SWAP ;
1238
                   DUP ;
1239
                   DUG 2 ;
1240
                   CAR ;
1241
                   CDR ;
1242
                   DIG 3 ;
1243
                   DUP ;
1244
                   DUG 4 ;
1245
                   DIG 3 ;
1246
                   DUP ;
1247
                   DUG 4 ;
1248
                   CAR ;
1249
                   CAR ;
1250
                   CDR ;
1251
                   CDR ;
1252
                   ADD ;
1253
                   DIG 3 ;
1254
                   DUP ;
1255
                   DUG 4 ;
1256
                   CAR ;
1257
                   CAR ;
1258
                   CDR ;
1259
                   CAR ;
1260
                   PAIR ;
1261
                   DIG 3 ;
1262
                   CAR ;
1263
                   CAR ;
1264
                   CAR ;
1265
                   PAIR ;
1266
                   PAIR ;
1267
                   PAIR ;
1268
                   DUP ;
1269
                   CDR ;
1270
                   DUG 2 ;
1271
                   DUP ;
1272
                   DUG 3 ;
1273
                   CAR ;
1274
                   CDR ;
1275
                   CDR ;
1276
                   CDR ;
1277
                   ADD ;
1278
                   DIG 2 ;
1279
                   DUP ;
1280
                   DUG 3 ;
1281
                   CAR ;
1282
                   CDR ;
1283
                   CDR ;
1284
                   CAR ;
1285
                   PAIR ;
1286
                   DIG 2 ;
1287
                   DUP ;
1288
                   DUG 3 ;
1289
                   CAR ;
1290
                   CDR ;
1291
                   CAR ;
1292
                   PAIR ;
1293
                   DIG 2 ;
1294
                   CAR ;
1295
                   CAR ;
1296
                   PAIR ;
1297
                   PAIR ;
1298
                   DUP ;
1299
                   CDR ;
1300
                   CDR ;
1301
                   PUSH nat 1 ;
1302
                   DIG 2 ;
1303
                   DUP ;
1304
                   DUG 3 ;
1305
                   CDR ;
1306
                   CAR ;
1307
                   CDR ;
1308
                   ADD ;
1309
                   DIG 2 ;
1310
                   DUP ;
1311
                   DUG 3 ;
1312
                   CDR ;
1313
                   CAR ;
1314
                   CAR ;
1315
                   PAIR ;
1316
                   PAIR ;
1317
                   SWAP ;
1318
                   CAR ;
1319
                   PAIR ;
1320
                   DUP ;
1321
                   CDR ;
1322
                   CDR ;
1323
                   SWAP ;
1324
                   DUP ;
1325
                   DUG 2 ;
1326
                   CDR ;
1327
                   CAR ;
1328
                   CDR ;
1329
                   DIG 2 ;
1330
                   DUP ;
1331
                   DUG 3 ;
1332
                   CDR ;
1333
                   CAR ;
1334
                   CAR ;
1335
                   CDR ;
1336
                   CDR ;
1337
                   DIG 4 ;
1338
                   CDR ;
1339
                   DIG 4 ;
1340
                   DUP ;
1341
                   DUG 5 ;
1342
                   CDR ;
1343
                   CAR ;
1344
                   CAR ;
1345
                   CDR ;
1346
                   CAR ;
1347
                   ADD ;
1348
                   PAIR ;
1349
                   DIG 3 ;
1350
                   DUP ;
1351
                   DUG 4 ;
1352
                   CDR ;
1353
                   CAR ;
1354
                   CAR ;
1355
                   CAR ;
1356
                   PAIR ;
1357
                   PAIR ;
1358
                   PAIR ;
1359
                   SWAP ;
1360
                   CAR ;
1361
                   PAIR ;
1362
                   DUP ;
1363
                   CDR ;
1364
                   CDR ;
1365
                   SWAP ;
1366
                   DUP ;
1367
                   DUG 2 ;
1368
                   CDR ;
1369
                   CAR ;
1370
                   CDR ;
1371
                   PUSH nat 1 ;
1372
                   DIG 3 ;
1373
                   DUP ;
1374
                   DUG 4 ;
1375
                   CDR ;
1376
                   CAR ;
1377
                   CAR ;
1378
                   CDR ;
1379
                   CDR ;
1380
                   ADD ;
1381
                   DIG 3 ;
1382
                   DUP ;
1383
                   DUG 4 ;
1384
                   CDR ;
1385
                   CAR ;
1386
                   CAR ;
1387
                   CDR ;
1388
                   CAR ;
1389
                   PAIR ;
1390
                   DIG 3 ;
1391
                   DUP ;
1392
                   DUG 4 ;
1393
                   CDR ;
1394
                   CAR ;
1395
                   CAR ;
1396
                   CAR ;
1397
                   PAIR ;
1398
                   PAIR ;
1399
                   PAIR ;
1400
                   SWAP ;
1401
                   CAR ;
1402
                   PAIR ;
1403
                   NIL operation ;
1404
                   PAIR }
1405
                 { DIG 3 ;
1406
                   DROP ;
1407
                   DUP ;
1408
                   DUG 2 ;
1409
                   CDR ;
1410
                   CDR ;
1411
                   CDR ;
1412
                   CDR ;
1413
                   CDR ;
1414
                   DIG 2 ;
1415
                   DUP ;
1416
                   DUG 3 ;
1417
                   CDR ;
1418
                   CDR ;
1419
                   CDR ;
1420
                   CDR ;
1421
                   CAR ;
1422
                   PAIR ;
1423
                   PAIR ;
1424
                   SWAP ;
1425
                   DUP ;
1426
                   DUG 2 ;
1427
                   CDR ;
1428
                   CDR ;
1429
                   CDR ;
1430
                   CAR ;
1431
                   DIG 2 ;
1432
                   DUP ;
1433
                   DUG 3 ;
1434
                   CDR ;
1435
                   CDR ;
1436
                   CAR ;
1437
                   PAIR ;
1438
                   DIG 2 ;
1439
                   DUP ;
1440
                   DUG 3 ;
1441
                   CDR ;
1442
                   CAR ;
1443
                   DIG 3 ;
1444
                   CAR ;
1445
                   PAIR ;
1446
                   PAIR ;
1447
                   PAIR ;
1448
                   DUP ;
1449
                   CAR ;
1450
                   CAR ;
1451
                   CDR ;
1452
                   SWAP ;
1453
                   DUP ;
1454
                   DUG 2 ;
1455
                   CDR ;
1456
                   CAR ;
1457
                   CAR ;
1458
                   DIG 2 ;
1459
                   DUP ;
1460
                   DUG 3 ;
1461
                   CDR ;
1462
                   CAR ;
1463
                   CDR ;
1464
                   DIG 3 ;
1465
                   DUP ;
1466
                   DUG 4 ;
1467
                   CDR ;
1468
                   CDR ;
1469
                   DIG 3 ;
1470
                   DUP ;
1471
                   DUG 4 ;
1472
                   DIG 5 ;
1473
                   DUP ;
1474
                   DUG 6 ;
1475
                   CAR ;
1476
                   CAR ;
1477
                   CAR ;
1478
                   CONCAT ;
1479
                   DIG 7 ;
1480
                   DUP ;
1481
                   DUG 8 ;
1482
                   SWAP ;
1483
                   EXEC ;
1484
                   SWAP ;
1485
                   DUP ;
1486
                   DUG 2 ;
1487
                   SWAP ;
1488
                   PAIR ;
1489
                   DUP ;
1490
                   CDR ;
1491
                   CDR ;
1492
                   CDR ;
1493
                   SWAP ;
1494
                   CAR ;
1495
                   GET ;
1496
                   IF_NONE { PUSH string "Access denied." ; FAILWITH } {} ;
1497
                   DIG 2 ;
1498
                   DUP ;
1499
                   DUG 3 ;
1500
                   SWAP ;
1501
                   DUP ;
1502
                   DUG 2 ;
1503
                   CDR ;
1504
                   COMPARE ;
1505
                   GE ;
1506
                   IF
1507
                     {}
1508
                     { PUSH string "The amount of Tezos you want to withdraw must not be higher than your current mixed Tezos." ;
1509
                       FAILWITH } ;
1510
                   DIG 3 ;
1511
                   DUP ;
1512
                   DUG 4 ;
1513
                   SWAP ;
1514
                   DUP ;
1515
                   DUG 2 ;
1516
                   CAR ;
1517
                   CAR ;
1518
                   CONCAT ;
1519
                   DIG 5 ;
1520
                   CONCAT ;
1521
                   DIG 7 ;
1522
                   SWAP ;
1523
                   EXEC ;
1524
                   DIG 2 ;
1525
                   DUP ;
1526
                   DUG 3 ;
1527
                   SWAP ;
1528
                   DUP ;
1529
                   DUG 2 ;
1530
                   PAIR ;
1531
                   DUP ;
1532
                   CDR ;
1533
                   CAR ;
1534
                   CAR ;
1535
                   CAR ;
1536
                   SWAP ;
1537
                   CAR ;
1538
                   MEM ;
1539
                   IF { PUSH bool True } { PUSH bool False } ;
1540
                   IF
1541
                     { PUSH string "This root and seed have already been used." ;
1542
                       FAILWITH }
1543
                     {} ;
1544
                   DIG 2 ;
1545
                   DUP ;
1546
                   DUG 3 ;
1547
                   CDR ;
1548
                   DIG 3 ;
1549
                   DUP ;
1550
                   DUG 4 ;
1551
                   CAR ;
1552
                   CDR ;
1553
                   DIG 4 ;
1554
                   DUP ;
1555
                   DUG 5 ;
1556
                   CAR ;
1557
                   CAR ;
1558
                   CDR ;
1559
                   DIG 5 ;
1560
                   CAR ;
1561
                   CAR ;
1562
                   CAR ;
1563
                   DIG 4 ;
1564
                   PUSH bool True ;
1565
                   SWAP ;
1566
                   UPDATE ;
1567
                   PAIR ;
1568
                   PAIR ;
1569
                   PAIR ;
1570
                   SENDER ;
1571
                   CONTRACT unit ;
1572
                   IF_NONE { PUSH string "Address does not exist." ; FAILWITH } {} ;
1573
                   DIG 3 ;
1574
                   DUP ;
1575
                   DUG 4 ;
1576
                   DIG 7 ;
1577
                   SWAP ;
1578
                   EXEC ;
1579
                   UNIT ;
1580
                   TRANSFER_TOKENS ;
1581
                   DIG 3 ;
1582
                   DIG 3 ;
1583
                   DUP ;
1584
                   DUG 4 ;
1585
                   CDR ;
1586
                   SUB ;
1587
                   ABS ;
1588
                   PUSH nat 0 ;
1589
                   SWAP ;
1590
                   DUP ;
1591
                   DUG 2 ;
1592
                   COMPARE ;
1593
                   EQ ;
1594
                   IF
1595
                     { DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DUG 2 ; PAIR }
1596
                     { DIG 3 ;
1597
                       CAR ;
1598
                       PAIR ;
1599
                       DUP ;
1600
                       CDR ;
1601
                       DIG 4 ;
1602
                       DIG 2 ;
1603
                       CAR ;
1604
                       CAR ;
1605
                       PAIR ;
1606
                       CDR ;
1607
                       DIG 4 ;
1608
                       DUP ;
1609
                       DUG 5 ;
1610
                       CAR ;
1611
                       CDR ;
1612
                       CDR ;
1613
                       PAIR ;
1614
                       PAIR ;
1615
                       DUP ;
1616
                       DIG 3 ;
1617
                       DUP ;
1618
                       DUG 4 ;
1619
                       CDR ;
1620
                       CDR ;
1621
                       DIG 2 ;
1622
                       DIG 5 ;
1623
                       CAR ;
1624
                       CDR ;
1625
                       CAR ;
1626
                       SWAP ;
1627
                       SOME ;
1628
                       SWAP ;
1629
                       UPDATE ;
1630
                       DIG 3 ;
1631
                       DUP ;
1632
                       DUG 4 ;
1633
                       CDR ;
1634
                       CAR ;
1635
                       PAIR ;
1636
                       DIG 3 ;
1637
                       CAR ;
1638
                       PAIR ;
1639
                       PAIR } ;
1640
                   CAR ;
1641
                   DUP ;
1642
                   CDR ;
1643
                   CDR ;
1644
                   PUSH nat 1 ;
1645
                   DIG 2 ;
1646
                   DUP ;
1647
                   DUG 3 ;
1648
                   CDR ;
1649
                   CAR ;
1650
                   CDR ;
1651
                   ADD ;
1652
                   DIG 2 ;
1653
                   DUP ;
1654
                   DUG 3 ;
1655
                   CDR ;
1656
                   CAR ;
1657
                   CAR ;
1658
                   PAIR ;
1659
                   PAIR ;
1660
                   SWAP ;
1661
                   CAR ;
1662
                   PAIR ;
1663
                   NIL operation ;
1664
                   DIG 2 ;
1665
                   CONS ;
1666
                   PAIR } }
1667
             { DIG 6 ;
1668
               DROP ;
1669
               DIG 6 ;
1670
               DROP ;
1671
               PAIR ;
1672
               DUP ;
1673
               CAR ;
1674
               CAR ;
1675
               SWAP ;
1676
               DUP ;
1677
               DUG 2 ;
1678
               CDR ;
1679
               DUP ;
1680
               DIG 2 ;
1681
               DUP ;
1682
               DUG 3 ;
1683
               PAIR ;
1684
               DIG 8 ;
1685
               SWAP ;
1686
               EXEC ;
1687
               DIG 3 ;
1688
               CAR ;
1689
               CDR ;
1690
               DUP ;
1691
               DIG 2 ;
1692
               DUP ;
1693
               DUG 3 ;
1694
               CDR ;
1695
               CAR ;
1696
               COMPARE ;
1697
               GE ;
1698
               IF
1699
                 {}
1700
                 { PUSH string "The amount of liquidity you want to withdraw must not be higher than your current liquidity." ;
1701
                   FAILWITH } ;
1702
               SENDER ;
1703
               CONTRACT unit ;
1704
               IF_NONE { PUSH string "Address does not exist." ; FAILWITH } {} ;
1705
               SWAP ;
1706
               DUP ;
1707
               DUG 2 ;
1708
               DIG 9 ;
1709
               SWAP ;
1710
               EXEC ;
1711
               UNIT ;
1712
               TRANSFER_TOKENS ;
1713
               DIG 3 ;
1714
               DIG 3 ;
1715
               DUP ;
1716
               DUG 4 ;
1717
               CAR ;
1718
               CDR ;
1719
               DIG 4 ;
1720
               DUP ;
1721
               DUG 5 ;
1722
               CDR ;
1723
               CAR ;
1724
               PAIR ;
1725
               PAIR ;
1726
               DIG 5 ;
1727
               SWAP ;
1728
               EXEC ;
1729
               DIG 2 ;
1730
               DIG 3 ;
1731
               DUP ;
1732
               DUG 4 ;
1733
               CDR ;
1734
               CAR ;
1735
               SUB ;
1736
               ABS ;
1737
               PUSH nat 0 ;
1738
               SWAP ;
1739
               DUP ;
1740
               DUG 2 ;
1741
               COMPARE ;
1742
               EQ ;
1743
               IF
1744
                 { DROP ;
1745
                   DIG 4 ;
1746
                   DROP ;
1747
                   DIG 4 ;
1748
                   DROP ;
1749
                   DUP ;
1750
                   CDR ;
1751
                   SWAP ;
1752
                   DUP ;
1753
                   DUG 2 ;
1754
                   CAR ;
1755
                   CDR ;
1756
                   CDR ;
1757
                   DIG 2 ;
1758
                   DUP ;
1759
                   DUG 3 ;
1760
                   CAR ;
1761
                   CDR ;
1762
                   CAR ;
1763
                   DIG 6 ;
1764
                   NONE (pair (pair timestamp string) (pair nat address)) ;
1765
                   SWAP ;
1766
                   UPDATE ;
1767
                   PAIR ;
1768
                   DIG 2 ;
1769
                   CAR ;
1770
                   CAR ;
1771
                   PAIR ;
1772
                   PAIR ;
1773
                   DIG 2 ;
1774
                   PAIR }
1775
                 { DIG 3 ;
1776
                   DUP ;
1777
                   DUG 4 ;
1778
                   CDR ;
1779
                   CDR ;
1780
                   SWAP ;
1781
                   DUP ;
1782
                   DUG 2 ;
1783
                   PAIR ;
1784
                   DIG 4 ;
1785
                   CAR ;
1786
                   PAIR ;
1787
                   DUP ;
1788
                   CDR ;
1789
                   DIG 2 ;
1790
                   DIG 7 ;
1791
                   SWAP ;
1792
                   EXEC ;
1793
                   DIG 2 ;
1794
                   CAR ;
1795
                   CAR ;
1796
                   PAIR ;
1797
                   CDR ;
1798
                   NOW ;
1799
                   PAIR ;
1800
                   PAIR ;
1801
                   SWAP ;
1802
                   DUP ;
1803
                   DUG 2 ;
1804
                   CDR ;
1805
                   DIG 2 ;
1806
                   DUP ;
1807
                   DUG 3 ;
1808
                   CAR ;
1809
                   CDR ;
1810
                   CDR ;
1811
                   DIG 3 ;
1812
                   DUP ;
1813
                   DUG 4 ;
1814
                   CAR ;
1815
                   CDR ;
1816
                   CAR ;
1817
                   DIG 3 ;
1818
                   DUP ;
1819
                   DUG 4 ;
1820
                   DIG 7 ;
1821
                   SWAP ;
1822
                   SOME ;
1823
                   SWAP ;
1824
                   UPDATE ;
1825
                   PAIR ;
1826
                   DIG 3 ;
1827
                   CAR ;
1828
                   CAR ;
1829
                   PAIR ;
1830
                   PAIR ;
1831
                   SWAP ;
1832
                   DUP ;
1833
                   DUG 2 ;
1834
                   CAR ;
1835
                   CDR ;
1836
                   DIG 2 ;
1837
                   DUP ;
1838
                   DUG 3 ;
1839
                   CDR ;
1840
                   CAR ;
1841
                   PAIR ;
1842
                   PAIR ;
1843
                   DIG 3 ;
1844
                   SWAP ;
1845
                   EXEC ;
1846
                   SWAP ;
1847
                   PAIR } ;
1848
               CDR ;
1849
               DUP ;
1850
               CDR ;
1851
               CDR ;
1852
               PUSH nat 1 ;
1853
               DIG 2 ;
1854
               DUP ;
1855
               DUG 3 ;
1856
               CDR ;
1857
               CAR ;
1858
               CDR ;
1859
               ADD ;
1860
               DIG 2 ;
1861
               DUP ;
1862
               DUG 3 ;
1863
               CDR ;
1864
               CAR ;
1865
               CAR ;
1866
               PAIR ;
1867
               PAIR ;
1868
               SWAP ;
1869
               CAR ;
1870
               PAIR ;
1871
               NIL operation ;
1872
               DIG 2 ;
1873
               CONS ;
1874
               PAIR } } }