BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • LP YOU/XTZ Long-term Farm
operations (720)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
1028
 
1
parameter (or
2
            (or (or (unit %claim) (nat %deposit))
3
                (or (unit %internal_claim)
4
                    (or (nat %internal_deposit) (unit %internal_withdraw))))
5
            (or
6
              (or (address %propose_administrator)
7
                  (or (address %remove_administrator) (unit %set_administrator)))
8
              (or (nat %set_max_release_period)
9
                  (or
10
                    (list %set_reward_balance (pair
11
                                               (pair %request (address %owner)
12
                                                              (nat %token_id))
13
                                               (nat %balance)))
14
                    (unit %withdraw)))));
15
storage (pair
16
          (pair
17
            (pair (big_map %administrators address nat)
18
                  (pair (nat %current_reward_balance) (nat %dist_factor)))
19
            (pair (nat %last_reward_balance)
20
                  (pair (nat %max_release_period) (address %reward_token_address))))
21
          (pair
22
            (pair (nat %reward_token_id)
23
                  (pair (address %sender) (address %stake_token_address)))
24
            (pair (nat %stake_token_id)
25
                  (pair
26
                    (big_map %stakes address
27
                                     (pair (timestamp %age_timestamp)
28
                                           (pair (nat %dist_factor) (nat %stake))))
29
                    (nat %total_stake)))));
