BCD

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