BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • objkt.com English Auctions
Delegatable
operations (230K)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
785
1199
 
1
{ parameter (or
2
              (or
3
                (or
4
                  (pair %bid (nat %auction_id)
5
                             (pair (nat %amount)
6
                                   (pair (map %referrers address nat)
7
                                         (option %condition_extra bytes))))
8
                  (nat %cancel_auction))
9
                (or
10
                  (pair %create_auction (pair %token (address %address) (nat %token_id))
11
                                        (pair
12
                                          (or %currency (address %fa12)
13
                                                        (pair %fa2 (address %address)
14
                                                                   (nat %token_id)))
15
                                          (pair (nat %reserve)
16
                                                (pair (option %start_time timestamp)
17
                                                      (pair (nat %duration)
18
                                                            (pair (nat %extension_time)
19
                                                                  (pair
20
                                                                    (nat %price_increment)
21
                                                                    (pair
22
                                                                      (map %shares
23
                                                                        address
24
                                                                        nat)
25
                                                                      (pair
26
                                                                        (nat %referral_bonus)
27
                                                                        (option %condition (pair
28
                                                                                            (address %address)
29
                                                                                            (bytes %id))))))))))))
30
                  (unit %default)))
31
              (or (or (unit %delegate) (nat %settle_auction))
32
                  (or (address %update_fee_sharing_registry)
33
                      (address %update_permission_module)))) ;
34
  storage (pair
35
            (pair
36
              (big_map %auctions nat
37
                                 (pair (address %creator)
38
                                       (pair
39
                                         (pair %token (address %address) (nat %token_id))
40
                                         (pair
41
                                           (or %currency (address %fa12)
42
                                                         (pair %fa2 (address %address)
43
                                                                    (nat %token_id)))
44
                                           (pair (nat %reserve)
45
                                                 (pair (nat %duration)
46
                                                       (pair (timestamp %start_time)
47
                                                             (pair
48
                                                               (option %end_time timestamp)
49
                                                               (pair
50
                                                                 (nat %extension_time)
51
                                                                 (pair
52
                                                                   (nat %price_increment)
53
                                                                   (pair
54
                                                                     (nat %current_price)
55
                                                                     (pair
56
                                                                       (address %highest_bidder)
57
                                                                       (pair
58
                                                                         (map %shares
59
                                                                           address
60
                                                                           nat)
61
                                                                         (pair
62
                                                                           (nat %platform_fee)
63
                                                                           (pair
64
                                                                             (nat %referral_bonus)
65
                                                                             (pair
66
                                                                               (map %share_fees
67
                                                                                 address
68
                                                                                 nat)
69
                                                                               (option %condition (pair
70
                                                                                                   (address %address)
71
                                                                                                   (bytes %id)))))))))))))))))))
72
              (address %fee_sharing_registry))
73
            (pair (big_map %metadata string bytes)
74
                  (pair (nat %next_auction_id) (address %permission_module)))) ;
75
  code { LAMBDA
76
           (pair (pair (pair nat address) (pair address (pair address nat)))
77
                 (pair (list operation)
78
                       (pair
79
                         (pair
80
                           (big_map nat
81
                                    (pair address
82
                                          (pair (pair address nat)
83
                                                (pair (or address (pair address nat))
84
                                                      (pair nat
85
                                                            (pair nat
86
                                                                  (pair timestamp
87
                                                                        (pair
88
                                                                          (option timestamp)
89
                                                                          (pair nat
90
                                                                                (pair
91
                                                                                  nat
92
                                                                                  (pair
93
                                                                                    nat
94
                                                                                    (pair
95
                                                                                      address
96
                                                                                      (pair
97
                                                                                        (map
98
                                                                                          address
99
                                                                                          nat)
100
                                                                                        (pair
101
                                                                                          nat
102
                                                                                          (pair
103
                                                                                            nat
104
                                                                                            (pair
105
                                                                                              (map
106
                                                                                                address
107
                                                                                                nat)
108
                                                                                              (option (pair
109
                                                                                                       address
110
                                                                                                       bytes))))))))))))))))))
111
                           address)
112
                         (pair (big_map string bytes) (pair nat address)))))
113
           (pair unit
114
                 (pair (list operation)
115
                       (pair
116
                         (pair
117
                           (big_map nat
118
                                    (pair address
119
                                          (pair (pair address nat)
120
                                                (pair (or address (pair address nat))
121
                                                      (pair nat
122
                                                            (pair nat
123
                                                                  (pair timestamp
124
                                                                        (pair
125
                                                                          (option timestamp)
126
                                                                          (pair nat
127
                                                                                (pair
128
                                                                                  nat
129
                                                                                  (pair
130
                                                                                    nat
131
                                                                                    (pair
132
                                                                                      address
133
                                                                                      (pair
134
                                                                                        (map
135
                                                                                          address
136
                                                                                          nat)
137
                                                                                        (pair
138
                                                                                          nat
139
                                                                                          (pair
140
                                                                                            nat
141
                                                                                            (pair
142
                                                                                              (map
143
                                                                                                address
144
                                                                                                nat)
145
                                                                                              (option (pair
146
                                                                                                       address
147
                                                                                                       bytes))))))))))))))))))
148
                           address)
149
                         (pair (big_map string bytes) (pair nat address)))))
150
           { UNPAIR 3 ;
151
             DUP ;
152
             DUG 2 ;
153
             CAR ;
154
             CDR ;
155
             CONTRACT %transfer (list (pair (address %from_)
156
                                           (list %txs (pair (address %to_)
157
                                                           (pair (nat %token_id)
158
                                                                 (nat %amount)))))) ;
159
             IF_NONE { PUSH int 336 ; FAILWITH } {} ;
160
             PUSH mutez 0 ;
161
             NIL (pair address (list (pair address (pair nat nat)))) ;
162
             NIL (pair address (pair nat nat)) ;
163
             DIG 5 ;
164
             DUP ;
165
             CAR ;
166
             CAR ;
167
             SWAP ;
168
             DUP ;
169
             GET 6 ;
170
             SWAP ;
171
             DUP ;
172
             DUG 8 ;
173
             GET 5 ;
174
             PAIR 3 ;
175
             CONS ;
176
             DIG 5 ;
177
             GET 3 ;
178
             PAIR ;
179
             CONS ;
180
             TRANSFER_TOKENS ;
181
             CONS ;
182
             UNIT ;
183
             PAIR 3 } ;
184
         SWAP ;
185
         UNPAIR ;
186
         IF_LEFT
187
           { IF_LEFT
188
               { IF_LEFT
189
                   { DUP ;
190
                     GET 5 ;
191
                     SIZE ;
192
                     PUSH nat 50 ;
193
                     SWAP ;
194
                     COMPARE ;
195
                     LE ;
196
                     IF {} { PUSH string "E_MAX_50_REFERRERS" ; FAILWITH } ;
197
                     SWAP ;
198
                     DUP ;
199
                     DUG 2 ;
200
                     CAR ;
201
                     CAR ;
202
                     SWAP ;
203
                     DUP ;
204
                     DUG 2 ;
205
                     CAR ;
206
                     GET ;
207
                     IF_NONE { PUSH int 273 ; FAILWITH } {} ;
208
                     DUP ;
209
                     CAR ;
210
                     SENDER ;
211
                     COMPARE ;
212
                     EQ ;
213
                     IF { PUSH string "E_NO_SELF_BID" ; FAILWITH } {} ;
214
                     DUP ;
215
                     GET 11 ;
216
                     NOW ;
217
                     COMPARE ;
218
                     GE ;
219
                     IF {} { PUSH string "E_NOT_STARTED" ; FAILWITH } ;
220
                     DUP ;
221
                     GET 13 ;
222
                     IF_NONE { PUSH bool False } { DROP ; PUSH bool True } ;
223
                     DUP ;
224
                     IF
225
                       { SWAP ;
226
                         DUP ;
227
                         DUG 2 ;
228
                         GET 13 ;
229
                         IF_NONE { PUSH int 284 ; FAILWITH } {} ;
230
                         NOW ;
231
                         COMPARE ;
232
                         LT }
233
                       { PUSH bool True } ;
234
                     IF {} { PUSH string "E_NOT_IN_WINDOW" ; FAILWITH } ;
235
                     DUP ;
236
                     IF
237
                       { PUSH bool False }
238
                       { SWAP ; DUP ; DUG 2 ; GET 7 ; DUP 4 ; GET 3 ; COMPARE ; GE } ;
239
                     IF
240
                       { PUSH bool True }
241
                       { DUP ;
242
                         IF
243
                           { SWAP ; DUP ; GET 17 ; SWAP ; DUP ; DUG 3 ; GET 19 ; ADD ; DUP 4 ; GET 3 ; COMPARE ; GE }
244
                           { PUSH bool False } } ;
245
                     IF {} { PUSH string "E_BID_TOO_SMALL" ; FAILWITH } ;
246
                     PUSH nat 0 ;
247
                     DUP 4 ;
248
                     GET 3 ;
249
                     COMPARE ;
250
                     GT ;
251
                     IF
252
                       {}
253
                       { PUSH string "WrongCondition: params.amount > 0" ; FAILWITH } ;
254
                     DUP ;
255
                     IF
256
                       {}
257
                       { DIG 3 ;
258
                         UNPAIR ;
259
                         UNPAIR ;
260
                         DUP ;
261
                         DUP 7 ;
262
                         CAR ;
263
                         DUP ;
264
                         DUG 2 ;
265
                         GET ;
266
                         IF_NONE { PUSH int 296 ; FAILWITH } {} ;
267
                         DUP 7 ;
268
                         GET 9 ;
269
                         INT ;
270
                         NOW ;
271
                         ADD ;
272
                         SOME ;
273
                         UPDATE 13 ;
274
                         SOME ;
275
                         SWAP ;
276
                         UPDATE ;
277
                         PAIR ;
278
                         PAIR ;
279
                         DUG 3 } ;
280
                     DUP 4 ;
281
                     CAR ;
282
                     CDR ;
283
                     DUP 4 ;
284
                     GET 5 ;
285
                     DIG 3 ;
286
                     DUP ;
287
                     GET 27 ;
288
                     SWAP ;
289
                     DUP ;
290
                     DUG 5 ;
291
                     GET 25 ;
292
                     PAIR 3 ;
293
                     VIEW "get_share_fee" (map address nat) ;
294
                     IF_NONE { PUSH int 136 ; FAILWITH } {} ;
295
                     DIG 4 ;
296
                     UNPAIR ;
297
                     UNPAIR ;
298
                     DUP ;
299
                     DUP 8 ;
300
                     CAR ;
301
                     DUP ;
302
                     DUG 2 ;
303
                     GET ;
304
                     IF_NONE { PUSH int 307 ; FAILWITH } {} ;
305
                     DUP 6 ;
306
                     UPDATE 29 ;
307
                     SOME ;
308
                     SWAP ;
309
                     UPDATE ;
310
                     PAIR ;
311
                     PAIR ;
312
                     DUG 4 ;
313
                     DUP 3 ;
314
                     GET 5 ;
315
                     IF_LEFT
316
                       { DUP ;
317
                         CONTRACT %transfer (pair address (pair address nat)) ;
318
                         IF_NONE { PUSH int 460 ; FAILWITH } {} ;
319
                         NIL operation ;
320
                         SWAP ;
321
                         PUSH mutez 0 ;
322
                         DUP 8 ;
323
                         GET 3 ;
324
                         SELF_ADDRESS ;
325
                         PAIR ;
326
                         SENDER ;
327
                         PAIR ;
328
                         TRANSFER_TOKENS ;
329
                         CONS ;
330
                         PUSH nat 0 ;
331
                         DUP 6 ;
332
                         GET 19 ;
333
                         COMPARE ;
334
                         EQ ;
335
                         IF
336
                           { SWAP ; DROP }
337
                           { SWAP ;
338
                             CONTRACT %transfer (pair address (pair address nat)) ;
339
                             IF_NONE { PUSH int 460 ; FAILWITH } {} ;
340
                             PUSH mutez 0 ;
341
                             DIG 5 ;
342
                             DUP ;
343
                             GET 19 ;
344
                             SWAP ;
345
                             DUP ;
346
                             DUG 7 ;
347
                             GET 21 ;
348
                             PAIR ;
349
                             SELF_ADDRESS ;
350
                             PAIR ;
351
                             TRANSFER_TOKENS ;
352
                             CONS } }
353
                       { NIL operation ;
354
                         DUP 8 ;
355
                         DUP 3 ;
356
                         CDR ;
357
                         SELF_ADDRESS ;
358
                         PAIR ;
359
                         SENDER ;
360
                         PAIR ;
361
                         DUP 4 ;
362
                         CAR ;
363
                         DUP 9 ;
364
                         GET 3 ;
365
                         PAIR ;
366
                         PAIR ;
367
                         SWAP ;
368
                         DIG 8 ;
369
                         DIG 3 ;
370
                         DIG 3 ;
371
                         PAIR 3 ;
372
                         EXEC ;
373
                         CDR ;
374
                         UNPAIR ;
375
                         DIG 7 ;
376
                         DIG 2 ;
377
                         DUG 7 ;
378
                         DUG 7 ;
379
                         PUSH nat 0 ;
380
                         DUP 6 ;
381
                         GET 19 ;
382
                         COMPARE ;
383
                         EQ ;
384
                         IF
385
                           { SWAP ; DROP }
386
                           { DUP 8 ;
387
                             DUP 3 ;
388
                             CDR ;
389
                             DUP 7 ;
390
                             GET 21 ;
391
                             PAIR ;
392
                             SELF_ADDRESS ;
393
                             PAIR ;
394
                             DIG 3 ;
395
                             CAR ;
396
                             DUP 7 ;
397
                             GET 19 ;
398
                             PAIR ;
399
                             PAIR ;
400
                             SWAP ;
401
                             DIG 7 ;
402
                             DIG 3 ;
403
                             DIG 3 ;
404
                             PAIR 3 ;
405
                             EXEC ;
406
                             CDR ;
407
                             UNPAIR ;
408
                             DIG 6 ;
409
                             DIG 2 ;
410
                             DUG 6 ;
411
                             DUG 6 } } ;
412
                     DUP 4 ;
413
                     GET 30 ;
414
                     IF_NONE
415
                       { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP }
416
                       { DIG 2 ;
417
                         DROP ;
418
                         DIG 2 ;
419
                         DROP ;
420
                         DUP ;
421
                         DUG 2 ;
422
                         CAR ;
423
                         CONTRACT %enforce_conditions (list (pair
424
                                                             (pair (nat %amount)
425
                                                                   (pair
426
                                                                     (address %claimer)
427
                                                                     (bytes %condition_id)))
428
                                                             (pair (address %creator)
429
                                                                   (pair
430
                                                                     (option %extra bytes)
431
                                                                     (pair %token
432
                                                                       (address %address)
433
                                                                       (nat %token_id)))))) ;
434
                         IF_NONE { PUSH int 517 ; FAILWITH } {} ;
435
                         PUSH mutez 0 ;
436
                         NIL (pair (pair nat (pair address bytes))
437
                                   (pair address
438
                                         (pair (option bytes) (pair address nat)))) ;
439
                         DUP 6 ;
440
                         GET 3 ;
441
                         DUP 8 ;
442
                         GET 6 ;
443
                         PAIR ;
444
                         DIG 6 ;
445
                         CAR ;
446
                         PAIR ;
447
                         DIG 5 ;
448
                         CDR ;
449
                         SENDER ;
450
                         PAIR ;
451
                         PUSH nat 1 ;
452
                         PAIR ;
453
                         PAIR ;
454
                         CONS ;
455
                         TRANSFER_TOKENS ;
456
                         CONS } ;
457
                     DIG 2 ;
458
                     UNPAIR ;
459
                     UNPAIR ;
460
                     DUP ;
461
                     DUP 6 ;
462
                     CAR ;
463
                     DUP ;
464
                     DUG 2 ;
465
                     GET ;
466
                     IF_NONE { PUSH int 363 ; FAILWITH } {} ;
467
                     DUP 7 ;
468
                     GET 3 ;
469
                     UPDATE 19 ;
470
                     SOME ;
471
                     SWAP ;
472
                     UPDATE ;
473
                     DUP ;
474
                     DUP 6 ;
475
                     CAR ;
476
                     DUP ;
477
                     DUG 2 ;
478
                     GET ;
479
                     IF_NONE { PUSH int 364 ; FAILWITH } {} ;
480
                     SENDER ;
481
                     UPDATE 21 ;
482
                     SOME ;
483
                     SWAP ;
484
                     UPDATE ;
485
                     PAIR ;
486
                     PAIR ;
487
                     DUP ;
488
                     DUG 3 ;
489
                     CAR ;
490
                     CAR ;
491
                     DUP 3 ;
492
                     CAR ;
493
                     GET ;
494
                     IF_NONE { PUSH int 369 ; FAILWITH } {} ;
495
                     GET 15 ;
496
                     INT ;
497
                     NOW ;
498
                     DUP 5 ;
499
                     CAR ;
500
                     CAR ;
501
                     DUP 5 ;
502
                     CAR ;
503
                     GET ;
504
                     IF_NONE { PUSH int 368 ; FAILWITH } {} ;
505
                     GET 13 ;
506
                     IF_NONE { PUSH int 368 ; FAILWITH } {} ;
507
                     SUB ;
508
                     COMPARE ;
509
                     LT ;
510
                     IF
511
                       { DIG 3 ;
512
                         DROP ;
513
                         DUP 3 ;
514
                         UNPAIR ;
515
                         UNPAIR ;
516
                         DUP ;
517
                         DUP 6 ;
518
                         CAR ;
519
                         DUP ;
520
                         DUG 2 ;
521
                         GET ;
522
                         IF_NONE { PUSH int 371 ; FAILWITH } {} ;
523
                         DIG 7 ;
524
                         CAR ;
525
                         CAR ;
526
                         DIG 7 ;
527
                         CAR ;
528
                         GET ;
529
                         IF_NONE { PUSH int 373 ; FAILWITH } {} ;
530
                         GET 15 ;
531
                         INT ;
532
                         NOW ;
533
                         ADD ;
534
                         SOME ;
535
                         UPDATE 13 ;
536
                         SOME ;
537
                         SWAP ;
538
                         UPDATE ;
539
                         PAIR ;
540
                         PAIR ;
541
                         SWAP }
542
                       { SWAP ; DROP ; DIG 2 ; DROP } }
543
                   { SWAP ;
544
                     DUP ;
545
                     DUG 2 ;
546
                     CAR ;
547
                     CAR ;
548
                     SWAP ;
549
                     DUP ;
550
                     DUG 2 ;
551
                     GET ;
552
                     IF_NONE { PUSH int 226 ; FAILWITH } {} ;
553
                     DUP ;
554
                     CAR ;
555
                     SENDER ;
556
                     COMPARE ;
557
                     EQ ;
558
                     IF {} { PUSH string "E_NOT_SELLER" ; FAILWITH } ;
559
                     DUP ;
560
                     GET 13 ;
561
                     IF_NONE {} { PUSH string "E_HAS_BID" ; FAILWITH } ;
562
                     NIL operation ;
563
                     DIG 4 ;
564
                     DUP 3 ;
565
                     GET 3 ;
566
                     CDR ;
567
                     SENDER ;
568
                     PAIR ;
569
                     SELF_ADDRESS ;
570
                     PAIR ;
571
                     DIG 3 ;
572
                     GET 3 ;
573
                     CAR ;
574
                     PUSH nat 1 ;
575
                     PAIR ;
576
                     PAIR ;
577
                     SWAP ;
578
                     DIG 4 ;
579
                     DIG 3 ;
580
                     DIG 3 ;
581
                     PAIR 3 ;
582
                     EXEC ;
583
                     CDR ;
584
                     UNPAIR ;
585
                     SWAP ;
586
                     UNPAIR ;
587
                     UNPAIR ;
588
                     NONE (pair address
589
                                (pair (pair address nat)
590
                                      (pair (or address (pair address nat))
591
                                            (pair nat
592
                                                  (pair nat
593
                                                        (pair timestamp
594
                                                              (pair (option timestamp)
595
                                                                    (pair nat
596
                                                                          (pair nat
597
                                                                                (pair
598
                                                                                  nat
599
                                                                                  (pair
600
                                                                                    address
601
                                                                                    (pair
602
                                                                                      (map
603
                                                                                        address
604
                                                                                        nat)
605
                                                                                      (pair
606
                                                                                        nat
607
                                                                                        (pair
608
                                                                                          nat
609
                                                                                          (pair
610
                                                                                            (map
611
                                                                                              address
612
                                                                                              nat)
613
                                                                                            (option (pair
614
                                                                                                     address
615
                                                                                                     bytes))))))))))))))))) ;
616
                     DIG 5 ;
617
                     UPDATE ;
618
                     PAIR ;
619
                     PAIR ;
620
                     SWAP } }
621
               { IF_LEFT
622
                   { DUP ;
623
                     GET 9 ;
624
                     PUSH nat 2592000 ;
625
                     SWAP ;
626
                     COMPARE ;
627
                     LE ;
628
                     IF {} { PUSH string "E_MAX_30_DAYS" ; FAILWITH } ;
629
                     DUP ;
630
                     GET 13 ;
631
                     PUSH nat 1 ;
632
                     SWAP ;
633
                     COMPARE ;
634
                     GE ;
635
                     IF {} { PUSH string "E_PRICE_INCR_0" ; FAILWITH } ;
636
                     DUP ;
637
                     GET 11 ;
638
                     PUSH nat 3600 ;
639
                     SWAP ;
640
                     COMPARE ;
641
                     LE ;
642
                     IF {} { PUSH string "E_MAX_1_HR_EXT" ; FAILWITH } ;
643
                     SWAP ;
644
                     DUP ;
645
                     DUG 2 ;
646
                     CAR ;
647
                     CDR ;
648
                     UNIT ;
649
                     VIEW "get_management_fee" nat ;
650
                     IF_NONE { PUSH int 148 ; FAILWITH } {} ;
651
                     PUSH nat 100 ;
652
                     DUP 3 ;
653
                     GET 15 ;
654
                     SIZE ;
655
                     COMPARE ;
656
                     LE ;
657
                     IF {} { PUSH string "R_TOO_MANY_SHARES" ; FAILWITH } ;
658
                     PUSH nat 0 ;
659
                     DUP 3 ;
660
                     GET 15 ;
661
                     ITER { CDR ; ADD } ;
662
                     SWAP ;
663
                     DUP ;
664
                     DUG 2 ;
665
                     PUSH nat 10000 ;
666
                     SUB ;
667
                     ISNAT ;
668
                     IF_NONE { PUSH int 28 ; FAILWITH } {} ;
669
                     SWAP ;
670
                     DUP ;
671
                     DUG 2 ;
672
                     COMPARE ;
673
                     LE ;
674
                     IF {} { PUSH string "R_INVALID_SHARES_TOTAL" ; FAILWITH } ;
675
                     DUP 4 ;
676
                     CAR ;
677
                     CDR ;
678
                     DUP 4 ;
679
                     GET 17 ;
680
                     VIEW "is_valid_referral_fee_level" bool ;
681
                     IF_NONE { PUSH int 156 ; FAILWITH } {} ;
682
                     IF {} { PUSH string "E_INVALID_R_FEE" ; FAILWITH } ;
683
                     NIL operation ;
684
                     DUP 6 ;
685
                     DUP 5 ;
686
                     CAR ;
687
                     CDR ;
688
                     SELF_ADDRESS ;
689
                     PAIR ;
690
                     SENDER ;
691
                     PAIR ;
692
                     DUP 6 ;
693
                     CAR ;
694
                     CAR ;
695
                     PUSH nat 1 ;
696
                     PAIR ;
697
                     PAIR ;
698
                     SWAP ;
699
                     DIG 6 ;
700
                     DIG 3 ;
701
                     DIG 3 ;
702
                     PAIR 3 ;
703
                     EXEC ;
704
                     UNPAIR 3 ;
705
                     DIG 6 ;
706
                     DIG 3 ;
707
                     DUG 6 ;
708
                     DUG 6 ;
709
                     NOW ;
710
                     DUP 6 ;
711
                     GET 7 ;
712
                     IF_NONE {} { SWAP ; DROP } ;
713
                     DUP 7 ;
714
                     UNPAIR ;
715
                     UNPAIR ;
716
                     DUP 9 ;
717
                     GET 18 ;
718
                     EMPTY_MAP address nat ;
719
                     DUP 11 ;
720
                     GET 17 ;
721
                     DUP 11 ;
722
                     DUP 13 ;
723
                     GET 15 ;
724
                     SENDER ;
725
                     PUSH nat 0 ;
726
                     DIG 15 ;
727
                     DUP ;
728
                     GET 13 ;
729
                     SWAP ;
730
                     DUP ;
731
                     DUG 17 ;
732
                     GET 11 ;
733
                     NONE timestamp ;
734
                     DUP 14 ;
735
                     DIG 19 ;
736
                     DUP ;
737
                     GET 9 ;
738
                     SWAP ;
739
                     DUP ;
740
                     GET 5 ;
741
                     SWAP ;
742
                     DUP ;
743
                     GET 3 ;
744
                     SWAP ;
745
                     DUP ;
746
                     DUG 23 ;
747
                     CAR ;
748
                     SENDER ;
749
                     PAIR 16 ;
750
                     DIG 4 ;
751
                     DROP ;
752
                     DIG 4 ;
753
                     DROP ;
754
                     DIG 5 ;
755
                     DROP ;
756
                     DIG 5 ;
757
                     DROP ;
758
                     DIG 5 ;
759
                     DROP ;
760
                     DIG 6 ;
761
                     DROP ;
762
                     SOME ;
763
                     DIG 5 ;
764
                     GET 5 ;
765
                     UPDATE ;
766
                     PAIR ;
767
                     PAIR ;
768
                     DUP ;
769
                     GET 5 ;
770
                     PUSH nat 1 ;
771
                     ADD ;
772
                     UPDATE 5 ;
773
                     SWAP }
774
                   { DROP ;
775
                     SWAP ;
776
                     DROP ;
777
                     DUP ;
778
                     GET 6 ;
779
                     NIL operation ;
780
                     SWAP ;
781
                     UNIT ;
782
                     VIEW "get_baking_reward_collector" address ;
783
                     IF_NONE { PUSH int 167 ; FAILWITH } {} ;
784
                     CONTRACT unit ;
785
                     IF_NONE { PUSH int 181 ; FAILWITH } {} ;
786
                     AMOUNT ;
787
                     UNIT ;
788
                     TRANSFER_TOKENS ;
789
                     CONS } } }
790
           { IF_LEFT
791
               { IF_LEFT
792
                   { DROP ;
793
                     SWAP ;
794
                     DROP ;
795
                     DUP ;
796
                     GET 6 ;
797
                     NIL operation ;
798
                     SWAP ;
799
                     UNIT ;
800
                     VIEW "get_delegate" key_hash ;
801
                     IF_NONE { PUSH int 176 ; FAILWITH } {} ;
802
                     SOME ;
803
                     SET_DELEGATE ;
804
                     CONS }
805
                   { SWAP ;
806
                     DUP ;
807
                     DUG 2 ;
808
                     CAR ;
809
                     CAR ;
810
                     SWAP ;
811
                     DUP ;
812
                     DUG 2 ;
813
                     GET ;
814
                     IF_NONE { PUSH int 384 ; FAILWITH } {} ;
815
                     DUP ;
816
                     GET 13 ;
817
                     IF_NONE { PUSH int 386 ; FAILWITH } {} ;
818
                     NOW ;
819
                     COMPARE ;
820
                     GE ;
821
                     IF {} { PUSH string "E_AUCTION_ACTIVE" ; FAILWITH } ;
822
                     NIL operation ;
823
                     DUP 5 ;
824
                     DIG 2 ;
825
                     DUP ;
826
                     GET 3 ;
827
                     CDR ;
828
                     SWAP ;
829
                     DUP ;
830
                     DUG 4 ;
831
                     GET 21 ;
832
                     PAIR ;
833
                     SELF_ADDRESS ;
834
                     PAIR ;
835
                     DUP 4 ;
836
                     GET 3 ;
837
                     CAR ;
838
                     PUSH nat 1 ;
839
                     PAIR ;
840
                     PAIR ;
841
                     SWAP ;
842
                     DIG 5 ;
843
                     DIG 3 ;
844
                     DIG 3 ;
845
                     PAIR 3 ;
846
                     EXEC ;
847
                     UNPAIR 3 ;
848
                     DIG 5 ;
849
                     DIG 3 ;
850
                     DUG 5 ;
851
                     DUG 5 ;
852
                     PUSH nat 0 ;
853
                     DUP 4 ;
854
                     GET 19 ;
855
                     COMPARE ;
856
                     GT ;
857
                     IF
858
                       { DUP 5 ;
859
                         GET 6 ;
860
                         UNIT ;
861
                         VIEW "get_treasury" address ;
862
                         IF_NONE { PUSH int 158 ; FAILWITH } {} ;
863
                         DUP 4 ;
864
                         GET 25 ;
865
                         PUSH nat 0 ;
866
                         DUP 6 ;
867
                         GET 29 ;
868
                         DUP 7 ;
869
                         GET 29 ;
870
                         ITER { DIG 2 ; SWAP ; CDR ; ADD ; SWAP } ;
871
                         PUSH nat 0 ;
872
                         DUP 8 ;
873
                         GET 27 ;
874
                         COMPARE ;
875
                         EQ ;
876
                         IF
877
                           { SWAP ;
878
                             DUP ;
879
                             DUG 2 ;
880
                             DIG 3 ;
881
                             SUB ;
882
                             ISNAT ;
883
                             IF_NONE { PUSH int 47 ; FAILWITH } {} ;
884
                             DUG 2 }
885
                           {} ;
886
                         DUP 7 ;
887
                         GET 23 ;
888
                         ITER { DUP ;
889
                                CDR ;
890
                                DIG 3 ;
891
                                ADD ;
892
                                DUG 2 ;
893
                                SWAP ;
894
                                DUP ;
895
                                DUG 2 ;
896
                                SWAP ;
897
                                DUP ;
898
                                DUG 2 ;
899
                                CAR ;
900
                                MEM ;
901
                                IF
902
                                  { SWAP ;
903
                                    DUP ;
904
                                    DUP 3 ;
905
                                    CAR ;
906
                                    DUP ;
907
                                    DUG 2 ;
908
                                    GET ;
909
                                    IF_NONE { PUSH int 53 ; FAILWITH } {} ;
910
                                    DIG 3 ;
911
                                    CDR ;
912
                                    ADD ;
913
                                    SOME ;
914
                                    SWAP ;
915
                                    UPDATE }
916
                                  { DUP ; DUG 2 ; CDR ; SOME ; DIG 2 ; CAR ; UPDATE } } ;
917
                         DUP 3 ;
918
                         DIG 2 ;
919
                         ADD ;
920
                         SWAP ;
921
                         DUP ;
922
                         DUP 5 ;
923
                         MEM ;
924
                         IF
925
                           { DUP ;
926
                             DUP 5 ;
927
                             DUP ;
928
                             DUG 2 ;
929
                             GET ;
930
                             IF_NONE { PUSH int 60 ; FAILWITH } {} ;
931
                             DUP 5 ;
932
                             ADD ;
933
                             SOME ;
934
                             SWAP ;
935
                             UPDATE }
936
                           { DUP 3 ; SOME ; DUP 5 ; UPDATE } ;
937
                         PUSH nat 10000 ;
938
                         DUP 3 ;
939
                         COMPARE ;
940
                         LE ;
941
                         IF
942
                           {}
943
                           { PUSH string "WrongCondition: total_fee.value <= 10000" ;
944
                             FAILWITH } ;
945
                         DUP 7 ;
946
                         GET 5 ;
947
                         IF_LEFT
948
                           { PUSH nat 0 ;
949
                             DUP 3 ;
950
                             ITER { DUP ;
951
                                    CDR ;
952
                                    PUSH nat 10000 ;
953
                                    SWAP ;
954
                                    DUP 12 ;
955
                                    GET 19 ;
956
                                    MUL ;
957
                                    EDIV ;
958
                                    IF_NONE { PUSH int 255 ; FAILWITH } { CAR } ;
959
                                    DUP ;
960
                                    DIG 3 ;
961
                                    ADD ;
962
                                    DUG 2 ;
963
                                    DUP ;
964
                                    PUSH nat 0 ;
965
                                    COMPARE ;
966
                                    LT ;
967
                                    IF
968
                                      { DIG 9 ;
969
                                        DUP 5 ;
970
                                        CONTRACT %transfer (pair address
971
                                                                 (pair address nat)) ;
972
                                        IF_NONE { PUSH int 460 ; FAILWITH } {} ;
973
                                        PUSH mutez 0 ;
974
                                        DIG 3 ;
975
                                        DIG 4 ;
976
                                        CAR ;
977
                                        PAIR ;
978
                                        SELF_ADDRESS ;
979
                                        PAIR ;
980
                                        TRANSFER_TOKENS ;
981
                                        CONS ;
982
                                        DUG 7 }
983
                                      { DROP 2 } } ;
984
                             DUP ;
985
                             DUP 10 ;
986
                             GET 19 ;
987
                             SUB ;
988
                             DUP 10 ;
989
                             GET 19 ;
990
                             DUP 3 ;
991
                             COMPARE ;
992
                             LE ;
993
                             IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ;
994
                             DUP ;
995
                             PUSH int 0 ;
996
                             COMPARE ;
997
                             LT ;
998
                             IF
999
                               { SWAP ;
1000
                                 DROP ;
1001
                                 DIG 2 ;
1002
                                 DROP ;
1003
                                 DIG 2 ;
1004
                                 DROP ;
1005
                                 DIG 2 ;
1006
                                 DROP ;
1007
                                 DIG 2 ;
1008
                                 DROP ;
1009
                                 DIG 2 ;
1010
                                 DROP ;
1011
                                 DIG 6 ;
1012
                                 DROP ;
1013
                                 DUG 2 ;
1014
                                 CONTRACT %transfer (pair address (pair address nat)) ;
1015
                                 IF_NONE { PUSH int 460 ; FAILWITH } {} ;
1016
                                 PUSH mutez 0 ;
1017
                                 DIG 3 ;
1018
                                 ISNAT ;
1019
                                 IF_NONE { PUSH int 265 ; FAILWITH } {} ;
1020
                                 DIG 4 ;
1021
                                 CAR ;
1022
                                 PAIR ;
1023
                                 SELF_ADDRESS ;
1024
                                 PAIR ;
1025
                                 TRANSFER_TOKENS ;
1026
                                 CONS }
1027
                               { DROP 8 ; SWAP ; DROP ; DIG 3 ; DROP } }
1028
                           { PUSH nat 0 ;
1029
                             NIL (pair address (pair nat nat)) ;
1030
                             DUP 4 ;
1031
                             ITER { DUP ;
1032
                                    CDR ;
1033
                                    PUSH nat 10000 ;
1034
                                    SWAP ;
1035
                                    DUP 13 ;
1036
                                    GET 19 ;
1037
                                    MUL ;
1038
                                    EDIV ;
1039
                                    IF_NONE { PUSH int 106 ; FAILWITH } { CAR } ;
1040
                                    DUP ;
1041
                                    DIG 4 ;
1042
                                    ADD ;
1043
                                    DUG 3 ;
1044
                                    DUP ;
1045
                                    PUSH nat 0 ;
1046
                                    COMPARE ;
1047
                                    LT ;
1048
                                    IF
1049
                                      { DIG 2 ; SWAP ; DUP 5 ; CDR ; DIG 3 ; CAR ; PAIR 3 ; CONS }
1050
                                      { DROP 2 } } ;
1051
                             DUP 10 ;
1052
                             GET 19 ;
1053
                             DUP 3 ;
1054
                             COMPARE ;
1055
                             LE ;
1056
                             IF {} { PUSH string "PH_INVALID_TOTAL" ; FAILWITH } ;
1057
                             SWAP ;
1058
                             DUP ;
1059
                             DUG 2 ;
1060
                             DUP 11 ;
1061
                             GET 19 ;
1062
                             SUB ;
1063
                             DUP ;
1064
                             PUSH int 0 ;
1065
                             COMPARE ;
1066
                             LT ;
1067
                             IF
1068
                               { DIG 2 ;
1069
                                 DROP ;
1070
                                 DIG 3 ;
1071
                                 DROP ;
1072
                                 DIG 3 ;
1073
                                 DROP ;
1074
                                 DIG 3 ;
1075
                                 DROP ;
1076
                                 DIG 3 ;
1077
                                 DROP ;
1078
                                 DIG 3 ;
1079
                                 DROP ;
1080
                                 DIG 7 ;
1081
                                 DROP ;
1082
                                 ISNAT ;
1083
                                 IF_NONE { PUSH int 122 ; FAILWITH } {} ;
1084
                                 DUP 3 ;
1085
                                 CDR ;
1086
                                 DIG 5 ;
1087
                                 CAR ;
1088
                                 PAIR 3 ;
1089
                                 CONS }
1090
                               { DROP ;
1091
                                 SWAP ;
1092
                                 DROP ;
1093
                                 DIG 2 ;
1094
                                 DROP ;
1095
                                 DIG 2 ;
1096
                                 DROP ;
1097
                                 DIG 2 ;
1098
                                 DROP ;
1099
                                 DIG 2 ;
1100
                                 DROP ;
1101
                                 DIG 2 ;
1102
                                 DROP ;
1103
                                 DIG 3 ;
1104
                                 DROP ;
1105
                                 DIG 5 ;
1106
                                 DROP } ;
1107
                             DUG 2 ;
1108
                             CAR ;
1109
                             CONTRACT %transfer (list (pair (address %from_)
1110
                                                           (list %txs (pair
1111
                                                                       (address %to_)
1112
                                                                       (pair
1113
                                                                         (nat %token_id)
1114
                                                                         (nat %amount)))))) ;
1115
                             IF_NONE { PUSH int 394 ; FAILWITH } {} ;
1116
                             PUSH mutez 0 ;
1117
                             NIL (pair address (list (pair address (pair nat nat)))) ;
1118
                             DIG 4 ;
1119
                             SELF_ADDRESS ;
1120
                             PAIR ;
1121
                             CONS ;
1122
                             TRANSFER_TOKENS ;
1123
                             CONS } }
1124
                       { DROP ; SWAP ; DROP ; DIG 3 ; DROP } ;
1125
                     DIG 2 ;
1126
                     UNPAIR ;
1127
                     UNPAIR ;
1128
                     NONE (pair address
1129
                                (pair (pair address nat)
1130
                                      (pair (or address (pair address nat))
1131
                                            (pair nat
1132
                                                  (pair nat
1133
                                                        (pair timestamp
1134
                                                              (pair (option timestamp)
1135
                                                                    (pair nat
1136
                                                                          (pair nat
1137
                                                                                (pair
1138
                                                                                  nat
1139
                                                                                  (pair
1140
                                                                                    address
1141
                                                                                    (pair
1142
                                                                                      (map
1143
                                                                                        address
1144
                                                                                        nat)
1145
                                                                                      (pair
1146
                                                                                        nat
1147
                                                                                        (pair
1148
                                                                                          nat
1149
                                                                                          (pair
1150
                                                                                            (map
1151
                                                                                              address
1152
                                                                                              nat)
1153
                                                                                            (option (pair
1154
                                                                                                     address
1155
                                                                                                     bytes))))))))))))))))) ;
1156
                     DIG 5 ;
1157
                     UPDATE ;
1158
                     PAIR ;
1159
                     PAIR ;
1160
                     SWAP } }
1161
               { DIG 2 ;
1162
                 DROP ;
1163
                 IF_LEFT
1164
                   { SWAP ;
1165
                     DUP ;
1166
                     DUG 2 ;
1167
                     GET 6 ;
1168
                     UNIT ;
1169
                     VIEW "get_admin" address ;
1170
                     IF_NONE { PUSH int 135 ; FAILWITH } {} ;
1171
                     SENDER ;
1172
                     COMPARE ;
1173
                     EQ ;
1174
                     IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ;
1175
                     SWAP ;
1176
                     UNPAIR ;
1177
                     CAR ;
1178
                     DIG 2 ;
1179
                     SWAP ;
1180
                     PAIR ;
1181
                     PAIR }
1182
                   { SWAP ;
1183
                     DUP ;
1184
                     DUG 2 ;
1185
                     GET 6 ;
1186
                     UNIT ;
1187
                     VIEW "get_admin" address ;
1188
                     IF_NONE { PUSH int 135 ; FAILWITH } {} ;
1189
                     SENDER ;
1190
                     COMPARE ;
1191
                     EQ ;
1192
                     IF {} { PUSH string "PMI_ONLY_ADMIN" ; FAILWITH } ;
1193
                     UPDATE 6 } ;
1194
                 NIL operation } } ;
1195
         NIL operation ;
1196
         SWAP ;
1197
         ITER { CONS } ;
1198
         PAIR } ;
1199
  view "get_next_auction_id" unit nat { CDR ; GET 5 } }