BCD

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