30
code { LAMBDA
31
         (pair unit
32
               (pair (list operation)
33
                     (pair
34
                       (pair (pair (big_map address nat) (pair nat nat))
35
                             (pair nat (pair nat address)))
36
                       (pair (pair nat (pair address address))
37
                             (pair nat
38
                                   (pair
39
                                     (big_map address (pair timestamp (pair nat nat)))
40
                                     nat))))))
41
         (pair unit
42
               (pair (list operation)
43
                     (pair
44
                       (pair (pair (big_map address nat) (pair nat nat))
45
                             (pair nat (pair nat address)))
46
                       (pair (pair nat (pair address address))
47
                             (pair nat
48
                                   (pair
49
                                     (big_map address (pair timestamp (pair nat nat)))
50
                                     nat))))))
51
         { CDR ;
52
           UNPAIR ;
53
           SWAP ;
54
           DUP ;
55
           DUG 2 ;
56
           CAR ;
57
           GET 6 ;
58
           CONTRACT %balance_of (pair
59
                                  (list %requests (pair (address %owner) (nat %token_id)))
60
                                  (contract %callback (list (pair
61
                                                            (pair %request
62
                                                              (address %owner)
63
                                                              (nat %token_id))
64
                                                            (nat %balance))))) ;
65
           IF_NONE { PUSH int 73 ; FAILWITH } {} ;
66
           PUSH mutez 0 ;
67
           SELF_ADDRESS ;
68
           CONTRACT %set_reward_balance (list (pair
69
                                               (pair %request (address %owner)
70
                                                              (nat %token_id))
71
                                               (nat %balance))) ;
72
           IF_NONE { PUSH int 76 ; FAILWITH } {} ;
73
           NIL (pair address nat) ;
74
           DUP 6 ;
75
           GET 3 ;
76
           CAR ;
77
           SELF_ADDRESS ;
78
           PAIR ;
79
           CONS ;
80
           PAIR ;
81
           TRANSFER_TOKENS ;
82
           CONS ;
83
           UNIT ;
84
           PAIR 3 } ;
85
       SWAP ;
86
       LAMBDA
87
         (pair unit
88
               (pair (list operation)
89
                     (pair
90
                       (pair (pair (big_map address nat) (pair nat nat))
91
                             (pair nat (pair nat address)))
92
                       (pair (pair nat (pair address address))
93
                             (pair nat
94
                                   (pair
95
                                     (big_map address (pair timestamp (pair nat nat)))
96
                                     nat))))))
97
         (pair unit
98
               (pair (list operation)
99
                     (pair
100
                       (pair (pair (big_map address nat) (pair nat nat))
101
                             (pair nat (pair nat address)))
102
                       (pair (pair nat (pair address address))
103
                             (pair nat
104
                                   (pair
105
                                     (big_map address (pair timestamp (pair nat nat)))
106
                                     nat))))))
107
         { UNPAIR 3 ;
108
           SWAP ;
109
           DIG 2 ;
110
           DUP ;
111
           GET 7 ;
112
           SWAP ;
113
           DUP ;
114
           DUG 4 ;
115
           GET 3 ;
116
           GET 3 ;
117
           MEM ;
118
           IF
119
             { DIG 2 ;
120
               DUP ;
121
               GET 7 ;
122
               SWAP ;
123
               DUP ;
124
               DUG 4 ;
125
               GET 3 ;
126
               GET 3 ;
127
               GET ;
128
               IF_NONE { PUSH int 131 ; FAILWITH } {} ;
129
               DUP ;
130
               GET 3 ;
131
               PUSH nat 1000000000000 ;
132
               SWAP ;
133
               DUP 6 ;
134
               CAR ;
135
               CAR ;
136
               GET 4 ;
137
               SUB ;
138
               ISNAT ;
139
               IF_NONE { PUSH int 140 ; FAILWITH } {} ;
140
               DUP 3 ;
141
               GET 4 ;
142
               MUL ;
143
               EDIV ;
144
               IF_NONE { PUSH int 139 ; FAILWITH } { CAR } ;
145
               DIG 4 ;
146
               DUP ;
147
               CAR ;
148
               GET 5 ;
149
               SWAP ;
150
               DUP ;
151
               DUG 6 ;
152
               CAR ;
153
               GET 5 ;
154
               DUP 4 ;
155
               CAR ;
156
               NOW ;
157
               SUB ;
158
               ISNAT ;
159
               IF_NONE { PUSH int 133 ; FAILWITH } {} ;
160
               DUP ;
161
               DUP 3 ;
162
               COMPARE ;
163
               LE ;
164
               IF { DROP } { SWAP ; DROP } ;
165
               DUP 3 ;
166
               MUL ;
167
               EDIV ;
168
               IF_NONE { PUSH int 145 ; FAILWITH } { CAR } ;
169
               DUP ;
170
               PUSH nat 0 ;
171
               SWAP ;
172
               DUP 4 ;
173
               SUB ;
174
               ISNAT ;
175
               IF_NONE { PUSH int 153 ; FAILWITH } {} ;
176
               COMPARE ;
177
               GT ;
178
               IF
179
                 { DIG 3 ;
180
                   DUP 6 ;
181
                   CAR ;
182
                   GET 6 ;
183
                   CONTRACT %transfer (list (pair (address %from_)
184
                                                 (list %txs (pair (address %to_)
185
                                                                 (pair (nat %token_id)
186
                                                                       (nat %amount)))))) ;
187
                   IF_NONE { PUSH int 36 ; FAILWITH } {} ;
188
                   PUSH mutez 0 ;
189
                   NIL (pair address (list (pair address (pair nat nat)))) ;
190
                   NIL (pair address (pair nat nat)) ;
191
                   DUP 6 ;
192
                   DUP 8 ;
193
                   SUB ;
194
                   ISNAT ;
195
                   IF_NONE { PUSH int 153 ; FAILWITH } {} ;
196
                   DUP 11 ;
197
                   GET 3 ;
198
                   CAR ;
199
                   SELF_ADDRESS ;
200
                   PAIR 3 ;
201
                   CONS ;
202
                   SELF_ADDRESS ;
203
                   PAIR ;
204
                   CONS ;
205
                   TRANSFER_TOKENS ;
206
                   CONS ;
207
                   DUG 3 }
208
                 {} ;
209
               DUP ;
210
               PUSH nat 0 ;
211
               COMPARE ;
212
               LT ;
213
               IF
214
                 { DIG 2 ;
215
                   DROP ;
216
                   DIG 3 ;
217
                   DROP ;
218
                   DIG 2 ;
219
                   DUP 4 ;
220
                   CAR ;
221
                   GET 6 ;
222
                   CONTRACT %transfer (list (pair (address %from_)
223
                                                 (list %txs (pair (address %to_)
224
                                                                 (pair (nat %token_id)
225
                                                                       (nat %amount)))))) ;
226
                   IF_NONE { PUSH int 36 ; FAILWITH } {} ;
227
                   PUSH mutez 0 ;
228
                   NIL (pair address (list (pair address (pair nat nat)))) ;
229
                   NIL (pair address (pair nat nat)) ;
230
                   DIG 5 ;
231
                   DIG 7 ;
232
                   DUP ;
233
                   GET 3 ;
234
                   CAR ;
235
                   SWAP ;
236
                   DUP ;
237
                   DUG 9 ;
238
                   GET 3 ;
239
                   GET 3 ;
240
                   PAIR 3 ;
241
                   CONS ;
242
                   SELF_ADDRESS ;
243
                   PAIR ;
244
                   CONS ;
245
                   TRANSFER_TOKENS ;
246
                   CONS ;
247
                   SWAP }
248
                 { DROP ; SWAP ; DROP ; DIG 2 ; DROP } ;
249
               DUP 3 ;
250
               UNPAIR ;
251
               UNPAIR ;
252
               SWAP ;
253
               CDR ;
254
               DIG 3 ;
255
               DIG 5 ;
256
               CAR ;
257
               GET 3 ;
258
               SUB ;
259
               ISNAT ;
260
               IF_NONE { PUSH int 163 ; FAILWITH } {} ;
261
               PAIR ;
262
               SWAP ;
263
               PAIR ;
264
               PAIR ;
265
               DUP ;
266
               DUG 2 ;
267
               DUP ;
268
               GET 7 ;
269
               DUP ;
270
               DUP 5 ;
271
               GET 3 ;
272
               GET 3 ;
273
               DUP ;
274
               DUG 2 ;
275
               GET ;
276
               IF_NONE { PUSH int 166 ; FAILWITH } {} ;
277
               DIG 5 ;
278
               CAR ;
279
               CAR ;
280
               GET 4 ;
281
               UPDATE 3 ;
282
               SOME ;
283
               SWAP ;
284
               UPDATE ;
285
               UPDATE 7 ;
286
               SWAP }
287
             { SWAP ; DROP } ;
288
           UNIT ;
289
           PAIR 3 } ;
290
       SWAP ;
291
       LAMBDA
292
         (pair unit
293
               (pair
294
                 (pair (pair (big_map address nat) (pair nat nat))
295
                       (pair nat (pair nat address)))
296
                 (pair (pair nat (pair address address))
297
                       (pair nat
298
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
299
         (pair unit
300
               (pair
301
                 (pair (pair (big_map address nat) (pair nat nat))
302
                       (pair nat (pair nat address)))
303
                 (pair (pair nat (pair address address))
304
                       (pair nat
305
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
306
         { CDR ;
307
           DUP ;
308
           GET 8 ;
309
           PUSH nat 0 ;
310
           COMPARE ;
311
           LT ;
312
           IF
313
             { DUP ;
314
               UNPAIR ;
315
               UNPAIR ;
316
               UNPAIR ;
317
               SWAP ;
318
               UNPAIR ;
319
               SWAP ;
320
               DUP 6 ;
321
               GET 8 ;
322
               PUSH nat 1000000000000 ;
323
               DIG 7 ;
324
               DUP ;
325
               CAR ;
326
               GET 3 ;
327
               SWAP ;
328
               CAR ;
329
               CAR ;
330
               GET 3 ;
331
               SUB ;
332
               ISNAT ;
333
               IF_NONE { PUSH int 113 ; FAILWITH } {} ;
334
               MUL ;
335
               EDIV ;
336
               IF_NONE { PUSH int 117 ; FAILWITH } { CAR } ;
337
               ADD ;
338
               SWAP ;
339
               PAIR ;
340
               SWAP ;
341
               PAIR ;
342
               PAIR ;
343
               PAIR ;
344
               DUP ;
345
               UNPAIR ;
346
               UNPAIR ;
347
               SWAP ;
348
               CDR ;
349
               DIG 3 ;
350
               CAR ;
351
               CAR ;
352
               GET 3 ;
353
               PAIR ;
354
               SWAP ;
355
               PAIR ;
356
               PAIR }
357
             {} ;
358
           UNIT ;
359
           PAIR } ;
360
       SWAP ;
361
       LAMBDA
362
         unit
363
         unit
364
         { DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ;
365
       SWAP ;
366
       LAMBDA
367
         (pair unit
368
               (pair
369
                 (pair (pair (big_map address nat) (pair nat nat))
370
                       (pair nat (pair nat address)))
371
                 (pair (pair nat (pair address address))
372
                       (pair nat
373
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
374
         (pair unit
375
               (pair
376
                 (pair (pair (big_map address nat) (pair nat nat))
377
                       (pair nat (pair nat address)))
378
                 (pair (pair nat (pair address address))
379
                       (pair nat
380
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
381
         { CDR ;
382
           DUP ;
383
           CAR ;
384
           CAR ;
385
           CAR ;
386
           PUSH nat 1 ;
387
           SWAP ;
388
           SENDER ;
389
           GET ;
390
           IF_NONE { PUSH int 21 ; FAILWITH } {} ;
391
           COMPARE ;
392
           EQ ;
393
           IF {} { PUSH int 401 ; FAILWITH } ;
394
           UNIT ;
395
           PAIR } ;
396
       SWAP ;
397
       UNPAIR ;
398
       IF_LEFT
399
         { IF_LEFT
400
             { IF_LEFT
401
                 { DROP ;
402
                   SWAP ;
403
                   DROP ;
404
                   SWAP ;
405
                   DROP ;
406
                   SWAP ;
407
                   DROP ;
408
                   SWAP ;
409
                   DROP ;
410
                   AMOUNT ;
411
                   PUSH mutez 0 ;
412
                   COMPARE ;
413
                   EQ ;
414
                   IF {} { AMOUNT ; FAILWITH } ;
415
                   UNPAIR ;
416
                   SWAP ;
417
                   UNPAIR ;
418
                   UNPAIR ;
419
                   SWAP ;
420
                   CDR ;
421
                   SENDER ;
422
                   PAIR ;
423
                   SWAP ;
424
                   PAIR ;
425
                   PAIR ;
426
                   SWAP ;
427
                   PAIR ;
428
                   NIL operation ;
429
                   DIG 2 ;
430
                   UNIT ;
431
                   SWAP ;
432
                   DUG 3 ;
433
                   PAIR 3 ;
434
                   EXEC ;
435
                   CDR ;
436
                   UNPAIR ;
437
                   SELF %internal_claim ;
438
                   PUSH mutez 0 ;
439
                   UNIT ;
440
                   TRANSFER_TOKENS ;
441
                   CONS }
442
                 { DIG 2 ;
443
                   DROP ;
444
                   DIG 2 ;
445
                   DROP ;
446
                   DIG 2 ;
447
                   DROP ;
448
                   DIG 2 ;
449
                   DROP ;
450
                   AMOUNT ;
451
                   PUSH mutez 0 ;
452
                   COMPARE ;
453
                   EQ ;
454
                   IF {} { AMOUNT ; FAILWITH } ;
455
                   SWAP ;
456
                   UNPAIR ;
457
                   SWAP ;
458
                   UNPAIR ;
459
                   UNPAIR ;
460
                   SWAP ;
461
                   CDR ;
462
                   SENDER ;
463
                   PAIR ;
464
                   SWAP ;
465
                   PAIR ;
466
                   PAIR ;
467
                   SWAP ;
468
                   PAIR ;
469
                   SWAP ;
470
                   NIL operation ;
471
                   DIG 3 ;
472
                   UNIT ;
473
                   SWAP ;
474
                   DIG 4 ;
475
                   DIG 3 ;
476
                   DIG 3 ;
477
                   PAIR 3 ;
478
                   EXEC ;
479
                   CDR ;
480
                   UNPAIR ;
481
                   SWAP ;
482
                   DUG 2 ;
483
                   SELF %internal_deposit ;
484
                   PUSH mutez 0 ;
485
                   DIG 3 ;
486
                   TRANSFER_TOKENS ;
487
                   CONS } }
488
             { IF_LEFT
489
                 { DROP ;
490
                   SWAP ;
491
                   DROP ;
492
                   DIG 4 ;
493
                   DROP ;
494
                   AMOUNT ;
495
                   PUSH mutez 0 ;
496
                   COMPARE ;
497
                   EQ ;
498
                   IF {} { AMOUNT ; FAILWITH } ;
499
                   SWAP ;
500
                   UNIT ;
501
                   EXEC ;
502
                   DROP ;
503
                   SWAP ;
504
                   UNIT ;
505
                   SWAP ;
506
                   DUG 2 ;
507
                   PAIR ;
508
                   EXEC ;
509
                   CDR ;
510
                   NIL operation ;
511
                   DIG 2 ;
512
                   UNIT ;
513
                   SWAP ;
514
                   DUG 3 ;
515
                   PAIR 3 ;
516
                   EXEC ;
517
                   CDR ;
518
                   UNPAIR }
519
                 { IF_LEFT
520
                     { DIG 2 ;
521
                       DROP ;
522
                       DIG 4 ;
523
                       DROP ;
524
                       DIG 4 ;
525
                       DROP ;
526
                       AMOUNT ;
527
                       PUSH mutez 0 ;
528
                       COMPARE ;
529
                       EQ ;
530
                       IF {} { AMOUNT ; FAILWITH } ;
531
                       DIG 2 ;
532
                       UNIT ;
533
                       EXEC ;
534
                       DROP ;
535
                       DIG 2 ;
536
                       UNIT ;
537
                       SWAP ;
538
                       DIG 3 ;
539
                       DIG 2 ;
540
                       PAIR ;
541
                       EXEC ;
542
                       CDR ;
543
                       SWAP ;
544
                       DUP ;
545
                       PUSH nat 0 ;
546
                       COMPARE ;
547
                       LT ;
548
                       IF
549
                         { NIL operation ;
550
                           DUP 3 ;
551
                           GET 3 ;
552
                           GET 4 ;
553
                           CONTRACT %transfer (list (pair (address %from_)
554
                                                         (list %txs (pair (address %to_)
555
                                                                         (pair
556
                                                                           (nat %token_id)
557
                                                                           (nat %amount)))))) ;
558
                           IF_NONE { PUSH int 36 ; FAILWITH } {} ;
559
                           PUSH mutez 0 ;
560
                           NIL (pair address (list (pair address (pair nat nat)))) ;
561
                           NIL (pair address (pair nat nat)) ;
562
                           DUP 6 ;
563
                           DUP 8 ;
564
                           GET 5 ;
565
                           SELF_ADDRESS ;
566
                           PAIR 3 ;
567
                           CONS ;
568
                           DUP 7 ;
569
                           GET 3 ;
570
                           GET 3 ;
571
                           PAIR ;
572
                           CONS ;
573
                           TRANSFER_TOKENS ;
574
                           CONS }
575
                         { NIL operation } ;
576
                       DIG 2 ;
577
                       DUP ;
578
                       GET 7 ;
579
                       SWAP ;
580
                       DUP ;
581
                       DUG 4 ;
582
                       GET 3 ;
583
                       GET 3 ;
584
                       MEM ;
585
                       IF
586
                         { DIG 2 ;
587
                           DUP ;
588
                           GET 7 ;
589
                           SWAP ;
590
                           DUP ;
591
                           DUG 4 ;
592
                           GET 3 ;
593
                           GET 3 ;
594
                           GET ;
595
                           IF_NONE { PUSH int 244 ; FAILWITH } {} ;
596
                           DUP ;
597
                           GET 3 ;
598
                           PUSH nat 1000000000000 ;
599
                           SWAP ;
600
                           DUP 6 ;
601
                           CAR ;
602
                           CAR ;
603
                           GET 4 ;
604
                           SUB ;
605
                           ISNAT ;
606
                           IF_NONE { PUSH int 253 ; FAILWITH } {} ;
607
                           DUP 3 ;
608
                           GET 4 ;
609
                           MUL ;
610
                           EDIV ;
611
                           IF_NONE { PUSH int 252 ; FAILWITH } { CAR } ;
612
                           DUP 4 ;
613
                           DUP 3 ;
614
                           GET 4 ;
615
                           ADD ;
616
                           PUSH nat 1000000000000 ;
617
                           DIG 2 ;
618
                           MUL ;
619
                           EDIV ;
620
                           IF_NONE { PUSH int 262 ; FAILWITH } { CAR } ;
621
                           DUP 5 ;
622
                           CAR ;
623
                           CAR ;
624
                           GET 4 ;
625
                           SUB ;
626
                           ISNAT ;
627
                           IF_NONE { PUSH int 260 ; FAILWITH } {} ;
628
                           DUP 5 ;
629
                           DUP ;
630
                           GET 7 ;
631
                           DUP 6 ;
632
                           DUP 5 ;
633
                           GET 4 ;
634
                           ADD ;
635
                           DIG 3 ;
636
                           DUP 7 ;
637
                           DUP 6 ;
638
                           GET 4 ;
639
                           ADD ;
640
                           DUP 9 ;
641
                           CAR ;
642
                           GET 5 ;
643
                           DUP 7 ;
644
                           CAR ;
645
                           NOW ;
646
                           SUB ;
647
                           ISNAT ;
648
                           IF_NONE { PUSH int 246 ; FAILWITH } {} ;
649
                           DUP ;
650
                           DUP 3 ;
651
                           COMPARE ;
652
                           LE ;
653
                           IF { DROP } { SWAP ; DROP } ;
654
                           DIG 6 ;
655
                           GET 4 ;
656
                           MUL ;
657
                           EDIV ;
658
                           IF_NONE { PUSH int 268 ; FAILWITH } { CAR } ;
659
                           INT ;
660
                           PUSH int -1 ;
661
                           MUL ;
662
                           NOW ;
663
                           ADD ;
664
                           PAIR 3 ;
665
                           SOME ;
666
                           DIG 5 ;
667
                           GET 3 ;
668
                           GET 3 ;
669
                           UPDATE ;
670
                           UPDATE 7 ;
671
                           DUG 2 }
672
                         { DUP 3 ;
673
                           DUP ;
674
                           GET 7 ;
675
                           DUP 4 ;
676
                           DUP 6 ;
677
                           CAR ;
678
                           CAR ;
679
                           GET 4 ;
680
                           NOW ;
681
                           PAIR 3 ;
682
                           SOME ;
683
                           DIG 5 ;
684
                           GET 3 ;
685
                           GET 3 ;
686
                           UPDATE ;
687
                           UPDATE 7 ;
688
                           DUG 2 } ;
689
                       DIG 2 ;
690
                       DUP ;
691
                       GET 8 ;
692
                       DIG 3 ;
693
                       ADD ;
694
                       UPDATE 8 ;
695
                       SWAP }
696
                     { DROP ;
697
                       SWAP ;
698
                       DROP ;
699
                       DIG 4 ;
700
                       DROP ;
701
                       AMOUNT ;
702
                       PUSH mutez 0 ;
703
                       COMPARE ;
704
                       EQ ;
705
                       IF {} { AMOUNT ; FAILWITH } ;
706
                       SWAP ;
707
                       UNIT ;
708
                       EXEC ;
709
                       DROP ;
710
                       SWAP ;
711
                       UNIT ;
712
                       SWAP ;
713
                       DUG 2 ;
714
                       PAIR ;
715
                       EXEC ;
716
                       CDR ;
717
                       NIL operation ;
718
                       DIG 2 ;
719
                       UNIT ;
720
                       SWAP ;
721
                       DUG 3 ;
722
                       PAIR 3 ;
723
                       EXEC ;
724
                       CDR ;
725
                       UNPAIR ;
726
                       SWAP ;
727
                       DUP ;
728
                       GET 7 ;
729
                       SWAP ;
730
                       DUP ;
731
                       DUG 3 ;
732
                       GET 3 ;
733
                       GET 3 ;
734
                       GET ;
735
                       IF_NONE { PUSH int 335 ; FAILWITH } {} ;
736
                       DUP ;
737
                       GET 4 ;
738
                       PUSH nat 0 ;
739
                       COMPARE ;
740
                       LT ;
741
                       IF
742
                         { SWAP ;
743
                           DUP 3 ;
744
                           GET 3 ;
745
                           GET 4 ;
746
                           CONTRACT %transfer (list (pair (address %from_)
747
                                                         (list %txs (pair (address %to_)
748
                                                                         (pair
749
                                                                           (nat %token_id)
750
                                                                           (nat %amount)))))) ;
751
                           IF_NONE { PUSH int 36 ; FAILWITH } {} ;
752
                           PUSH mutez 0 ;
753
                           NIL (pair address (list (pair address (pair nat nat)))) ;
754
                           NIL (pair address (pair nat nat)) ;
755
                           DUP 6 ;
756
                           GET 4 ;
757
                           DIG 7 ;
758
                           DUP ;
759
                           GET 5 ;
760
                           SWAP ;
761
                           DUP ;
762
                           DUG 9 ;
763
                           GET 3 ;
764
                           GET 3 ;
765
                           PAIR 3 ;
766
                           CONS ;
767
                           SELF_ADDRESS ;
768
                           PAIR ;
769
                           CONS ;
770
                           TRANSFER_TOKENS ;
771
                           CONS ;
772
                           SWAP }
773
                         {} ;
774
                       DUP 3 ;
775
                       SWAP ;
776
                       GET 4 ;
777
                       DIG 3 ;
778
                       GET 8 ;
779
                       SUB ;
780
                       ISNAT ;
781
                       IF_NONE { PUSH int 351 ; FAILWITH } {} ;
782
                       UPDATE 8 ;
783
                       DUP ;
784
                       DUG 2 ;
785
                       DUP ;
786
                       GET 7 ;
787
                       NONE (pair timestamp (pair nat nat)) ;
788
                       DIG 4 ;
789
                       GET 3 ;
790
                       GET 3 ;
791
                       UPDATE ;
792
                       UPDATE 7 ;
793
                       SWAP } } } }
794
         { IF_LEFT
795
             { IF_LEFT
796
                 { DIG 3 ;
797
                   DROP ;
798
                   DIG 3 ;
799
                   DROP ;
800
                   DIG 3 ;
801
                   DROP ;
802
                   DIG 3 ;
803
                   DROP ;
804
                   AMOUNT ;
805
                   PUSH mutez 0 ;
806
                   COMPARE ;
807
                   EQ ;
808
                   IF {} { AMOUNT ; FAILWITH } ;
809
                   DIG 2 ;
810
                   UNIT ;
811
                   SWAP ;
812
                   DIG 3 ;
813
                   DIG 2 ;
814
                   PAIR ;
815
                   EXEC ;
816
                   CDR ;
817
                   UNPAIR ;
818
                   UNPAIR ;
819
                   UNPAIR ;
820
                   PUSH (option nat) (Some 0) ;
821
                   DIG 5 ;
822
                   UPDATE ;
823
                   PAIR ;
824
                   PAIR ;
825
                   PAIR }
826
                 { IF_LEFT
827
                     { DIG 3 ;
828
                       DROP ;
829
                       DIG 3 ;
830
                       DROP ;
831
                       DIG 3 ;
832
                       DROP ;
833
                       DIG 3 ;
834
                       DROP ;
835
                       AMOUNT ;
836
                       PUSH mutez 0 ;
837
                       COMPARE ;
838
                       EQ ;
839
                       IF {} { AMOUNT ; FAILWITH } ;
840
                       DIG 2 ;
841
                       UNIT ;
842
                       SWAP ;
843
                       DIG 3 ;
844
                       DIG 2 ;
845
                       PAIR ;
846
                       EXEC ;
847
                       CDR ;
848
                       UNPAIR ;
849
                       UNPAIR ;
850
                       UNPAIR ;
851
                       NONE nat ;
852
                       DIG 5 ;
853
                       UPDATE ;
854
                       PAIR ;
855
                       PAIR ;
856
                       PAIR }
857
                     { DROP ;
858
                       SWAP ;
859
                       DROP ;
860
                       SWAP ;
861
                       DROP ;
862
                       SWAP ;
863
                       DROP ;
864
                       SWAP ;
865
                       DROP ;
866
                       SWAP ;
867
                       DROP ;
868
                       AMOUNT ;
869
                       PUSH mutez 0 ;
870
                       COMPARE ;
871
                       EQ ;
872
                       IF {} { AMOUNT ; FAILWITH } ;
873
                       DUP ;
874
                       CAR ;
875
                       CAR ;
876
                       CAR ;
877
                       PUSH nat 0 ;
878
                       SWAP ;
879
                       SENDER ;
880
                       GET ;
881
                       IF_NONE { PUSH int 46 ; FAILWITH } {} ;
882
                       COMPARE ;
883
                       EQ ;
884
                       IF {} { PUSH int 405 ; FAILWITH } ;
885
                       UNPAIR ;
886
                       UNPAIR ;
887
                       UNPAIR ;
888
                       PUSH (option nat) (Some 1) ;
889
                       SENDER ;
890
                       UPDATE ;
891
                       PAIR ;
892
                       PAIR ;
893
                       PAIR } } ;
894
               NIL operation }
895
             { IF_LEFT
896
                 { DIG 3 ;
897
                   DROP ;
898
                   DIG 3 ;
899
                   DROP ;
900
                   DIG 3 ;
901
                   DROP ;
902
                   DIG 3 ;
903
                   DROP ;
904
                   AMOUNT ;
905
                   PUSH mutez 0 ;
906
                   COMPARE ;
907
                   EQ ;
908
                   IF {} { AMOUNT ; FAILWITH } ;
909
                   DIG 2 ;
910
                   UNIT ;
911
                   SWAP ;
912
                   DIG 3 ;
913
                   DIG 2 ;
914
                   PAIR ;
915
                   EXEC ;
916
                   CDR ;
917
                   UNPAIR ;
918
                   UNPAIR ;
919
                   SWAP ;
920
                   UNPAIR ;
921
                   SWAP ;
922
                   CDR ;
923
                   DIG 4 ;
924
                   PAIR ;
925
                   SWAP ;
926
                   PAIR ;
927
                   SWAP ;
928
                   PAIR ;
929
                   PAIR ;
930
                   NIL operation }
931
                 { IF_LEFT
932
                     { AMOUNT ;
933
                       PUSH mutez 0 ;
934
                       COMPARE ;
935
                       EQ ;
936
                       IF {} { AMOUNT ; FAILWITH } ;
937
                       SWAP ;
938
                       DUP ;
939
                       DUG 2 ;
940
                       CAR ;
941
                       GET 6 ;
942
                       SENDER ;
943
                       COMPARE ;
944
                       EQ ;
945
                       IF {} { PUSH int 504 ; FAILWITH } ;
946
                       DUP ;
947
                       IF_CONS
948
                         { SWAP ;
949
                           DROP ;
950
                           SWAP ;
951
                           DROP ;
952
                           DIG 2 ;
953
                           DROP ;
954
                           DIG 2 ;
955
                           DROP ;
956
                           DIG 2 ;
957
                           DROP ;
958
                           DIG 2 ;
959
                           DROP ;
960
                           DIG 2 ;
961
                           DROP ;
962
                           DUP ;
963
                           CAR ;
964
                           CAR ;
965
                           SELF_ADDRESS ;
966
                           COMPARE ;
967
                           EQ ;
968
                           IF {} { PUSH int 503 ; FAILWITH } ;
969
                           SWAP ;
970
                           UNPAIR ;
971
                           UNPAIR ;
972
                           UNPAIR ;
973
                           SWAP ;
974
                           CDR ;
975
                           DIG 4 ;
976
                           CDR ;
977
                           PAIR ;
978
                           SWAP ;
979
                           PAIR ;
980
                           PAIR ;
981
                           PAIR }
982
                         { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ;
983
                       NIL operation }
984
                     { DROP ;
985
                       SWAP ;
986
                       DROP ;
987
                       SWAP ;
988
                       DROP ;
989
                       SWAP ;
990
                       DROP ;
991
                       SWAP ;
992
                       DROP ;
993
                       AMOUNT ;
994
                       PUSH mutez 0 ;
995
                       COMPARE ;
996
                       EQ ;
997
                       IF {} { AMOUNT ; FAILWITH } ;
998
                       UNPAIR ;
999
                       SWAP ;
1000
                       UNPAIR ;
1001
                       UNPAIR ;
1002
                       SWAP ;
1003
                       CDR ;
1004
                       SENDER ;
1005
                       PAIR ;
1006
                       SWAP ;
1007
                       PAIR ;
1008
                       PAIR ;
1009
                       SWAP ;
1010
                       PAIR ;
1011
                       NIL operation ;
1012
                       DIG 2 ;
1013
                       UNIT ;
1014
                       SWAP ;
1015
                       DUG 3 ;
1016
                       PAIR 3 ;
1017
                       EXEC ;
1018
                       CDR ;
1019
                       UNPAIR ;
1020
                       SELF %internal_withdraw ;
1021
                       PUSH mutez 0 ;
1022
                       UNIT ;
1023
                       TRANSFER_TOKENS ;
1024
                       CONS } } } } ;
1025
       NIL operation ;
1026
       SWAP ;
1027
       ITER { CONS } ;
1028
       PAIR }